Google Analytics helps us understand which tools you use and which actions work. Your files and entered text stay out of analytics.

How to compare text, documents and spreadsheet files

Compare the thing that identifies a change: a line, a word, an object value or a record ID.

Free toolDifference CheckerCompare text, code and document wording. Match CSV or Excel rows by ID and export the exact changes.Compare your versions

Choose the comparison unit first

Use a line diff for source code, wording extraction for documents and ID matching for recurring table exports. File extensions alone do not tell you which comparison is useful.

TaskCompareWatch for
Review a code editLines, with character highlights inside edited lines.A text match does not prove equivalent behaviour.
Check document wordingExtracted paragraphs and words.Missing formatting, comments and headers.
Reconcile supplier exportsRecords matched by a unique SKU or ID.Duplicate IDs, renamed columns and changed numeric formatting.
Compare JSON responsesValues after normalising object key order.Array order and number-versus-string differences.
Review document layoutFormatting, revisions or rendered pages.A wording checker cannot establish a layout match.

Compare CSV or Excel rows by ID

A unique ID lets you compare the same record after a sort. Use a stable value such as a product SKU.

  1. Keep a header row on both exports.
  2. Choose a unique ID that represents the same thing in both files.
  3. Check for blank and duplicate IDs before reconciling.
  4. Match other columns by their header names.
  5. Review changed values, added records and removed records separately.

A worked supplier-price comparison

The original export contains three products. The updated export changes one price, removes one product and adds another.

The updated file also changes both row order and column order. You can reproduce this example with Try an example → Reordered prices in the checker.

SKUOriginalUpdatedExpected change
A-101Notebook, 4.50, stock 20Notebook, 4.75, stock 20Price changed from 4.50 to 4.75.
B-202Pen, 1.20, stock 50Pen, 1.20, stock 50Unchanged, despite moving.
C-303Folder, 2.00, stock 15AbsentRemoved record.
D-404AbsentClips, 3.00, stock 10Added record.

The automated fixture test on 2 October 2026 returned one changed, one unchanged, one removed and one added record. Only A-101’s price cell changed. The source fixture and repeatable test are in the project’s scripts/check-difference.mjs.

A line comparison answers a different question: where did the file’s lines change? It cannot know that an SKU represents the same product across two exports.

Keep IDs exact

007 and 7 are different IDs. Turning an identifier into a number can erase that distinction.

floi matches IDs exactly. Its ignore-case and whitespace rules apply to compared values. They do not rewrite IDs or column names.

If your export lacks a unique ID, create a trustworthy key in the source system first. Combining fields needs a deliberate rule; silently choosing the first duplicate hides a data problem.

Decide whether number formatting matters

4.50 and 4.5 have different text, even when their numeric values match. A displayed-value comparison reports that difference.

The checker reads displayed spreadsheet values rather than recalculating formulas. This helps preserve IDs and formatted values, but cannot verify workbook calculations.

Compare Word documents by wording or by formatting

Extracted text finds wording changes without preserving the full Word document model. Use Word’s own comparison when formatting or tracked revisions matter.

floi accepts DOCX and Word 97 to 2003 DOC. It compares main-body text. DOCX deleted revisions are excluded, while inserted wording remains.

Wording review

Useful for changed dates, prices and sentences. Read the extraction note and inspect the relevant source paragraphs.

Full Word redline

Useful for formatting and tracked revisions. In Word, use Review → Compare and select the original and revised documents.

Mixed formats

DOCX against plain text can expose wording differences. It cannot prove that both documents share the same appearance.

Microsoft explains its document-comparison settings in the legal blackline guide. Those are documented Word capabilities, not a floi formatting test.

Compare code without hiding meaningful changes

Start with an exact comparison and use character highlighting for small edits. Ignoring whitespace can hide a change that affects programme behaviour.

Python indentation matters. A space inside a string can matter in any language. Use ignore rules to investigate noise, then review the exact result.

MethodUseful forLimit
floi Difference checkerA browser review of pasted code, files or mixed document formats.No syntax validation, repository history or merge resolution.
Visual Studio CodeFiles you already keep in a development workspace.A source-file diff does not reconcile spreadsheet records by ID.
GNU diffRepeatable line comparison in scripts or a terminal.Word documents need text extraction first.

In VS Code, choose Select for Compare on one file, then Compare with Selected on the other. See its file comparison documentation.

For a terminal comparison, diff -u original.txt updated.txt produces a unified line diff. GNU documents its comparison and whitespace options. Neither method executes your source code.

Normalise JSON only when order is irrelevant

Object key order often adds noise to JSON text diffs. Sorting keys lets you focus on values and types.

Array order remains meaningful: [1, 2] differs from [2, 1]. A numeric 1 also differs from the string "1".

floi’s Ignore JSON key order produces canonical JSON before line comparison. It refuses integers outside JavaScript’s safe numeric range. Compare those as original text or encode identifiers as strings. Decimal values still use browser number precision.

Understand PDF extraction before trusting the result

A PDF can store text in a different order from the visible page. Columns, positioned labels and line wrapping can make extracted text misleading.

  • Check that the PDF has selectable text.
  • Inspect the extracted wording in both editors.
  • Compare a short known passage against the source.
  • Use OCR for scanned pages before comparing wording.
  • Use a visual comparison method for layout changes.

The checker does not compare PDF pixels. It rejects a PDF with no selectable text rather than reporting a false match between empty extractions.

Export changes with their comparison rules

A useful report identifies the original value, updated value and matching rule. Counts alone cannot explain a reconciliation.

floi’s CSV report includes the ID, column and both values. Its text and HTML reports name active rules. Exports cover all changes even when the screen is filtered.

Formula-like values in the CSV report receive a leading apostrophe. This reduces accidental formula execution when opening the report in a spreadsheet. Review the exported values before importing them into another system.

Frequently asked questions

Why does a diff show every line as changed?

Check line endings, indentation and extraction order first. If the input is a spreadsheet, row sorting may be the cause. Use a stable ID to match records. Turn ignore rules off again before making a final exact review.

Is matching by row number good enough?

Only when row position is the identity you intend to compare. Insertions and sorting can shift every later row. For repeated business exports, use a unique record ID and review duplicates before comparing.

Does no difference prove that two files are identical?

It proves only that the compared representation matches under the selected rules. Document extraction omits formatting. Spreadsheet values omit formulas and styles. Ignore rules can hide differences. For byte identity, use a file hashing or binary comparison tool.

↑↓ move↵ openesc close