Free CSV join · No signup · Nothing uploaded

Join two CSVs like a database.

Drop two files, pick the key column on each side, choose inner / left / right / full outer — get one combined file plus a match report. It's a real hash join running locally; the equivalent SQL is one click away.

01 · How it works

Drop, declare, done.

Spreadsheets make combining two files miserable — VLOOKUP gymnastics, copy-paste, prayer. This is the database way: declare the keys, pick the join type, done.

i. drop

Drop both files

CSV, TSV or Excel on each side. The key columns are auto-suggested when both files share a column name.

ii. declare

Keys + join type

Pick the matching column on each side (add a second key for compound matches). Inner keeps matches only; left keeps all of A; right all of B; full outer keeps everything.

iii. take

One combined file

Choose which B columns to carry over, check the match-rate report, then download CSV/Excel or open the result in the dashboard.

02 · Why this one

A real join, not a paste-up.

The semantics are exactly SQL's — because that's what people actually need.

  • 01

    All four join types

    Inner, left, right and full outer — including the unmatched-rows behavior each implies, reported honestly in the stats.

  • 02

    Compound keys

    Match on two or three columns at once (region + date, id + type) when one column isn't unique enough.

  • 03

    Match-rate report

    Matched A rows, unmatched on both sides, output count — so you see immediately when a key is wrong.

  • 04

    The SQL, if you want it

    Every join shows its equivalent DuckDB SQL — copy it into the SQL tool for anything more exotic.

"Picked two keys, hit left join, saw '40 matched (67%)' — and instantly knew which orders had no customer record."
— exactly the point
03 · FAQ

Join two CSVs questions.

Are my files uploaded to join them?
No. Both files are parsed and joined entirely in your browser — nothing is sent to any server.
Inner keeps only rows that match in both files. Left keeps every row of A, blank-filling where B has no match. Right is the mirror. Full outer keeps every row from both sides.
You get one output row per pair, like SQL — a many-to-many key can multiply rows. There's a 2,000,000-row safety cap with a clear error suggesting a compound key.
Yes — add up to three key pairs for a compound join (for example customer_id AND order date).
Hundreds of thousands of rows per side are fine — it's an in-memory hash join. For multi-gigabyte work, use the SQL tool's DuckDB power mode.