# Join two tables — inner & left join on a key, no upload

> Merge two datasets on matching key columns with inner or left joins, preview the result, and export — all in your browser without uploading either file.

Merge two local files on matching key columns with an inner or left join, preview the joined result, and export it. Neither file is uploaded — the join runs on your device.

Joining is how two exports become one useful table — orders enriched with customer details, events matched to users. Doing it here avoids loading sensitive files into a database just to run one merge.

Pick the key, choose whether to keep unmatched rows, and preview before exporting. For arbitrary SQL joins use the SQL query tool, and to stack same-shaped files instead use Append.

## How to

1. **Add two files.** Drop the two tables you want to join.
2. **Pick keys.** Choose the key column(s) that match between them.
3. **Choose join type.** Inner (matches only) or left (keep all left rows).
4. **Export.** Preview and download the merged table.

## FAQ

### What's the difference between inner and left join?

An inner join keeps only rows with a match in both tables; a left join keeps every row from the first table and fills in matches from the second where they exist.

### Can I join on multiple columns?

Yes — pick a composite key so rows match only when all chosen columns agree, which matters when a single column isn't unique.

### Are my files uploaded to join them?

No. Both tables are read and merged in your browser, so the data stays on your device.


## Related tools

- [SQL query](https://www.safepaper.app/data/sql-query)
- [Append / union](https://www.safepaper.app/data/append)
- [Row diff](https://www.safepaper.app/data/diff)
- [Filter rows](https://www.safepaper.app/data/filter)

---

Canonical HTML: https://www.safepaper.app/data/join
Markdown: https://www.safepaper.app/data/join.md

There is no upload endpoint — your files are processed in this browser tab. Open your network tab and check.
