Combine CSV and Excel files and remove duplicates

Put several CSV or Excel files into one sheet, with columns matched by name and repeated rows removed. It runs in your browser — your files are never uploaded.

Choose your files

Your files are read in your browser. They are never uploaded, and nothing is stored.

How it works: your CSV and Excel files are read in your browser, their columns are matched by name, duplicate rows are removed, and you download one Excel or CSV file.
How it works: everything happens on your device.

How it works

Add your files and press Combine files. The tool reads each one, finds its row of column headings — skipping lines such as the account number and statement period that many bank exports put first — and lines the columns up by name. Then it removes duplicate rows, sorts by date if there is a date column, and shows you the result before you download it.

It is written in Python and uses the open-source openpyxl library to read Excel files and XlsxWriter to write them. It runs Pyodide — the Python language compiled to WebAssembly — so the work happens inside your browser tab. The first time, the browser downloads about 6 MB (Python and the libraries), which it then keeps in its cache, so later visits start in a second or two.

Duplicates across overlapping exports

Download January 1–31 from your bank, then January 15 to February 15, and the second half of January appears twice. Removing every repeated row would fix that — but it would also delete genuine repeats, like two identical coffees bought on the same day.

So by default the tool keeps each row as many times as it appears in any one file. Rows repeated because two files overlap are removed once; repeats inside a single file stay:

Two exports that overlap, combined
RowIn file 1In file 2In the result
Jan 2 · Coffee · −3.502—2
Jan 15 · Salary · 2,000.00111
Jan 30 · Rent · −900.00111
Feb 3 · Books · −20.00—11

Rows are compared after tidying: capitals and extra spaces don’t matter, 2,000.00 matches 2000, and a date typed as text in a CSV matches the same date stored as a date in Excel. Every removed row is listed, with the file it came from, so you can check it.

What you get

  • Combined — all rows, with a heading row that stays in view, filters on every column, numbers stored as numbers and dates as real dates.
  • Removed duplicates — each removed row and which file it was a copy of.
  • Summary — the rows in each file, where its headings were found, and how many rows were removed.

Choose CSV instead for a single plain file, ready to import into accounting software. Text that starts with =, +, - or @ is protected so a spreadsheet can’t run it as a formula.

Before importing into QuickBooks or Xero

Combining exports first and removing the overlap means you import each transaction once. Then turn the file into the right format with Bank statement to QuickBooks or CSV to Xero. If duplicates have already reached your books, see how to fix duplicate bank transactions.

Frequently asked questions

Is it free?

Yes. There is no sign-up and no limit on how often you use it. The site is supported by advertising.

Are my files uploaded?

No. The files are read and combined by Python running in your browser, and the result is saved straight to your device. Nothing is sent to a server.

What if the files have different columns?

Columns are matched by name, ignoring capitals, spaces and punctuation, so “Transaction Date” and “transaction date” become one column. A column that only some files have is kept, and it is empty for the rows from the other files. The first file’s column names and order are used.

Which duplicates are removed?

By default, rows that appear in more than one file — the overlap you get when two exports cover the same days. If a file has two identical rows, such as two coffees on the same day, both stay. You can also remove every repeated row, or keep everything.

Can I remove duplicates from a single file?

Yes. Add one file and the tool removes its repeated rows, keeping the first of each. The removed rows are listed so you can check them.

Which files can I add?

CSV, TSV and text files with commas, semicolons, tabs or pipes, and Excel .xlsx and .xlsm files — up to 50 files, 100 MB in total. Old .xls files need to be saved as .xlsx first.