Neatbo.

CSV lookup and join

Join two small CSV tables by selected key columns. Preview matches and choose left, inner or full output.

Browser-local processingInputFile / TextOutputCSVTwo UTF-8 CSV tables, up to 1 MiB each
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

The left join keeps every main row and leaves lookup fields blank when no key matches.

Paste or import both CSV tables to choose join columns.

Preparing the tool…

Before you start

Paste or import two UTF-8 CSV tables, select a key column in each and choose which unmatched rows to retain. Key values stay as strings, including leading zeroes.

How to use this tool

  1. Paste or import the main and lookup UTF-8 CSV tables, then confirm each row and column count.
  2. Select the main and lookup key columns. Resolve blank main keys or blank/duplicate lookup keys; inspect the preflight match counts.
  3. Choose left, inner or full join, run it, check matched and unmatched counts, then download the complete CSV.

Supported inputs and limits

Each CSV is limited to 1 MiB of UTF-8 text and 200,000 parsed cells. Both need headers. Main-table keys must be nonblank and may repeat; lookup-table keys must be nonblank and unique.

Keys match as exact strings, including leading zeroes, spaces and letter case. Left keeps all main rows; inner keeps only matches; full also appends unmatched lookup rows. Missing lookup fields appear blank, which can also be a real empty source value.

Output has at most 200,000 cells and downloads as CSV. The page previews up to 200 rows; the download contains all output rows. Formula-like cells gain an apostrophe in the CSV for safer spreadsheet opening. No typed or multi-column join, automatic master-table update, or large-file workflow.

Worked example

Example input

id,name
01,Ada
02,Bo

Lookup CSV:
id,team
01,Design
03,Ops
Example options
{"key": "id", "rightKey": "id", "mode": "left"}

Example output

id,name,team
01,Ada,Design
02,Bo,

When something does not work

Use two UTF-8 CSV tables of at most 1 MiB each with consistent row widths. Select existing key columns, fix blank main keys and blank or duplicate lookup keys, then inspect the match counts.

Frequently asked questions

May the main table contain duplicate keys?

Yes. Each main row remains separate and receives the matching lookup values. Lookup keys must be unique to avoid unexpected row multiplication.

What happens to rows without a match?

Left keeps unmatched main rows, inner omits them, and full also includes unmatched lookup rows. Missing fields are blank in the CSV; a source field may also genuinely be blank.

Does it change IDs or protect spreadsheet imports?

IDs are exact strings, so 01 and 1 do not match. Formula-like values gain an apostrophe in the downloaded CSV. The original tables are not rewritten.

Documentation & further reading

Related tools