Skip to content

CSV Join

Joins two tables on a key column with inner, left, right or outer semantics and shows unmatched rows.

VLOOKUP for two files, with the part VLOOKUP never tells you: which keys did not match, and what they nearly matched. Before it builds anything it shows how many rows the join will produce, which is what stops a many-to-many key from turning two thousand rows into four hundred thousand.

🔒 Runs entirely in your browsercsvjoinmergetable

Left table

Drop the left table

Read in this tab. Nothing is uploaded. Files from Korean, Japanese, Chinese and Western Excel (CP949, Shift_JIS, GBK, Windows-1252) are recognised.

Right table

Drop the right table

Read in this tab. Nothing is uploaded. Files from Korean, Japanese, Chinese and Western Excel (CP949, Shift_JIS, GBK, Windows-1252) are recognised.

How to use it

  1. Drop both tables

    Left and right. Which is which matters for a left join, where every left row survives whether or not it matched.

  2. Pick a key column on each side

    Under each selector the tool says how many distinct keys that column has and whether they repeat. A key that repeats on both sides is the one that multiplies.

  3. Decide how the keys should be compared

    Trimming spaces and ignoring case are on by default because they cause most misses. Folding full-width characters helps with text copied out of a PDF. Ignoring punctuation is off, because it can merge two genuinely different companies.

  4. Read the plan before you run it

    Unmatched counts, result rows, and a list of keys that nearly matched with how many characters differ. One character off is a typo, not a different customer.

Common questions

Which join type do I want?

Left, almost always. It keeps every row of your main table and fills in what it found, which is exactly what VLOOKUP does. Inner drops the rows that did not match, and that is usually how a report quietly loses records.

Why did the result get so much bigger?

The key repeats on both sides, so every left row with that key pairs with every right row with it. Three by four is twelve. Deduplicate one side first, or find a key that is unique there.

Everything came back unmatched

Look at the near-miss list first. The usual causes are a trailing space, Hangul stored as separate jamo by macOS, full-width digits from a PDF, and an id read as a number on one side and text on the other so that 007 met 7.

Do blank keys match each other?

Yes, and the tool warns when that happened and how many rows it produced. In SQL a NULL does not equal a NULL; here an empty cell does equal an empty cell, which is more often what a spreadsheet user expects and more often a mistake.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.