Convert MIDI to JSON

Structured notes and timing for scripts and visualizations. Free local conversion, with copy and download.

Or drop one file here. Type 0/1 · PPQ timing · up to 20 MB. Processed locally; no upload or account.

The practical guide

A documented format for note-based projects

The output uses MIDI Viewer schemaVersion 1, with header, tempoChanges, timeSignatures and tracks. Each track contains notes with MIDI pitch, velocity, channel, startTicks, endTicks, startSeconds and durationSeconds.

Channels in JSON are zero-based (0–15); the Analyzer displays them as 1–16. Velocity and pitch use MIDI numbers, not normalized audio values. Track program is the last detected program on its lowest-numbered channel, not a history of instrument changes.

This is not a lossless MIDI archive. Controllers, sustain interpretation, SysEx, raw events and a complete program-change history are not exported. Keep your original MIDI. Other tools such as Tone.js or rhythm games may require their own JSON schema and an explicit mapping.

What you can learn

Ticks and seconds

Tick positions remain available alongside tempo-aware time in seconds.

Versioned output

schemaVersion 1 identifies this tool’s documented structure.

Local processing

A cancellable worker parses and serializes without uploading your file.

Made for real files

Build from musical data

  • Plot note starts and durations in a custom visualization.
  • Count notes by pitch or channel in a script.
  • Prototype a note-driven interaction using an explicit mapping to your engine.
Questions, answered

Before you open a file

Can I convert this JSON back to MIDI?

Not with this tool. The export omits event types and is not designed for lossless round trips.

Does Copy include the entire file?

It includes all supported note data. Only the on-page preview is limited to 200 notes. If clipboard access fails, use Download JSON.

Why is my file unsupported?

This version accepts Type 0/1 with PPQ timing. Type 2, SMPTE timing, audio files and files above 20 MB are not supported here.