Merge CSV files with different columns

Append two CSV tables by matching their column headings, retaining extra columns and leaving missing values empty.

Processed on your device

Input

Open a local UTF-8 text file25 MiB maximum. The file opens in the text box above.Or drop a file here.
Open a second UTF-8 text file25 MiB maximum. The file opens in the second text box.Or drop a file here.

Align by heading

Paste or open the first CSV in the first box and the second CSV in the other box. The merger uses exact column names instead of their positions. Run it to append the second table beneath the first while keeping the union of the headings.

Follow the example

The first table has id and name. The second has city followed by id. The output headings are id, name and city: existing first-table headings stay in order, then new headings are added. Codes 001 and 002 have empty city cells; 003 and 004 have empty name cells.

Check headings before combining

Different labels remain different columns. For example, date and transaction_date will not be silently treated as the same field. Rename a heading deliberately first when it means the same thing; keep both when they represent different facts. Each input needs unique, non-empty headings.

Keep merging separate from joining

This tool appends records and does not combine two rows just because their IDs match. Use the CSV joiner when one table supplies extra details for IDs in another. Quoted commas and line breaks stay inside their cells, and text identifiers keep their leading zeros. Review the output preview and download the combined CSV.

Reviewed 2026-09-13. Open CSV merger with all settings.