Join CSV Files Online

Open several CSV, Excel or JSON files as tabs, join two on a shared key column, then filter, chart, and export the combined table — all in your browser. No upload, no account, no database required.

Running locally0 bytesuploadedCSV · JSON
What you get

A workspace for many CSVs, not one.

Open every file you are working with as a tab, join the two that share a key, and explore the result — without a database, a spreadsheet, or an upload.

01 / Tabs3 datasets
Open multiple files as tabs.
Drop a folder of CSVs and each opens as its own tab in a single workspace. Every tab is a full table you can search, sort, filter, and clean — switch between them without re-uploading anything.
customers.csvorders.csvrefunds.json+
02 / Joinon customer_id
Join two datasets on a shared key.
Two CSVs that share a column — say customer_id in customers and in orders — get stitched into one table: each order row gains its customer’s columns. It’s a SQL-style join, run entirely in your browser.
customers
customer_idname
C‑18Ada
+
orders
customer_idtotal
C‑18$240
=
joined on customer_id
customer_idnametotal
C‑18Ada$240
innerleftrightouterkeep matches only, or surface unmatched rows
03 / Privacy0 requests
Every file stays in your browser.
Parsing, joining, filtering, and export all happen in this tab — nothing is uploaded, which is what makes the workspace safe for PII, financial, and health data.
NETWORK · 0 REQUESTS
> open csvdiff.app/join-csv-files ····················✓ parsed locally
> add customers.csv ····················✓ parsed locally
> add orders.csv ····················✓ parsed locally
> join on customer_id ····················✓ in memory
> filter · chart · export ····················✓ in memory
04 / And more+4 tools
Everything else in the workspace.
Filter every dataset independently
Each tab keeps its own search, column filters, sort, and hidden columns — switching tabs never loses your view.
status = active·1,204 rows
Chart a column in a click
Turn any column into a bar or distribution chart to eyeball a dataset before you join or export it.
plan→▁▃▅▇ chart
Export the combined result
Export any tab — original or joined — back out as CSV or JSON, with the encoding of your choice.
joined→report.csv
Ask your data in plain English
Type a question about the active dataset and get a filtered view, stat, or chart — computed locally, rows never sent to a model.
“rows missing email”→327
Blog

CSV guides.

Walkthroughs on joining, combining, and comparing CSV files online — from picking the right key to replacing a VLOOKUP.

Frequently asked questions

How do I open and compare multiple CSV files at once?+

Drop several CSV, Excel or JSON files into the workspace and each opens as its own tab (an Excel workbook opens one tab per sheet). Switch between them, search and filter any dataset, and join two together on a shared key column — all without leaving the page or uploading anything.

How does joining two datasets work?+

Pick two open datasets and the column they have in common (for example customer_id or email), and the workspace builds a combined table by matching rows on that key — like a SQL join, but entirely in your browser. You can then filter, sort, and export the joined result.

Is my data uploaded anywhere?+

No. Every file is parsed, joined, filtered, and exported entirely in your browser tab and never sent to a server. That makes the workspace safe for sensitive data such as PII, financial records, or health information.

Can I mix CSV and JSON files in one workspace?+

Yes. JSON arrays are flattened into a tabular view alongside your CSVs, so you can open, join, and compare CSV and JSON datasets together and export the result in either format.

How large can the datasets be?+

Comfortably up to roughly 50,000–100,000 rows per dataset on a typical laptop. Tables are virtualised so scrolling stays smooth; joins and filters run on the main thread, so very large files may briefly pause the UI while computing.

100% in your browser

Ready to diff?

Drop your files, see the deltas, export the merge. Takes 30 seconds.