Merge CSV files & join tables
Combine files into one table, or bring matching records together using an ID. Preview the result and download a CSV.
Your data stays in this browser. Nothing is uploaded. Privacy details
1 Choose your task
2 Load your tables
CSV files with a header row. Values stay as text, including IDs with leading zeroes. Examples replace the data for the selected task.
Choose two or more files, or add them in several batches. Files stack in the order shown below.
Or paste a CSV table
First table
Or paste CSV data
Second table
Or paste CSV data
3 Align columns
Headers with the same name align automatically, even in a different order. Other columns are kept separately; missing cells are blank. Open the alignment controls to combine differently named columns.
Review column alignment and output names
4 Preview and download
No result yetPlain text uses tabs between columns and quotes cells containing tabs or line breaks. Spreadsheet protection applies to CSV.
Protection adds an apostrophe to potentially executable values, including headers. Turn it off only if you need the original cell text.
Preview shows the first 100 rows. Downloads and copies include every result row.
Load tables to begin.
View formatted output
Preview limited to 30,000 characters. Copy and download include the complete output.
Combine CSV files
Use Stack files for exports with similar columns, such as January and February sales. Their rows appear one after the other. A column called Product aligns with Product in another file, regardless of its position. Header matching is case-sensitive after surrounding whitespace is removed.
If one file uses Customer and another uses Customer name, open the alignment controls. Choose both source columns in one output column, then exclude the separate column you no longer need. Rename or reorder output columns as required. Unmapped columns are explicitly listed before export. No rows are deduplicated.
Join tables using an ID
Use Match records to add details to a table. For example, match an orders table to a customers table by Customer ID to add the customer’s email to each order. Matching preserves cell text and uses exact values unless you enable whitespace or case options.
Repeated keys in the first table are allowed: several orders can belong to one customer. Repeated keys in the second table need a decision. Choosing every match can create several output rows per first-table row. First and last follow the loaded row order.
Unmatched reports contain records whose keys are absent from the other table, including blank keys. Rows skipped by the first/last duplicate choice are not considered unmatched. Both reports retain the original table columns. The merged result keeps first-table order, followed by unmatched second-table rows if requested.
Privacy and limits
Selected files, pasted tables, settings and results stay in browser memory. They are not uploaded, saved in browser storage or included in URLs. Clear all data clears both tasks, including pasted text. Reloading clears tool data. Only the site theme preference is saved. Copy writes to the clipboard only when selected. Downloads save a CSV to your device. See privacy and analytics.
Each CSV supports up to 5 MiB of UTF-8 input, 20,000 data rows, 100 columns and 500,000 cells including headers. Each task allows up to 20 MiB, 20,000 rows and 500,000 cells across its loaded tables. Stacking supports 10 tables. Output allows 20,000 rows, 100 columns including helpers, 500,000 cells including headers and 20 million characters. Preview text is limited to 30,000 characters.
Comma-separated UTF-8 CSV only. Quoted cells, embedded line breaks, doubled quotes and a UTF-8 BOM are supported. Malformed quotes and uneven rows are rejected. Blank, duplicate or padded headers receive unique, trimmed names with a warning. No numeric or date conversion occurs. Excel, TSV and other formats are not supported yet.
Processing runs on this page and can briefly pause near the limits. Modern browsers with File.text(), TextEncoder and Blob URLs are required. Clipboard access may need HTTPS or permission. Download remains available if copying fails. Invalid replacement data leaves the previously loaded tables active.