The short answer: not with a single "drop a folder" button — and that is a direct consequence of how this converter is built, not a missing feature you can switch on. The analysis runs entirely on your own device, with no server, no upload, and no account, so there is nothing on the other end that could hold a queue of files for you. The real multi-file workflow is one file at a time: you load a file, it is analyzed from a completely clean state, you download the .mid and .csv, and only then do you load the next one. We measured that clean-state behaviour on this site's own detector — converting file A, then B, then A again returns A's notes identically both times and never leaks B into A — so the only thing "batch" costs you here is your own clicking, not accuracy.
Why there is no batch button here
A folder-drop batch job implies a server that receives your files, processes them in the background, and hands back a zip. This tool has none of those parts by design. Three facts follow straight from the architecture:
- No upload. The file is decoded into memory in your browser. There is no endpoint to send a folder to, so there is nothing that could line up ten conversions for you.
- No account, no saved history. Because nothing is stored server-side, the tool has no memory of what you converted yesterday. Each visit starts empty.
- No background job. The moment you close or refresh the tab, the in-memory result is gone. The download is the only copy that survives.
That is the same trade-off described on the converter overview's "online vs desktop" point: what you give up is the plumbing around the analysis, not the analysis itself. The pitch detection still runs on a fixed internal grid — a 22 050 Hz working rate, a 2048-sample window, one frame every 11.610 ms — and those numbers are identical for every single file.
What we actually measured: each file is a clean run
People worry that a browser tool might "remember" the previous file's notes, or that running several files in a row might blend them. So we ran this site's own detector (dsp.js) on two different four-note clips — clip A is a C-major arpeggio (C4/E4/G4/C5), clip B is an A-minor set (A3/D4/F4/B4) — in the order A, then B, then A again:
| Step | File loaded | Notes returned |
|---|---|---|
| Run 1 | Clip A (C major) | C4 / E4 / G4 / C5 |
| Run 2 | Clip B (A minor) | A3 / D4 / F4 / B4 |
| Run 3 | Clip A again | C4 / E4 / G4 / C5 |
The third run produced exactly the same four notes as the first, and none of clip B's pitches leaked in. That tells you the detector resets its state completely between files: there is no carry-over, no shared buffer, no "ghost" of the last song. So when you process files one after another, you are getting a genuinely independent conversion each time — the result of one file never contaminates the next.
The real cost of "batch": your device's time, added up
Because there is no server doing the work for you, the time to convert N files is simply N times the time for one. We measured analyze() on this site's detector at a few lengths:
| Clip length | Analyze time | Per second of audio |
|---|---|---|
| 5 s | 99 ms | 19.8 ms/s |
| 15 s | 266 ms | 17.8 ms/s |
| 30 s | 573 ms | 19.1 ms/s |
| three × 15 s, back-to-back | 799 ms | additive |
Two things to take from this. First, the cost scales roughly linearly — about 18–20 ms of analysis per second of audio on a desktop CPU — so a 3-minute track is on the order of 3.5 seconds, and a stack of ten such tracks is ten times that. Second, there is no batch discount: three 15-second files take the same 799 ms whether you do them now or spread across the day. A heavier phone CPU is 3–5× slower, so plan for that if you are doing the work on a phone (see doing audio to MIDI on iPhone or Android). The time is real, predictable, and paid by your machine — not hidden behind a server queue.
The workflow that actually works
Treat it like a small assembly line. The steps are boring on purpose — the boring version is the one that does not lose files:
- Prep the folder first. Rename your source files so you know what they are before you start. The converter does not name the output for you; the downloaded
.midkeeps the original filename, so a tidy input folder saves you later. - Pick a consistent mode and settings. If these are all single-line recordings, leave it on monophonic. If they are mixes, use polyphonic. Set the same sensitivity, shortest-note, and BPM for every file so the results are comparable — these are per-file inputs you type each time, not a saved profile.
- Convert one, download one. Get the
.midand the.csvfor the current file before loading the next. Closing the tab throws the result away, so the download is your only backup. - Sanity-check in the piano roll. For a quick pass, glance at the note list before moving on. If a file came back thin, fix it now (mode, sensitivity, shortest note — see the order to fix dropped notes) rather than discovering it after you have closed the tab.
- Import once the set is done. When all the
.midfiles are on disk, bring them into your DAW one at a time — FL Studio, Ableton Live, or Logic Pro each have a short drag-and-drop path.
What you cannot do here, and where to do it instead
Being clear about the boundary is the point of this page. The following genuinely are not possible with this browser tool, and pretending otherwise would be a lie:
- No folder or multi-select drop. The file picker takes one file. Select several and the picker still hands back one.
- No automatic naming or grouping. The output name is the input name plus
.mid. There is no "album_01.mid" logic. - No cloud history. Close the tab and the conversion is gone; only the file you downloaded remains.
- No server-side queue. You cannot "submit ten and come back later."
If you truly need to convert hundreds of files unattended, an installed desktop application with a batch window is the right tool — that is the one column where an offline app beats a browser page. But for a handful of tracks, the one-at-a-time workflow here is the same conversion, just without sending any audio off your machine. For what the file looks like once it lands, what is actually inside a MIDI file covers the notes, tempo and channels you will be importing.
How to keep a batch from losing its mind
- Download before you switch files. This is the single rule. The in-memory result is not persisted anywhere.
- Keep settings identical across the set. You re-enter mode, sensitivity, shortest note and BPM for each file, so write them down or leave them at the same positions.
- Do the cleanup pass per file, or in bulk later. Each export is raw — the five cleanup passes (ghost notes, velocity, quantize, low end, instrument) apply to every file equally, so you can do them now or batch them in your DAW afterward.
- Watch the mono/poly choice. A single-line recording in polyphonic mode returns extra spurious notes; a chord in monophonic mode collapses to one pitch. The setting is per file, so apply it deliberately to each (more in mono vs poly).
Questions
Is there really no way to convert more than one file at a time?
Correct — not in one action. The tool processes one file per load, and the load is a single-file picker. The workaround is the workflow above: load, convert, download, repeat. It is the same note-for-note conversion an offline batch would give you, just driven by your clicks instead of a server queue.
Will converting file after file mix them up?
No. We measured it: each file is analyzed from a fully reset state, so the notes from one file never appear in the next. Run the same file twice and you get byte-for-byte the same note list both times.
Why is there no upload if it would make batching easy?
Because the no-upload design is the whole reason the tool is free and private. There is no server to bill, so there is no sign-up, no watermark, and no limit — but also no place for a folder to live while it is processed. You trade the batch button for the fact that your audio never leaves your device.
Does a longer file take longer, or is there a flat overhead?
It scales with length: roughly 18–20 ms of analysis per second of audio on a desktop CPU, linear, with no batch speedup. A 3-minute track is about 3.5 seconds; ten of them is ten times that, and it is all paid by your own machine.
Can I leave the tab open and do other things while it works?
The analysis is fast, but it is synchronous on your device, so the tab should stay front-and-center until the .mid downloads. More importantly, once a file is done, download it before loading the next — the result is not saved anywhere you can come back to.
Convert a file now — runs in your browser, nothing is uploaded.
Related guides
- Mobile audio to MIDIWhat works on iPhone or Android, and the slower CPU cost
- Clean up a converted MIDIThe 5 passes that turn a raw export into a usable part
- Mono vs polyWhat each detection mode misses
- Fix dropped notesThe order to fix it: format, mode, sensitivity, shortest note
- FL Studio importThe drag that opens the .mid, and why there is no sound until you load an instrument
- Ableton importThe drag that opens the .mid onto a MIDI track
- Logic Pro importThe drag that opens the .mid onto a Software Instrument track
- MIDI converterWhat is actually inside a MIDI file