Comparison status {{ analysis.primaryMetric }} {{ analysis.summaryLine }} {{ analysis.badges.changed }} {{ analysis.badges.added }} {{ analysis.badges.removed }} {{ analysis.ignoredCount }} ignored
Original and revised text
Paste the baseline version or load one text-like file up to 2 MiB.
{{ oldStatus || 'Drop TXT, MD, CSV, JSON, LOG, DIFF, or PATCH onto the textarea.' }}
Paste the candidate version or load one text-like file up to 2 MiB.
{{ newStatus || 'Drop a supported file here, or load the safe sample pair.' }}
Use 0 for compact hunks or up to 20 lines for more review context.
lines
Leaves indentation and edge spaces significant while off.
{{ trimLineEdges ? 'Enabled' : 'Disabled' }}
Treats each run of spaces or tabs as one space while on.
{{ collapseWhitespace ? 'Enabled' : 'Disabled' }}
Keeps case-only differences material while off.
{{ ignoreCase ? 'Enabled' : 'Disabled' }}
Keeps added and removed blank lines in the review while off.
{{ ignoreBlankLines ? 'Enabled' : 'Disabled' }}
{{ unifiedExportAnnouncement }}
{{ line.text }}
{{ chartExportAnnouncement }}
{{ tableExportAnnouncement('change') }}
ChangeOriginal lineRevised lineOriginal textRevised textReview noteCopy
No material or ignored rows for the current comparison.
{{ cell.value }}{{ cell.value || ' ' }}{{ cell.value }}
{{ tableExportAnnouncement('pair') }}
StatusOriginal lineOriginal textRevised lineRevised textCopy
{{ cell.value }}{{ cell.value || ' ' }}{{ cell.value }}
{{ tableExportAnnouncement('audit') }}
SignalValueInterpretationCopy
{{ cell.value }}
{{ jsonExportAnnouncement }}
{{ summaryAnnouncement }}

A text diff turns two versions into a review of what stayed, moved, appeared, or disappeared. It is especially useful for configuration files, release notes, logs, generated text, and document exports where a small line change can carry more meaning than the overall similarity of the files.

Line-oriented comparison treats line breaks as structure. An added line and a removed line are clear operations; nearby removal and insertion runs can also be paired as changed lines for easier review. This is not a semantic judgment, so two sentences with the same meaning but different wording still count as changes.

Material change
A changed, added, or removed line after the active matching options are applied.
Ignored match
Lines whose original text differs but whose comparison form matches after whitespace, case, or blank-line rules.
Hunk
A group of nearby changes plus the requested unchanged context around them.
Unified diff
A patch-like view using minus lines for removals, plus lines for additions, and range headers for each hunk.

Ignore options can remove noise, but they also change the question being asked. Ignoring case is useful for case-insensitive data and dangerous when identifiers are case-sensitive. Removing blank-only lines can simplify prose review while hiding layout changes that matter to a parser.

How to Use This Tool:

Start with the exact comparison, then enable only the ignore rules that match the review policy.

  1. Paste the baseline into Original text and the candidate into Revised text, or load one supported text-like file into each side.
  2. Open Advanced to choose 0 to 20 Context lines and any whitespace, case, or blank-line rules that should not count as material differences.
  3. Read Unified Diff for patch-style review, then use Change Ledger or Pair Review when original and revised line numbers matter.
  4. Check Match Audit before sharing the result. It records active options, ignored matches, line totals, hunk count, and large-input warnings.

Interpreting Results:

No material changes means the compared line forms match under the current options. It does not always mean the original text is byte-for-byte identical. A nonzero ignored count proves that at least one displayed line differed before normalization.

  • Changed rows are paired replacement candidates, not proof that one sentence was edited into the other.
  • Added and removed counts describe line operations, not words or characters.
  • Increase context when a change depends on nearby configuration or prose; reduce it when separate hunks are easier to review independently.
  • Re-run with exact matching before approving changes to indentation-sensitive, case-sensitive, or blank-line-sensitive formats.

Technical Details:

The comparison operates on lines using a Myers shortest-edit-path algorithm. It seeks an edit sequence made from insertions, deletions, and equal lines. Consecutive delete and insert runs are then paired in order where possible so replacements can be reviewed as changed rows.

Transformation Core

Each side follows the same deterministic path before the results are assembled.

  1. Convert Windows and old-Mac line endings to line-feed characters, then split the text into numbered lines.
  2. Optionally trim line edges, collapse each whitespace run to one space, and lowercase the comparison form.
  3. Optionally remove blank-only lines from matching while retaining the original line numbers for the remaining records.
  4. Run the line-key diff and pair adjacent deletions and insertions into changed rows.
  5. Expand changed rows into minus and plus lines, group nearby operations into hunks, and attach 0 to 20 unchanged context lines.
Text comparison option effects
OptionComparison effectWhat remains visible
Trim line edgesRemoves leading and trailing whitespace before matchingThe original untrimmed line text
Collapse whitespaceTreats each run of whitespace as one spaceThe original spacing in review rows
Ignore caseLowercases comparison formsThe original capitalization
Ignore blank linesExcludes blank-only lines before alignmentA warning that blank lines were removed; excluded rows do not appear

A changed pair also receives a token-level summary. Whitespace and non-whitespace runs are diffed to count inserted and removed tokens; that summary is skipped when the two lines contain more than 600 tokens in total.

Worked mechanism path

Comparing an original line a with a revised line b produces one changed row. The unified form contains an original header, a revised header, the hunk range @@ -1,1 +1,1 @@, then -a and +b. The change count is one because the paired replacement is one review row, even though the unified representation contains one removal and one addition.

Each text input is limited to 200,000 characters by the comparison model. File loading accepts one TXT, Markdown, CSV, JSON, LOG, DIFF, or PATCH-like file per side up to 2 MiB; an oversized or unreadable file is rejected. More than 5,000 total input lines triggers a rendering warning, and more than 2,500 aligned rows warns that the pair table may be large.

Privacy and Limits:

Pasted text and loaded files are compared in the browser and are not uploaded for processing. Treat exported diffs as potentially sensitive because they can contain removed secrets, old configuration values, personal data, or context lines that were not meant to be shared.

  • The result explains textual edits, not whether the revised content is correct, safe, or equivalent in meaning.
  • Line pairing is a review convenience and may not reflect author intent after large reorders.
  • Ignore options should be part of the review record whenever another person must reproduce the result.

References: