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.
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
Drop both tables
Left and right. Which is which matters for a left join, where every left row survives whether or not it matched.
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.
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.
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
CSV Splitter
Splits a table by row count or by the distinct values of a column, into separate files with the header repeated in each.
Table Diff
Compares two tables by a chosen or inferred key column and lists added, removed and changed rows cell by cell, side by side or as a change log.
SQL over CSV
Runs SQL against dropped CSV or TSV files in the browser — SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE and a two-table JOIN — with the grammar on the page.
Workbook Merger
Combines many workbooks or sheets into one, stacking rows or adding each source as its own sheet.
Next
These accept what this tool produces, so the result can go straight in.
CSV Cleaner
Trims cells, normalises headers, fixes number and date formats and reports rows with the wrong column count.
Table Diff
Compares two tables by a chosen or inferred key column and lists added, removed and changed rows cell by cell, side by side or as a change log.
SQL over CSV
Runs SQL against dropped CSV or TSV files in the browser — SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE and a two-table JOIN — with the grammar on the page.
CSV Viewer
Opens a large delimited file with type detection, column stats and sorting, without loading it all into memory.
Quick Chart
Draws a bar, line, area, pie or scatter chart from a table with round-number axes and a legend, and exports it as SVG or PNG.
CSV Deduplicator
Removes duplicate rows on all or selected key columns, keeping the first, last or most complete row.