Merge monthly CSV exports into one file
Stack a folder of monthly spreadsheet exports into one table with the columns lined up, then tidy the result with Clean CSV.
Why you’d do this
Most recurring exports — bank statements, ad-platform reports, POS sales, a CRM’s monthly contact list — land as one file per month. Twelve of them sitting in a folder aren’t useful on their own; a year of numbers is a question you can actually answer (“what did we spend in Q2?”), but that only works once the twelve files are one table. Doing that by hand means opening each file, copying its rows under the last one, and hoping the column headers matched — which they don’t always do, especially once a platform adds or renames a column partway through the year.
How, with the named tool
Merge CSV stacks any number of CSV, TSV, XLSX or JSON files into one table; Clean CSV tidies the result afterward.
- Choose the files. Tap “Choose files to merge” and select all your monthly exports at once; “Add more files” appends more to the list later, and the ✕ on a row removes one.
- Set how columns line up. Under “Align columns by”, pick Column name if every export uses the same headers (recommended — a row lands under the right column even if the files list them in a different order), or Position if the files have no headers at all and you’re matching purely by column order.
- Tag the source, if it’s useful. Tick “Add a ‘source file’ column” to stamp every row with the name of the file it came from — handy once the months are combined and you want to filter back to one of them.
- Merge and check the preview. Tap Merge to build the combined table; it shows a preview of the first rows before you commit to a download.
- Download. Choose CSV, XLSX, JSON or TSV for the merged file.
- Clean it up. Open the result in Clean CSV to trim stray whitespace, standardize dates to one format, normalize any Arabic-Indic digits, fix inconsistent text case, or drop empty rows and columns — the kind of mess that’s common once twelve files, each exported by hand on a different day, are stacked together.
What to watch for
“Column name” and “Position” alignment behave differently once a file’s columns don’t match. Aligning by name puts a row’s values under the matching header regardless of column order, so a platform that added a column in month 7 still merges cleanly — the new column just has empty cells for the earlier months. Aligning by position ignores headers entirely and matches by column order; if the files aren’t the same width, anything beyond the first file’s column count is ignored. When your exports come from the same source every month, Column name is the safer default.
Each file is capped at 25 MB, and one oversized file doesn’t stop the merge. A file over that limit is skipped rather than halting the whole batch — so if a merge of twelve files comes back with eleven months’ worth of rows, check the file sizes before assuming something broke; the tool doesn’t silently lose data, but it also won’t wait on a file it can’t process.
A CSV export carries an invisible marker (a BOM) so Excel reads accented and Arabic text correctly. Without it, Excel’s own CSV importer can guess the wrong text encoding and turn non-English characters into garbled symbols; Merge CSV’s CSV output includes that marker automatically. If you export as XLSX instead, this doesn’t apply — an XLSX file is a different format that doesn’t need it, and it opens with formatting already correct.
Only the first sheet of an Excel workbook is read. If one of your monthly exports is an XLSX with the real data on a second tab, move or copy it to the first sheet before merging, or the merge will pull in the wrong (or an empty) sheet for that file.
FAQ
What happens if my monthly exports don’t all have the same columns?
Align by Column name rather than Position — each row’s values land under the header they match, so a column added partway through the year, or listed in a different order in one file, still merges correctly. Any column missing from a given month simply has empty cells for those rows.
Will merging a year of exports lose data if one file is too large?
No — each file has a 25 MB limit, and a file over that size is skipped while the rest of the batch still merges. Compare the row count in your result against what you expected; a shortfall usually means one file was too big to include, not that rows were dropped silently from a file that did merge.
Why does Arabic or accented text look wrong when I open the merged CSV in Excel?
Check that you downloaded the CSV format specifically — Merge CSV writes a small marker into its CSV output so Excel picks the correct text encoding automatically. If the text still looks wrong, re-check the source files themselves, since a merge can only carry forward what its inputs already had.