SmartQueryTools

Merge CSV Files Online

Merge and concatenate multiple CSV files into one, directly in your browser.

How to merge CSV files

  1. Click the upload area to add your first file. It is loaded in the browser and listed with its row and column count.
  2. Click + Add File to add the next file, one at a time. Use Remove next to any file you added by mistake. If the files do not all have the same columns, a note says so. They still merge, matched by column name.
  3. Once two or more files are listed, click Merge Files. Rows are stacked in the order the files were added, and the total row count is shown.
  4. Check the preview of the first 200 rows, then click Download merged to save merged_result in the same format.

Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.

Worked example

Two regional teams send in their July expense sheets. The south team lists the columns in a different order and adds a category column the north team does not use. The north file is shown below.

Input (CSV)

rep,expense_date,amount
Ines,2026-07-01,120.5
Ines,2026-07-08,33
Marek,2026-07-02,210

Settings

  • File 1: north expenses (shown above)
  • File 2: south expenses, columns amount, rep, expense_date, category, with rows (54.2, Kofi, 2026-07-03, meals) and (18, Kofi, 2026-07-09, parking)

Result

repexpense_dateamountcategory
Ines2026-07-01120.5NULL
Ines2026-07-0833NULL
Marek2026-07-02210NULL
Kofi2026-07-0354.2meals
Kofi2026-07-0918parking

Columns are matched by name, not position, so the south file's amount values land under amount even though that column comes first in its file. Column order follows the first file, and category is added at the end because only the second file has it. North rows get NULL for category. Rows keep file order: first file, then second.

Working with CSV files

Merging CSVs is the usual way to rebuild one dataset from monthly or per-region exports. Each file is parsed on its own, so headers are never repeated as data rows in the middle of the output, which is a common mistake when files are joined with cat or copy /b. Header names are matched without regard to case, so Amount in one file and amount in another become one column. Files can even use different delimiters, such as one comma file and one semicolon file, because each file is sniffed separately.

Types are also detected per file. If a column is numeric in one file but has text such as "TBC" in another, the merged column becomes text so no value is lost. Cells missing from a file because it lacks that column are written as empty fields. The output is one CSV with a single header line and commas as delimiters. Dates written as YYYY-MM-DD stay dates in the merged output.

Frequently Asked Questions

Will the header row be repeated in the merged CSV?

No. Each file's header is read as column names, and the merged file has a single header line at the top.

Do the CSV files need their columns in the same order?

No. Columns are matched by header name, so a file that lists the same columns in a different order still lines up correctly.

Do all files need exactly the same columns?

No. Columns are matched by name, ignoring case. A column missing from one file is filled with NULL for that file's rows, and columns can appear in any order.

Is this a join on a key column?

No. Merge stacks rows from one file under another, which SQL calls UNION ALL. To match rows from two files on a shared ID, use the SQL Query tool with a JOIN.

Are duplicate rows removed when merging?

No. Every row from every file is kept. Run Remove Duplicates on the merged file if the inputs overlap.

Related Tools