Merge CSV files

Combine several CSVs into one, matching columns by name.

Fill in the fields above and the result appears here — nothing is sent anywhere.

How it works

Columns = the union of every file's headers, in first-seen order · rows keep their own file's values, matched by header name

Files are matched by COLUMN NAME, not by position. Position-matching is what a quick script does and it silently puts one file's revenue under another's cost the moment an export has an extra field — a mistake that survives all the way into a report because both columns hold plausible numbers. A column a file does not have comes through empty rather than shifting everything after it. The delimiter is detected per file, counted outside quoted fields, so a semicolon export with commas inside its address column is read correctly.

This tool runs entirely in your browser. Nothing you type is sent to a server, stored or logged.

Frequently asked questions

What if the files have different columns?
You get the union of them. Every column that appears in any file becomes a column in the output, and rows from a file that lacks one get an empty cell there rather than having their values shifted along.
Does column order matter?
No, and that is the point. Matching is by header name, so a file whose columns are in a different order merges correctly. Output order is first-seen: the first file's columns lead.
Are my files uploaded?
No. They are read by the browser, merged in memory and handed back as a download. No request is made at any point — this is the kind of job that never needed a server.
Will Excel open the result correctly?
Yes. The download carries a UTF-8 byte-order mark, which is what stops Excel rendering accented characters as mojibake — the single most common complaint about any CSV export.