Join Two CSV Files by a Column

Bring a customer list and its orders together by ID, or match any two files on a shared column — the VLOOKUP job, without the formula or a database. Load both files, pick the key, download the joined file. Nothing is uploaded.

Left file (every row kept)

Drop the left CSV or click to choose

No file yet

Right file (columns added on match)

Drop the right CSV or click to choose

No file yet

🔒 Everything runs locally in your browser. Your files are never uploaded, stored, or seen by anyone.

Join vs merge: rows or columns?

The two sound alike but do opposite things, and picking the right one saves a lot of confusion:

 MergeJoin
DirectionStacks files (more rows)Matches files side by side (more columns)
Needs a key?NoYes — a shared column
Everyday exampleTwelve monthly exports into oneA customer’s details next to their order
Spreadsheet equivalentCopy-paste rowsVLOOKUP / XLOOKUP

So use the merger to combine like-for-like files, and this joiner to enrich one file with columns from another.

Left join or inner join?

A left join keeps every row of your left file; an inner join keeps only the rows that matched. If your left file is the one that must stay complete — every customer, even those with no order yet — choose left, and unmatched rows simply get blank cells for the right-hand columns. If you only want the records that exist in both files, choose inner. The result tells you how many rows matched and how many didn’t, so you can sanity-check the overlap.

Keys not lining up?

If one file’s IDs lost their leading zeros or turned into scientific notation, the keys won’t match. Repair them first, then join.

Open the repair tools →

The honest limits

This is a first-match lookup, not a full relational join. For each row on the left it pulls the first matching row from the right — exactly how VLOOKUP behaves — which is perfect for one-to-one lookups. It does not fan one left row out into several when a key appears many times on the right (a one-to-many join); for that you’d want a database or Power Query. One more practical gotcha worth knowing: matching is exact, so a key with a stray space or a lost leading zero on one side won’t match — tick Ignore case for casing differences, and clean the key columns first if they’re messy (the cleaner trims spaces, including the non-breaking kind).

Related

Stacking files rather than matching them? Use the CSV merger. Key columns damaged by Excel? Fix leading zeros or scientific notation first. Every Excel-and-CSV pitfall is in the guides.

Frequently asked questions

How do I join two CSV files by a common column?

Load both files, pick the key column in each (they don’t need the same name), choose a left or inner join, and click Join. Each left-file row gets the matching right-file row’s columns appended. It runs in your browser, so neither file is uploaded.

What’s the difference between joining and merging CSVs?

Merging stacks files (more rows, same columns). Joining matches files side by side on a shared key (more columns, same rows) — the VLOOKUP job. Use merge to combine like-for-like exports; use join to enrich one file with data from another.

What is a left join versus an inner join?

A left join keeps every row from the left file, filling blanks where the right file has no match. An inner join keeps only rows that matched in both. Choose left to keep all left-hand rows, inner when you only want records in both files.

Does it handle a key that appears more than once?

It takes the first matching right-file row per key, like VLOOKUP — ideal for one-to-one lookups. It does not expand one left row into several for a one-to-many match; for that you’d need a database or Power Query.