Merge two CSV files by column
Join two CSV files on a shared key column — like a spreadsheet VLOOKUP or an SQL JOIN, without writing any code. Choose inner, left, or full outer join and download the result.
Upload the first (left) CSV file
CSV, XLSX, or JSON — any size
Free account — takes 10 seconds to sign up
After upload: go to the Merge files tab → upload the second file → choose key columns → Preview → Apply.
What is a CSV join?
A join combines columns from two files into one, matching rows by a shared key value. The key column is a column that appears in both files and identifies the same entity — for example, an email address, a product SKU, a customer ID, or a country code.
Think of it as a spreadsheet VLOOKUP that works on full files, not single columns — or as an SQL JOIN without needing a database.
Three join types explained
Inner join
Only rows whose key value appears in both files are included. If a row exists in the left file but not the right, it is dropped — and vice versa. Use when you only want matched records.
Left join
All rows from the left (first) file are kept. Rows that have a match in the right file get the right file's columns appended; rows without a match get empty cells for those columns. The most common join type for enrichment tasks.
Full outer join
All rows from both files are kept. Matched rows are combined; unmatched rows from either file appear with empty cells for the other file's columns. Useful when you want a complete picture of both datasets.
Common use cases
- Add order history to a contacts list (join on email)
- Enrich a product catalogue with pricing from another export (join on SKU)
- Combine monthly reports from different systems (join on date or ID)
- Find contacts that appear in one list but not another (left join + filter empty columns)
How column conflicts are handled
If both files have a column with the same name (other than the key column), the right
file's version gets a _2 suffix in the output — so you can see both values
and decide which to keep. The key column from the right file is excluded from the output
since it's identical to the left file's key column.
Frequently asked questions
What if the key column has duplicate values?
When the right file has duplicate key values, the first matching row wins. Left-file duplicates are all kept (each matched to the first right-file match). This is the standard "first match wins" behaviour.
Do the key column names need to match?
No. You select the key column from each file independently — the left key column and the right key column can have different names, as long as their values represent the same entity (e.g. email on the left and contact_email on the right).
Can I just append rows instead of joining by column?
Yes — use the Append rows tab. It stacks the second file's rows below the first, with union headers (missing cells filled with empty values). No key column needed.