Skip to main content

Merge CSV Files

Combine several CSV files into one in your browser. Matches columns by name even when files disagree about order, and adds no watermark or limit.

All Data tools →

This tool runs entirely in your browser. Nothing you enter is sent to our servers, so there is nothing for us to store or see.

About the Merge CSV Files

Combine any number of CSV files into a single file, in the order you choose. Drop the files in, arrange them, and download one result. Everything runs on your own device, so a set of monthly exports full of real records is never uploaded.

The problem that makes merging harder than it sounds is that files rarely agree. Two exports of "the same" report will have their columns in a different order, or one will have a field the other does not, and concatenating them blindly produces a file where a column means one thing for the first two hundred rows and something else afterwards. That failure is invisible — the result is a perfectly valid CSV.

So the default is to match columns by name. The output carries every column that appears in any file, in the order first seen, and each row is placed under the right headings regardless of what order its own file used. A file missing a column contributes empty cells for it rather than shifting its values sideways. Matching ignores case and surrounding spaces, because Email, email and  email  are the same column in every practical sense.

Two other modes are there for when you know better. Match by position ignores the headings and aligns by column order, which is right for files that have no headers at all. Require identical columns refuses to merge anything that does not match exactly and names the file that differs — useful as a check before an import that must not be wrong.

How to use the Merge CSV Files

  1. Add your CSVs

    Drop the files onto the box or click to choose them. You can add more at any point before merging.

  2. Put them in order

    The list shows the order rows will appear in, top to bottom. Use the arrows to move a file, or sort the whole set by name — the sort reads numbers properly, so part2 comes before part10.

  3. Choose how columns are matched

    By name handles files that disagree about order. By position is for files with no headers. Require identical columns refuses a mismatch and tells you which file differs.

  4. Merge and download

    Press Merge. Add a source column first if you need to know which file each row came from once they are combined.

Frequently asked questions

Are my files uploaded anywhere?

No. The merge runs inside your browser using your own device, and no file is ever sent to a server. You can disconnect from the internet once the page has loaded and it will keep working exactly as before.

What if my files have their columns in a different order?

Matching by name — the default — handles that. Each row is placed under the right headings whatever order its own file used. Concatenating blindly would produce a file where a column means one thing for the first few hundred rows and something else afterwards, in output that is still perfectly valid CSV.

What if one file has a column the others do not?

The column appears in the output and the files that lack it contribute empty cells for it. Nothing is dropped and no row is shifted into the wrong columns, which is what would happen if the extra field were simply appended.

Can I tell which file each row came from afterwards?

Yes — tick "add a source column" and each row gains a final column holding its original filename. That is usually worth doing on a merge of monthly or regional exports, since the information is impossible to recover once the files are combined.

How many files can I merge?

Up to fifty at a time, each up to 30 MB. The real limit is your device rather than any server, since the whole result is assembled in memory — a desktop handles very large merges comfortably, an older phone will struggle sooner.

What if my files have no header row?

Untick "first row is a header" and choose match by position. Every row is then treated as data and columns are aligned by their order, which is the only sensible interpretation when there are no names to match on.