FileDial › Guides › Documents, spreadsheets and slides

How to merge multiple CSV files into one on a Mac

By Himanshu Ranjan · Updated 8 November 2026

Select the CSV files in Finder in the order you want, open FileDial and choose Data › Merge CSVs. You get one CSV with every row, in selection order. The files must share the same header row. It runs offline on your Mac, so nothing is uploaded, and it handles any number of files.

What Merge CSVs does

Monthly exports from the same system, one CSV per branch, or a script that wrote a file per day: all are cases where the columns match and the rows should be stacked. Data › Merge CSVs writes one CSV with every row, in selection order, and requires the files to have the same header.

That requirement is the one real constraint. If two files have different columns, or the same columns in a different order, the tool is not the right one, and you should align the files first.

Steps

Set the order before you run it.

  1. Check that every file has an identical first row.
  2. Select the files in the order you want the rows to appear.
  3. Open the dial with the right Option key and choose Data, then Merge CSVs.
  4. Open the merged CSV in a text editor and look for a header row repeated in the middle; it should not be.
  5. If you need Excel, run Convert › Convert to Excel (XLSX) on the result.

Checks that save an afternoon

Before importing the merged file anywhere, check the row count against the sum of the sources and look at the last line of each source in the merged file. CSV has no types and no way to declare its encoding, so a file saved in a different encoding can corrupt accented characters partway through.

If one source came from Excel with a byte-order mark, run Developer › Remove BOM on it first. If you suspect duplicates across the files, follow up with Data › Remove duplicate rows, which keeps the first of each identical row.

When you want sheets, not stacked rows

If the files are different in shape, a workbook is better than a stacked CSV. Combine › Combine into one workbook puts one sheet per file, values only, no formatting. That keeps everything separate and avoids the same-header rule.

Built-in alternative

Without extra software, you can merge in Numbers or Excel by copying rows between files, which is fine for two small files. Terminal's cat command appends files, but you must remove the repeated header lines yourself, and it is easy to get wrong with Windows line endings. A tool that understands the header avoids that.

A worked example

Suppose you have twelve monthly exports named sales-2026-01.csv through sales-2026-12.csv, each with the same header. Select all twelve, which Finder will list in name order, then run Data › Merge CSVs. The result is one CSV with every data row in the order selected. Check that the total of the twelve row counts equals the merged count, less eleven header rows.

If the months are not alphabetical in the way you expect, rename with Rename › Rename with sequence… first, or select in a different order. If a source was exported with a different column order, fix that file in a spreadsheet before merging.

Common mistakes and when FileDial fits

Merging is rarely the last step. Typical follow-ups are Data › Remove duplicate rows when exports overlap, Developer › Convert to UTF-8 to normalise encoding, and Convert › Convert to Excel (XLSX) when the file is for a person rather than a program. For very large merged files, Data › Split CSV every N rows… cuts them back down to import-friendly sizes with the header row repeated in every part.

It is the right tool for same-shaped exports that need stacking, in any number. It is the wrong tool for files with different columns, where you need a join rather than a stack. A join matches rows between files by a key, which needs a database or spreadsheet function such as a lookup. Data › Convert to SQLite can help there, since it writes one table named after each file, but writing the join itself is beyond what the dial does.

For small jobs, copy and paste in a spreadsheet works and lets you see everything. For many files or repeat jobs, the batch merge is faster and less error-prone.

Merging files with different header names, even by a single character, is the main one, so compare the first lines. A second is merging a file that already contains the merged data from an earlier run, which duplicates rows; Data › Remove duplicate rows helps. A third is mixing encodings, where one file is UTF-8 and another is not, giving garbled characters partway down. A fourth is Excel-saved CSV with a byte-order mark in the first header, which makes the first column name look different; Developer › Remove BOM fixes it.

Always compare counts: the sum of data rows in the sources should equal the data rows in the result.

Questions

Do all the CSV files need the same columns?

Yes. The tool requires the files to have the same header. If they differ, align the columns first in a spreadsheet, or use Combine › Combine into one workbook to keep each file on its own sheet instead of stacking the rows into one table.

In what order do the rows appear in the merged file?

In selection order, as the tool's note says. Select the files in the order you want, or rename them with numbers first using Rename › Rename with sequence… so the order is unambiguous. Then open the merged CSV and check that the first and last rows are where you expect.

Does merging remove duplicate rows?

No. Merge keeps every row from every file. If your exports overlap, follow up with Data › Remove duplicate rows, which keeps the first of each identical row. It compares whole rows, so rows that differ in any column are all kept.

Sources

  1. Wikipedia: Comma-separated values
  2. Wikipedia: Microsoft Excel

Related

Try FileDial free for 1 daySee the dialNo card, no account. Then $20 once, for 2 Macs. Runs offline on macOS 14+ (Apple silicon).