MIDI File Visualizer
Open a .mid file in your browser to see it as a piano roll, play it with a simple synth, mute tracks and read its tempo, length and note count.
Each bar is a note: height = pitch, length = duration, brightness = velocity. Click the piano roll to move the cursor.
- Duration
- –
- Tempo (BPM)
- –
- Notes
- –
- Tracks with notes / total
- –
- Time signature
- –
- Note range
- –
- SMF format
- –
Tracks
Untick a track to mute it and grey it out on the piano roll.
How to view and play a MIDI file
- Drop a
.midor.midifile on the drop zone, or click it to choose one. No file at hand? Press Load demo song to open a short “Frère Jacques” round with bass and drums. - The piano roll appears at once. Each coloured bar is a note: its vertical position is the pitch (C labels mark every octave), its length is the duration, and brighter bars were played harder (higher velocity).
- Press Play to hear the file through a simple built-in synthesizer. The red cursor follows the music and the notes that are sounding light up. Pause keeps the position; Stop goes back to the start.
- Click anywhere on the piano roll to move the cursor to that moment, even during playback.
- Choose a View: Whole song fits the entire file on screen, while the 5, 10 and 20-second windows zoom in and scroll with the cursor, which is easier to read for dense piano parts.
- In Tracks, untick a track to mute it. It turns grey on the piano roll so you can focus on one part, for example to learn a melody or a bass line.
The file is read by JavaScript in this tab. Nothing is uploaded.
What the numbers mean
- Duration: the length of the song in minutes and seconds, computed from the tempo map, so tempo changes are taken into account.
- Tempo (BPM): the tempo at the start of the song in beats (quarter notes) per minute. When the tempo changes during the song, the lowest and highest values are shown in brackets. A file without a tempo event plays at the MIDI default of 120 BPM.
- Notes: the number of notes, after pairing every note-on with its note-off.
- Tracks with notes / total: format 1 files usually start with a “conductor” track that only holds tempo and time signature, so the two counts often differ by one.
- Time signature, Note range (lowest and highest note, with middle C written C4) and SMF format (0 = one track holding all channels, 1 = several synchronised tracks).
How the parser works
A Standard MIDI File is a header chunk (MThd) followed by track chunks (MTrk). Each event is preceded by a delta time in ticks, and the header gives the number of ticks per quarter note. This tool reads the file byte by byte: it follows running status (where a status byte is omitted and the previous one is reused), skips SysEx messages and unknown chunks, reads tempo, time signature and track name meta events, and treats a note-on with velocity 0 as a note-off, as most sequencers write them. Ticks are then converted to seconds with the tempo map. Files that use an SMPTE time base (frames per second) are also supported.
Limits of the built-in synth
Playback is meant to check the notes, not to sound like a real instrument. Every melodic channel uses the same soft triangle wave, whatever the program (instrument) number. On channel 10, the General MIDI percussion channel, kicks are a falling sine and the other drums are short noise bursts. Pitch bend, sustain pedal and controllers are ignored. For realistic sound, open the file in a DAW or a player with a SoundFont.
Frequently asked questions
Which files can I open?
Standard MIDI Files in format 0 or 1, with the extensions .mid, .midi or .kar (karaoke files are ordinary MIDI files), and RIFF .rmi files that wrap a MIDI file. Format 2 files, which are rare, are shown with their tracks laid out in parallel.
Why does my file show one track more than I expected?
In a format 1 file the first track is usually a conductor track holding only the tempo and time signature. It has no notes, so it is not listed in Tracks, but it is counted in the total.
Why doesn't the playback sound like a piano or a guitar?
This tool uses a very small synthesizer built with the Web Audio API instead of a large sound bank, so the page stays light. It plays the right notes at the right time and velocity, but not with the original instrument sounds.
The tempo shows a range. Is the file wrong?
No. The file contains tempo change events, for example a ritardando at the end or a faster section. The first value is the starting tempo and the range gives the slowest and fastest tempos used; the playback and the duration follow all of them.
Is my MIDI file uploaded?
No. The file is read and played entirely in your browser, and it is forgotten when you close or reload the page.
Related tools
- Online Synthesizer Play a free online synthesizer with your mouse, touch screen, computer keyboard or MIDI keyboard. Two oscillators, ADSR envelope and a resonant low-pass filter.
- Metronome Free online metronome from 20 to 300 BPM with time signatures, first-beat accent and tap tempo. Precise timing that keeps steady in the browser.
- Tone Generator Free online tone generator. Play a sine, square, sawtooth or triangle wave at any frequency from 20 Hz to 20 kHz, or pick a musical note.
- BPM Tapper Find the BPM of any song by tapping along. Click, touch or press the Space bar on each beat; outlier taps are ignored for a steady tempo.