Skip to content

Free online CSV to MID converter

Convert musical CSV event data into an editable Standard MIDI file.

Convert CSV to MID online - free

Uploading…

Your file is processed instantly and deleted as soon as you download it.

How it works

  1. 1/3

    Upload your .csv file

    Click to browse to select your file you want to convert or simply drag & drop your file into selected area.

  2. 2/3

    Perform .csv to .mid conversion

    After successful file upload, click to convert when you are ready.

  3. 3/3

    Download converted .mid file

    Conversion result is ready to download.

Conversion statistics: CSV to MID

CSV files are most often converted to GEOJSON 27% DB 23% SAV 11% ICS 10%

Updated November 13, 2026, from conversions on 101convert.com

How to convert csv to mid file

A notation program, hardware sequencer, or music workstation may require a Standard MIDI file rather than a spreadsheet-style note list. Converting the data produces editable MIDI events, but the CSV must use a defined musical schema or a converter-specific format.

What the CSV format is

CSV (comma-separated values) is plain text organized into rows and columns. Spreadsheets, scripts, sequencers, and music-analysis tools use it to exchange structured data. A musical CSV may contain fields such as start, duration, note, velocity, and channel, but CSV itself defines none of these fields or their units.

Microsoft Excel, LibreOffice Calc, and Google Sheets can edit general CSV files. Music utilities and custom scripts use CSV for note generation, bulk editing, event analysis, and MIDI-to-text conversion. A CSV exported by the MIDICSV utility is different from an arbitrary note table: it contains rows such as Header, Start_track, Note_on_c, and End_track with MIDI event fields.

What the MID format is

.mid is a common filename extension for a Standard MIDI File. It stores musical instructions such as note-on, note-off, program-change, controller, tempo, and time-signature events, not recorded sound.

MIDI files are small, tempo-adjustable, and editable in notation software, digital audio workstations, sequencers, and hardware instruments. Playback uses the receiving device or software synthesizer, so the file does not preserve the exact timbre, effects, or performance audio of a recording.

Use MIDICSV for a MIDI-generated CSV

If the source CSV came from MIDICSV, use its companion command-line utility rather than mapping columns manually. MIDICSV converts a MIDI file into a documented event table, and csvmidi converts that table back into a MIDI file while retaining supported MIDI events.

  1. Install the MIDICSV package for your operating system.
  2. Edit the CSV without changing its required event names, field order, track structure, or numeric units. A spreadsheet may alter delimiters, quote fields, or format numbers, so inspect the saved text afterward.
  3. Run csvmidi edited.csv output.mid.
  4. Open output.mid in the target sequencer or notation program and check tempo, instruments, tracks, and note timing.

The reverse operation is typically midicsv input.mid output.csv. This workflow is appropriate for round-tripping an existing MIDI file; it cannot infer musical events from an unrelated spreadsheet.

Convert a custom note table with a script

For a CSV designed by you or another application, define the columns before converting. This example expects quarter-note beats for timing and one note per row:

start,duration,note,velocity,channel
0,1,60,90,0
1,1,64,90,0
2,2,67,90,0

start and duration are beats; note is a MIDI pitch number from 0 through 127; velocity is 1 through 127; and channel is 0 through 15. Install Python and Mido with python -m pip install mido, save the following as csv_to_mid.py, and place it beside notes.csv:

import csv
import mido

TPB = 480
BPM = 120

events = []
with open("notes.csv", newline="", encoding="utf-8-sig") as f:
    for row in csv.DictReader(f):
        start = float(row["start"])
        duration = float(row["duration"])
        note = int(row["note"])
        velocity = max(1, min(127, int(row.get("velocity", 90))))
        channel = max(0, min(15, int(row.get("channel", 0))))
        on = round(start * TPB)
        off = round((start + duration) * TPB)
        events.append((on, 1, mido.Message("note_on", note=note, velocity=velocity, channel=channel)))
        events.append((off, 0, mido.Message("note_off", note=note, velocity=0, channel=channel)))

events.sort(key=lambda item: (item[0], item[1]))
mid = mido.MidiFile(ticks_per_beat=TPB)
track = mido.MidiTrack()
mid.tracks.append(track)
track.append(mido.MetaMessage("track_name", name="CSV notes"))
track.append(mido.MetaMessage("set_tempo", tempo=mido.bpm2tempo(BPM)))
last_tick = 0
for tick, _, message in events:
    message.time = tick - last_tick
    track.append(message)
    last_tick = tick
track.append(mido.MetaMessage("end_of_track", time=0))
mid.save("notes.mid")

Run python csv_to_mid.py. Change BPM to the intended tempo before running the script. For a CSV using seconds, convert each time value to beats with beats = seconds × BPM / 60 before creating MIDI ticks. A file with note names such as C4 requires a parser and a defined octave convention; MIDI note numbers avoid that ambiguity.

For a one-off conversion without installing software, the free converter on 101convert.com can be used. Verify its expected column names, timing units, and output settings first; arbitrary tabular data cannot be automatically interpreted as music.

Quality and compatibility limits

Conversion preserves only information represented by both the input schema and the selected converter. Missing durations, overlapping-note rules, invalid pitch values, or ambiguous beat and second units can produce missing notes or incorrect rhythm.

MIDI has 16 channel numbers, and channel 10 in one-based documentation (channel 9 in zero-based code) conventionally carries percussion. On that channel, note numbers select drum sounds rather than pitched notes. Program changes, controllers, tempo events, lyrics, notation layout, and multiple tracks must be explicitly represented or they will not appear in a custom note-table conversion.

Test the result in the application or hardware that will use it. Instrument patches, controller support, percussion mapping, tempo defaults, and General MIDI compliance vary between playback systems.

CSV vs MID: format comparison

How the CSV and MID formats compare on the properties that matter most for this conversion.

Comparison of the CSV and MID file formats
Property .CSV Comma-Separated Values .MID MIDI file
Open standard Yes Yes
Compression Uncompressed Uncompressed
Typical file size Small Very small
Opens in a web browser Yes, natively Partial
Further editing Easy Limited
Metadata support Basic Basic
Plain-text readable Yes No
Best used for Data exchange Music
Introduced — 1983
Developer — Unknown (originally General MIDI / MIDI Manufacturers Association ecosystem)
MIME type text/csv audio/midi

Information about file extensions and file types is provided by File-Extensions.org

Frequently asked questions

Is the CSV to MID converter free?

Yes, converting CSV to MID on 101convert.com is completely free. No registration, email address or installation is required. If you need a higher file size limit or want to convert more files at once, see our plans.

How large can my CSV file be?

You can upload CSV files up to 3 MB and convert up to 3 files at once in a single batch. With a paid plan the limit is up to 20 MB per file and 20 files at once, see our plans.

What happens to my uploaded files?

Files are processed automatically and deleted from our servers within a few minutes after conversion. We never view or share your files.

Do I need to install any software to convert CSV to MID?

No. The CSV to MID conversion runs entirely online in your browser and works on Windows, Mac, Linux, Android and iPhone.

Did the conversion fail?

In most cases, the cause is an incorrect file format. Please upload a valid CSV file for this CSV to MID conversion. Occasionally, the issue may be on our side. We analyze recurring conversion failures and disable or fix the converter if we detect a defect.

Already downloaded

This file has already been downloaded. For your privacy it was deleted from our server right after the download, so it cannot be downloaded again. To get it once more, convert the file again.