CSV Merger

Stack many CSV exports into one file, matched column by column.

Runs in your browser
Your files
Drop to add
No files yetProcessed locally
Result
Your processed files will appear here.
Ready
Keeps the first copy of rows that are identical in every column.
More options (1)

How to use the CSV Merger

  1. Drop two or more CSV files on the left. Their columns can be in any order.
  2. Decide whether to add a column with the source file name, which delimiter the output should use, and whether identical rows should be skipped.
  3. Press Merge CSV files. The combined table is written in one pass with a single header row.
  4. Download merged.csv and open it in your spreadsheet or import tool.

Examples

Monthly exports
jan.csv, feb.csv and mar.csv with the same columns → merged.csv with every row under one header. Tick the source column to know which month each row came from.
Different column order
contacts-old.csv has name, email, phone and contacts-new.csv has email, name, city → one table with name, email, phone and city. Cells a file does not have stay blank.

About this tool

Monthly reports, exports from several shops or branches, survey batches, log extracts: sooner or later you need them in one table. Copying rows between spreadsheets is slow and error-prone, and simply gluing files together breaks as soon as one file has an extra column or a different order. This merger reads every header first, builds the combined list of columns, and then writes each row into the right place by column name.

Files with different column orders therefore line up, columns missing from a file become empty cells, and columns that appear in only one file are added at the end. Names are compared without surrounding spaces and, by default, without regard to letter case, so "Email" and "email " land in the same column. A duplicate name inside one file keeps both columns. The source file name can be written into an extra column, the easiest way to know later where a row came from, and rows that are identical in every column can be skipped, which helps when exports overlap.

Files are read block by block and the result is assembled as it goes, so merging a few hundred megabytes works on an ordinary laptop. Tip: the output uses the delimiter of the first file unless you choose one, so pick semicolon if the result is headed for a European version of Excel.

This tool runs entirely in your browser. What you type or open is never sent to a server.

Frequently asked questions

Do the files need the same columns?

No. Columns are matched by their header name. A column that one file lacks is left blank for its rows, and the order of columns inside each file does not matter; the first file decides the order of the output.

Must every file have a header row?

Yes, the first row of each file is taken as its header. If a file has none, open it in the CSV editor and add one first, otherwise its first data row would be used as column names.

What counts as a duplicate row?

Two rows are duplicates when every column is identical after the merge, blanks included, and the first copy is kept. The source file column is ignored for this comparison, so the same row in two files is still caught.

Are my files uploaded to merge them?

No. The merge happens inside your browser tab using local file access. Nothing is sent anywhere, so confidential customer lists are safe to combine here.

What happens with different delimiters or encodings?

Each file's delimiter is detected on its own, so a comma file and a semicolon file can be merged. Files that are not UTF-8 are read as Windows-1252, and the result is then written as UTF-8 with a byte order mark so Excel shows accents correctly.