CSV Join on Key – Merge Two CSVs on a Shared Column Free Online

Use the free CSV Join on Key below: your data never leaves your browser — all work happens on your device, and nothing is uploaded to any server.

What this tool does

Two tables often describe the same things from different angles: one holds customers and their names, another holds customers and their cities, and both share an ID column. This free CSV Join on Key merges two CSV tables on a shared key column in your browser with the PapaParse parser. Pick the key column in each table, choose left or inner join, and download the combined table.

A left join keeps every row from the first table, filling blanks where the second table has no match. An inner join keeps only rows that match in both tables. The key column appears once in the result, not twice, so the output is clean and ready to use.

How to use it

Paste both CSVs into the two input boxes, then press Load columns. Dropdowns appear for the key column of each table; they need not share a name, only matching values. Choose the join type, press Join tables, and the result appears in the output box. Download it with the button below.

Try a sample to see both join types: three people in the first table and two cities in the second. A left join keeps all three people with a blank for the unmatched one, while an inner join keeps only the two matched people.

Left join versus inner join

Choose a left join when the first table is the master list and nothing in it may be lost. A customer list joined with purchase totals must keep customers with no purchases, showing blanks, or the report understates the customer count. Choose an inner join when only complete records matter, such as matching orders to products where an order without a known product is an error to exclude or investigate separately.

The distinction matters most when match rates are low. If only half the keys match, an inner join silently drops half your rows, which can look like a successful result while hiding a data problem. Always compare the output row count with the input counts: a left join must return exactly the first table’s row count, and an inner join must return no more than that.

Keys that fail to match

Most failed joins are key hygiene problems, not tool problems. Leading or trailing spaces, different capitalisation, numeric IDs stored as text in one file and numbers in the other, and IDs with different zero padding, such as 42 versus 0042, all prevent matching. If matches look too few, inspect a few keys from each side character by character.

Duplicate keys are another trap. If the second table lists the same key twice, the join uses one of those rows, and which one is not guaranteed. Deduplicate the second table on the key before joining whenever the key should be unique, which it should be for a lookup table.

Common joining jobs

Enriching an export with reference data is the classic job: order rows joined with product names, employee rows joined with department names, survey responses joined with respondent details. Joins also reconcile data, such as matching a bank export against an invoice list to find which invoices are paid.

Small, occasional joins are exactly where a browser tool beats a database. Setting up tables and writing SQL for a one-off merge takes longer than pasting two files, especially when the result is needed once for a report.

Frequently asked questions

Are my CSVs uploaded? No. PapaParse runs in your browser, and the join happens locally. Both tables stay on your device.

Must the key columns share a name? No. You pick the key column in each table separately, so an “id” column can join with a “customer_id” column as long as the values match.

What if the second table has duplicate keys? The last row seen for a key wins. Deduplicate lookup tables before joining to avoid surprises.

Does the join change my values? No. Values are copied unchanged into the combined table, and the shared key appears only once.

Related tools

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top