Free · Private · No upload

MIDI Tools

Open any MIDI file to play it, visualize the piano roll, transpose notes, change BPM and mute tracks — all in your browser.

🎵
Drop a MIDI file here or click to open
.mid · .midi · Processed 100% in your browser — never uploaded

Open, visualize, and edit MIDI files — no DAW required

Most MIDI tools either require a DAW installation (Logic, Ableton, FL Studio), a plugin, or uploading your file to a third-party server. This tool runs entirely in your browser using the Web Audio API — no software to install, no files uploaded anywhere.

🎹

Piano roll visualizer

See your MIDI file as a piano roll — color-coded by track, with the correct piano keyboard on the left. Zoom in to inspect individual notes or zoom out for the full picture.

🎵

Transpose in one click

Shift all notes up or down by any number of semitones. The modified MIDI is re-encoded in your browser and downloads instantly — the original file is never touched.

🎚

Track control

See which instruments are on each track, mute individual tracks for playback, and check note counts. Useful for separating a melody from accompaniment.

MIDI is instructions, not sound

A MIDI file contains no audio. It records performance events — note on, note off, which pitch, how hard, which controller moved — and the sound is produced by whatever instrument interprets those events. The same file played through two different synthesisers produces two entirely different results.

This is why MIDI files are tiny, often a few kilobytes for a full arrangement, and why they were ubiquitous in early web and game audio. It is also why a MIDI file that sounded good on the machine it was made on can sound wrong elsewhere: General MIDI standardised a set of 128 instrument numbers so that program 1 is a piano everywhere, but the actual sound of that piano depends on the playback device's sound bank.

Note velocity is expressive data rather than volume alone. A well-recorded MIDI performance carries the dynamics of the playing, and most instruments change timbre as well as loudness with velocity — which is why flattening all velocities to a single value makes a performance sound mechanical even at correct timing.

Timing, ticks and quantisation

MIDI time is measured in ticks, and a file's header declares how many ticks per quarter note — commonly 96, 480 or 960. Higher resolution allows finer expressive timing. Tempo is stored as a separate meta event in microseconds per quarter note, so a file can change tempo throughout, and the tick grid stretches with it.

Quantisation snaps note timings to that grid. Full quantisation produces perfect machine timing and usually removes the life from a performance, since the small deviations from the grid are much of what makes playing sound human. Partial quantisation — moving notes a percentage of the way toward the grid — tightens timing while preserving feel, and is almost always the better choice.

Swing is a deliberate departure from even division, delaying every second subdivision. It is fundamental to jazz and much popular music, and quantising a swung performance to a straight grid destroys it entirely — one of the more common ways to ruin a recording while apparently improving it.

Channels, formats and what transfers

MIDI defines 16 channels, and channel 10 is reserved for percussion under General MIDI, where note numbers select drums rather than pitches. A file whose drums play as melodic notes has usually had its channel assignments changed.

Files come in three formats. Format 0 merges everything into a single track, which is maximally compatible and awkward to edit. Format 1 keeps separate tracks sharing a timeline, which is what most software produces and what you want for editing. Format 2 holds independent sequences and is rarely encountered.

The practical limitation to remember is that MIDI captures notes and controllers, not sound design. Exporting a track as MIDI transfers the performance but not the instrument, the effects or the mix — so a MIDI export of an elaborate synthesiser part arrives as a bare note sequence. For that reason MIDI is excellent for exchanging musical ideas, arrangements and notation, and inadequate as a delivery format for finished music.

Frequently Asked Questions

Can I play a MIDI file without installing anything?

Yes. Drop your .mid file and click Play. The browser generates audio using oscillator synthesis via the Web Audio API — no plugins, no software, no upload.

How does transposing work?

On the Transpose tab, set the number of semitones to shift (positive = higher, negative = lower). The tool patches the note bytes in the original MIDI binary and lets you download the result. All other MIDI data (timing, controllers, sysex) is preserved exactly.

Can I change the tempo / BPM?

Yes. On the Transpose tab you can also set a new BPM. The tool patches all tempo meta events in the MIDI file.

What MIDI formats are supported?

MIDI format 0 (single track), format 1 (multi-track, the most common), and format 2 (multi-song). Files must have the .mid or .midi extension.

Why does the sound use simple oscillators instead of real instruments?

Loading a full General MIDI soundfont in the browser takes 50–150MB. For a quick preview tool, oscillator synthesis is much faster. For production-quality playback, open the file in a DAW or use a standalone MIDI player with soundfonts.

Why does my MIDI file sound different on another device?

MIDI stores instructions, not audio. The sound depends entirely on the playback device's instrument bank, so the same file varies between systems even though the notes are identical.

How do I quantise a MIDI file here?

On the Transpose & timing tab, pick a grid (1/4 down to 1/16 triplet) and set a strength. At 100% every note snaps exactly to the grid; at 50% each note moves half the way there, which tightens timing without flattening the feel — the setting this page recommends. Strength starts at 0, so timing is untouched unless you ask. Quantising changes note timings, which are stored as variable-length values, so that export re-encodes the file rather than patching it: every event is preserved, including controllers and pitch bend, but running status is expanded, so the bytes are not identical to the original. Exports without quantisation still patch in place and change nothing else.

Should I quantise everything to the grid?

Usually not fully. Small timing deviations are much of what makes a performance sound human, and quantising a swung part to a straight grid destroys its feel. Partial quantisation tightens timing while keeping the feel.