Combine CSV files with columns matched by name, so a reordered export still lands correctly, and every difference reported
Initializing in your browser…
Join clips end to end or stack them on one timeline, with an equal-power crossfade that holds the level through the join, BS.1770 loudness matching between files, and the merged result measured before you download it.
Merge multiple video clips into one seamless video. Drag-and-drop reordering, preview before export, timeline visualization. Combine videos in any format with automatic re-encoding.
Diff two CSV files with the matching rule stated: a key that may repeat, or a real Myers diff, with every row accounted for
Two exports of the same employee list, written by different systems. The second has its columns in a different order and one extra column. Appending them by position puts every city under Age.
employees_1.csv and employees_2.csv
Name,Age,City City,Name,Age,Team Alice,28,New York Chicago,Carol,42,Sales Bob,35,Los Angeles Houston,David,31,Ops
merged.csv, columns matched by name
Name,Age,City,Team Alice,28,New York, Bob,35,Los Angeles, Carol,42,Chicago,Sales David,31,Houston,Ops employees_1.csv has no "Team" column, so those cells are empty. Checked: the 4 rows out are exactly the rows in, with none dropped and none duplicated.
Matching by name is the whole difference. By position, Carol would have arrived with the name Chicago and the age Carol, and nothing would have said so. The one column only the second file has becomes a column of the output with empty cells where the first file has nothing to put there, and the page names it rather than leaving you to spot the blanks.
Combine several CSV files into one, with the columns matched by their header name rather than by their position. That is the difference between a merge and a mess: two exports of the same table with the columns in a different order combine correctly, and every column that only some of the files have is reported rather than quietly filled with whatever happened to be in that position.
Appending one file to another is only meaningful if you know which column of the second is which column of the first, so this tool answers that question and shows you the answer.
**Columns are matched by name.** The output has one column per distinct header name, in the order the files introduce them. A file whose columns are in a different order still lands under the right headings. A file that lacks a column contributes an empty cell there, and each such difference is listed: which file, which column, and whether it is missing it or is the only one that has it. Matching by position is still available and the page says when that is what is happening, including when it falls back because a file has no usable header row.
Note that a header differing only in case is a different column. Nothing in CSV says a header is case-insensitive, so ID and id are two columns and the page reports all four differences rather than merging them on a guess.
**Side by side** puts every file’s columns next to each other, row by row. A heading two files share is numbered, so the output never has two columns with the same name, and a file with fewer rows is padded at the end rather than shifting the rows below it.
**Nothing is dropped.** The result carries the row count of each input file and checks that they sum to the output, and the page shows that check. Files merge in the order you arrange them, which is not the same thing as the order their readers happen to finish in: each file is read, then placed by its position in the list.
This is a positional and by-name combine, not a database-style JOIN on a key column. If you need rows matched on an identifier rather than stacked, use the CSV File Comparator to see what differs, or a spreadsheet lookup.
Stack monthly reports into one annual dataset. If one month gained a column or had its columns rearranged, the merge still lands correctly and tells you which month differed.
Two tools export the same records with the columns in different orders and slightly different sets. Matching by name puts them together and lists exactly what each one was missing.
Two files whose rows already correspond can be widened into one, with shared headings numbered so the result is still usable.
They still merge correctly. Columns are matched by header name, which is the whole point: matching by position would put every name under the id heading and every id under the name one.
The output has that column, and the files without it get an empty cell there. Every such difference is listed on the page with the file it belongs to.
No. Nothing in CSV says a header is case-insensitive, so those are two columns and the difference is reported. If they are meant to be one, rename one of them first.
Yes. Files are read and then placed by their position in the list, so the order you see is the order they merge in.
No. This tool stacks rows or puts columns side by side. For matching rows on an identifier, the CSV File Comparator will show you which rows correspond and what differs between them.
Rows and columns are parsed and transformed in memory in your browser. No record ever reaches a server.