MDN wants to learn about developers like you:

This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.


The MIDIAccess interface of the Web MIDI API provides methods for listing MIDI input and output devices, and obtaining access to those devices.


MIDIAccess.inputs Read only
Returns an instance of MIDIInputMap which provides access to any available MIDI input ports.
MIDIAccess.outputs Read only
Returns an instance of MIDIOutputMap which provides access to any available MIDI output ports.
MIDIAccess.sysexEnabled Read only
A boolean attribute indicating whether system exclusive support is enabled on the current MIDIAccess instance.

Event Handlers

Called whenever a new MIDI port is added or an existing port changes state.


  .then(function(access) {

     // Get lists of available MIDI controllers
     const inputs = access.inputs.values();
     const outputs = access.outputs.values();

     access.onstatechange = function(e) {

       // Print information about the (dis)connected MIDI controller
       console.log(, e.port.manufacturer, e.port.state);


Specification Status Comment
Web MIDI API Working Draft Initial definition.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 43.0 No support No support 33.0 No support
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support 43.0 ? ? No support ? No support 43.0


Document Tags and Contributors

 Contributors to this page: mutuware, pioug, cwilso, teoli, hanwujueqi, jpmedley, Jeremie
 Last updated by: mutuware,