Compare Schema of CSV Files Online
Compare the schemas of two CSV files directly in your browser. See which columns exist in each file and spot type mismatches — no upload required.
How to compare Schema of CSV files
- Drop the first file onto the File A area and the second onto File B. Both must be in the format this page is for.
- The comparison runs as soon as both files are loaded. There are no settings to choose.
- Read the four counts at the top: Matched, Type mismatches, Only in A and Only in B.
- Go through the column-by-column list. Each column has a coloured dot and shows its type in one or both files.
- Drop a new file on either side to compare again. Nothing is downloaded, because the result is an on-screen report.
Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.
Worked example
An inventory team loads each monthly stock count into the same database table. April's export came from a new warehouse system and the load failed. File A is March's export, shown below.
Input (CSV)
sku,product_name,qty_on_hand,unit_cost,last_counted
HB-M8-40,Hex bolt M8x40,420,0.12,2026-03-31
WS-M8,Washer M8,1150,0.03,2026-03-31
NT-M8,Nyloc nut M8,610,0.05,2026-03-30Settings
- File B (April) has the columns sku, product_name, qty_on_hand, unit_cost, warehouse, count_date
- One qty_on_hand value in File B is "12 (est)", so that column loads as text
- No other settings: the diff runs once both files are loaded
Result
| column | file_a_type | file_b_type | status |
|---|---|---|---|
| sku | VARCHAR | VARCHAR | Matched |
| product_name | VARCHAR | VARCHAR | Matched |
| qty_on_hand | BIGINT | VARCHAR | Type mismatch |
| unit_cost | DOUBLE | DOUBLE | Matched |
| last_counted | DATE | NULL | Only in A |
| warehouse | NULL | VARCHAR | Only in B |
| count_date | NULL | DATE | Only in B |
The summary shows 3 matched, 1 type mismatch, 1 only in A and 2 only in B. qty_on_hand is in both files, but one annotated value made the April column text. last_counted and count_date hold the same data under different names. Columns are matched by exact name, so the tool lists them as unrelated. Renaming count_date to last_counted would turn two differences into one match.
Working with CSV files
CSV files carry no types, so each file is typed by sampling its values when it loads. The type of a column can change between two exports of the same system because of the data, not the layout. One "n/a" in a numeric column makes it VARCHAR. A month with only whole numbers gives BIGINT, where a month with decimals gives DOUBLE. Many CSV type mismatches are really data quality problems, and the fix is in the values.
Header text is compared exactly as written. A trailing space or a changed capital letter makes a column look new, so "Unit Cost" in one file and "unit_cost" in the other show up as one column only in A and one only in B. If a file has no header row, the reader makes up names such as column0 and column1, and every column comes out unmatched. Check the column count shown under each drop area before reading the details.
Frequently Asked Questions
Why does the same CSV column show BIGINT in one file and DOUBLE in the other?
Types come from the values. One file has only whole numbers in that column and the other has decimals. They combine without trouble in a DOUBLE or DECIMAL database column.
Does the column order in my CSV files matter?
Not to this tool, which matches columns by name. Order does matter to loaders that insert by position, such as a COPY without a column list, so check it separately if you load that way.
Does schema diff compare the data in the rows?
No. It compares column names and types only. The row count of each file is shown under its drop area, but values are never compared. Use Compare Files to find rows that differ.
Are column names matched case-sensitively?
Yes. Email and email count as two different columns, one only in A and one only in B. Column position does not matter: a column is matched by name wherever it sits.
Why is INTEGER against BIGINT reported as a mismatch?
Types are compared by their exact names. INTEGER and BIGINT, or DECIMAL(10,2) and DECIMAL(18,2), count as mismatches even though the values fit together. A wider type in the new file is usually safe to load. Text where a number used to be usually is not.
Related Tools
Rename Columns in CSV Files Online
Rename columns in CSV files instantly in your browser. No upload, no server — your data stays on your device.
Cast Column Types in CSV Files Online
Change column data types in CSV files directly in your browser. Cast text to numbers, dates to timestamps, or any supported type conversion — no upload required.
Merge CSV Files Online
Merge and concatenate multiple CSV files into one, directly in your browser.
Compare Schema of Excel Files Online
Compare the schemas of two Excel files directly in your browser. See which columns exist in each file and spot type mismatches — no upload required.
Compare Schema of Parquet Files Online
Compare the schemas of two Parquet files directly in your browser. See which columns exist in each file and spot type mismatches — no upload required.
Compare Schema of JSON Files Online
Compare the schemas of two JSON files directly in your browser. See which columns exist in each file and spot type mismatches — no upload required.
CSV Viewer Online
View and inspect CSV files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
Convert CSV to Parquet Online
Convert CSV files to Parquet format directly in your browser. No upload required — your data never leaves your device.