Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. CSV & Data Analysis
  3. CSV File Comparator
Add to favorites

CSV File Comparator

Diff two CSV files with the matching rule stated: a key that may repeat, or a real Myers diff, with every row accounted for

Rows never leave your deviceMore csv & data analysisJump to full guide

Initializing in your browser…

You might also like

CSV Merger

Combine CSV files with columns matched by name, so a reordered export still lands correctly, and every difference reported

CSV Duplicate Remover

Remove duplicate rows with equality as a stated choice: case, spaces, accents and numbers each their own switch, and the rule in force shown

CSV Viewer & Editor

View, sort and edit a CSV, with an undo stack that goes back exactly one step and a parse report that tells a broken quote from a ragged row

A sample run

Two exports of the same member list. The second was written by a different system: the columns are in a different order, one member is new, one is gone, and one changed plan. A comparison that lines columns up by position and walks the rows index by index reports almost every row as changed.

Two files, keyed on id

before  id,name,email,plan        after  id,plan,name,email
        1,Alice,a@x.com,pro             0,trial,Zoe,z@x.com
        2,Bob,b@x.com,free               1,pro,Alice,a@x.com
        3,Carol,c@x.com,pro              2,pro,Bob ,b@x.com
        4,Dave,d@x.com,free              3,pro,Carol,c@x.com
What CSV File Comparator produces

Result

added 1   removed 1   modified 1   unchanged 2

added     Zoe, id 0
removed   Dave, id 4
modified  Bob, plan free to pro and a trailing space on the name
unchanged Alice and Carol

Checked: all 4 rows of the first file and all 4 of the second are accounted for exactly once.

Columns are lined up by name, so the rearranged second file compares correctly. Alice and Carol are unchanged even though they moved. Bob is one modified row with two changed columns rather than four files worth of noise. The last line is the tool checking its own arithmetic: 1 removed plus 1 modified plus 2 unchanged is the 4 rows of the first file, and 1 added plus 1 modified plus 2 unchanged is the 4 of the second.

About the CSV File Comparator

Compare two CSV files with both decisions stated: which row in the second file corresponds to which row in the first, and what counts as the same value. Every row of both files is accounted for exactly once, and the page checks that and says so, because a comparison whose numbers do not add up to the row counts has lost rows somewhere.

How to use

  1. 1Upload the baseline file and the file to compare it with
  2. 2Choose how rows are matched: by a key column, or as a diff by position
  3. 3Open "What counts as the same value" if case, spaces or number formatting should not count as a change
  4. 4Read the counts and the sentence describing the comparison, then download the report

Key features

  • Key matching that handles a repeated key as rows rather than losing all but one
  • A Myers diff for positional matching, so an inserted row is one addition
  • Columns lined up by name, with a column only one file has named on the page
  • Five independent equality switches, with the rule in force written out
  • A self-check that every row of both files is accounted for exactly once
  • A CSV report with the before and after value for every column

How it works

A diff tool is two decisions in a trenchcoat, and both of them are choices rather than facts.

**Which rows correspond.** With a key column, rows sharing a key are the same row wherever they sit in the file. When a key appears more than once the rows are paired in file order and the repeat is reported with its count in each file, because keeping one row per key and dropping the rest is how a comparison quietly loses data. An empty key is a key like any other and does not merge every keyless row into one. A key made of several columns is a structure, so a value holding a separator cannot collide with a different row.

Without a key, the match is a Myers diff, the algorithm behind git diff. That matters: walking two files index by index means a single row inserted at the top makes every row after it look modified, which is a wall of noise around one real change. A diff calls it one addition.

**Which columns line up.** By name when both files have a header, so the same columns in a different order compare correctly instead of comparing a name against a quantity, and a column that only one file has is named rather than shifting everything after it. Fields beyond what the header row names are still compared, so a row that gained a field is a change rather than a silent nothing.

**What counts as the same value.** Five independent switches: surrounding spaces, repeated spaces inside a value, case (folded in the Unicode sense, so the German sharp s matches ss), accents (so the two spellings of an accented letter match), and numbers (so 1, 1.0 and $1,000 against 1000 are the same value). With all of them off, two values are the same only when they are exactly the same text. Whichever combination is in force is written out in a sentence above the results.

The report downloads as a CSV rather than a text file, with one row per compared row and the before and after value side by side for every column, so it is something you can act on.

Where this fits a data pipeline

  • Checking what an import changed

    Compare the export before and after, keyed on the identifier, and read the modified rows with the changed columns highlighted.

  • Reviewing a data hand-off

    A supplier sends a new file with the columns rearranged and one field added. Lining up by name shows the real changes instead of every row looking different.

  • Finding rows that were dropped

    The removed count and the row-accounting line together tell you whether anything went missing, which a comparison that silently keeps one row per key cannot.

Tips & best practices

  • The line under the counts says whether every row of both files was accounted for. If it ever says otherwise, the comparison has a bug and it will tell you rather than leaving you to notice.
  • If a key repeats, the panel says so and how often. That is usually a sign the column you picked is not the identifier you thought it was.
  • Turn on "Compare numbers as numbers" before comparing an export against a database dump: 1 and 1.0 are the same quantity and different text.

Examples

  • A row inserted at the top

    Without a key, one new first row is reported as one addition and the rest as unchanged. Comparing index by index would have called every following row modified.

  • Columns in a different order

    Two exports of the same table with the columns rearranged compare as unchanged, because the columns are lined up by name and the page says the order differed.

  • An identifier that is not unique

    Three rows sharing an id are three rows. They are paired in file order and the page reports the key, with how many times it appears in each file.

Frequently asked questions

What happens if my key column is not unique?

The rows sharing a key are paired in file order and the repeat is reported, with how many times the key appears in each file. Nothing is dropped: the row-accounting line confirms every row of both files is counted exactly once.

A row moved but did not change. What does it show as?

Unchanged, if you are matching on a key, because the key finds it wherever it is. Positionally it is a removal and an addition, which is what a diff says about a move.

The two files have the same columns in a different order. Does that work?

Yes, when both have a header row and the names are distinct. Columns are lined up by name and the page says the order differed. You can switch to lining them up by position if you want that instead.

Why are rows with only a case difference reported as modified?

Because by default two values are the same only when they are exactly the same text. Open "What counts as the same value" and turn on Ignore case; the sentence above the results updates to say what is in force.

Does it handle files with tens of thousands of rows?

Yes. A hundred thousand rows compare in well under a second in both modes, because the key match indexes each file once and the positional match is a Myers diff whose cost depends on how many edits there are rather than on how big the files are.

Private by design

Rows and columns are parsed and transformed in memory in your browser. No record ever reaches a server.