MIDI to JSON Converter

Convert MIDI into developer-friendly Tone.js notes or versioned raw events—and convert either supported JSON contract back into a validated MIDI. Everything stays in your browser.

Convert MIDI to JSON

.mid/.midi · up to 10 MB · local browser processing

No upload. Your file stays in this browser tab.
The selected file is processed locally and is never uploaded.

Choose one MIDI file

Processing runs in a cancellable browser worker.

Choose a local file to begin.

How to convert MIDI to JSON or JSON to MIDI

  1. 1. Choose a direction and local file. Open a .mid, .midi, or supported .json file. The converter reads it locally with a bounded timeout and checks it in a browser worker.
  2. 2. Choose the data contract. For MIDI to JSON, select normalized Tone.js notes or versioned Raw SMF events, then choose readable or compact whitespace.
  3. 3. Create the result. Copy or download exact JSON, or explicitly create and download a validated MIDI from JSON.

Tone.js notes versus Raw SMF events

ProfileBest forRepresentationRound trip
Tone.js notesWeb apps, games, visualizationNotes, clocks, tracks, controllers, pitch bendsNormalized; not raw-event faithful
Raw SMF eventsInspection, interchange, event editingVersioned header, tracks, and delta-time eventsSemantic event round trip

What normalized Tone.js JSON keeps and changes

Tone.js MidiJSON exposes PPQ, tempo and signature changes, header text, track instruments and channels, paired notes with tick durations, controller groups, pitch bends, and derived seconds. The output is the direct {header, tracks} object used by the library—there is no site-specific wrapper.

Pairing note-on and note-off events into note objects necessarily normalizes the source. Original source-track identity can be split by channel or program, and SysEx, aftertouch, program timelines, byte encodings, and exact cross-category event order are outside that schema. JSON to MIDI therefore creates a deterministic format-1 file instead of claiming to recover the original raw stream.

What a raw-event round trip means

The songparts.raw-smf.v1 schema records the Standard MIDI header, every source track, and every supported event with its delta time and allowlisted payload. It preserves represented track boundaries, timing, same-track order, running-status hints, and the note-off byte-9 hint.

That is semantic event fidelity, not a promise of byte-identical files. A writer may encode chunks, status bytes, and variable-length integers differently while reparsing to the same event structure. Unsupported extra chunks outside the parsed Standard MIDI header and tracks are not invented.

MIDI format 0, 1, 2, PPQ, and SMPTE

Format 0 and 1 with PPQ
Both profiles are available. Tone.js returns normalized note data; Raw SMF events retains the parsed source tracks and timing division.
Format 2
Each track is an independent sequence. Raw SMF events retains that structure and calculates duration per track; Tone.js is disabled rather than flattening unrelated sequences.
SMPTE timing
Raw SMF events retains supported frame-rate timing. Tone.js JSON represents PPQ, so the workbench selects Raw and explains the limitation.

Using MIDI JSON in apps, games, and Web Audio

Normalized note objects are convenient for scheduling a synth, drawing a piano roll, building rhythm-game targets, or analyzing pitch and timing without decoding raw MIDI events. Raw events are better when software must understand controllers, aftertouch, SysEx, exact track membership, or format-2 sequences. In either case JSON is structured data, not rendered audio.

Private processing, bounded files, and safe previews

MIDI files up to 10 MB and JSON files up to 30 MB are read locally, then parsed and encoded away from the main page in a replaceable browser worker. No request uploads your bytes. The displayed code well is source-scrubbed and capped so large metadata cannot freeze the page; copy and download actions still use the exact complete local output, up to the 50 MB JSON limit.

MIDI to JSON Converter FAQ

Is the MIDI to JSON converter free, and do I need an account?
Yes. The converter is free to use and does not require an account. Choose a local MIDI or supported JSON file and create the result in your browser.
Are my MIDI or JSON files uploaded or stored?
No. File reading, validation, conversion, copying, and downloads happen in your browser. The files are not uploaded, transmitted, saved to an account, or stored after you leave or reload the page.
Which MIDI JSON formats does this converter support?
It supports direct Tone.js MidiJSON for normalized notes and a versioned songparts.raw-smf.v1 schema for Standard MIDI header, track, and event data. JSON to MIDI automatically detects those two exact contracts.
Which JSON profile should I choose?
Choose Tone.js notes for web apps, games, visualization, and note-level work. Choose Raw SMF events when track boundaries, delta timing, SysEx, aftertouch, controller events, and other represented Standard MIDI events must round-trip.
Does MIDI to JSON and back produce the identical original file?
Raw SMF events preserve the represented format, timing division, tracks, event payloads, delta timing, and event order through a semantic round trip, but do not promise byte-identical chunk encoding. Tone.js notes are intentionally normalized and are not a raw round trip.
Can this converter turn JSON back into MIDI?
Yes. Switch to JSON to MIDI and choose a direct Tone.js MidiJSON file or a valid songparts.raw-smf.v1 file. The converter validates the complete structure before creating a local MIDI download.
Which MIDI formats and timing divisions are supported?
Raw SMF events support valid Standard MIDI format 0, 1, or 2 with PPQ or supported SMPTE timing. Tone.js notes accept format 0 or 1 with PPQ timing; format 2 and SMPTE automatically use the raw profile.
Which MIDI events does raw JSON preserve?
The raw profile represents notes, programs, all controller numbers, pitch bend, note and channel aftertouch, tempo, meter, keys, text, lyrics, names, prefixes, SysEx, sequencer-specific data, and supported unknown metadata exactly as parsed events.
Can I copy the JSON or download it?
Yes. Create the JSON first, then copy its exact local text or download a .json file. The on-page preview is source-scrubbed and may be shortened for responsiveness; copying and downloading use the complete local result.
Is JSON an audio format?
No. MIDI JSON describes notes, timing, controls, and metadata as data for software. It contains no recorded waveform and does not become audible audio until a synthesizer or sampler performs the MIDI instructions.