Skip to content

Text Diff Checker

Compare two bounded text versions line by line and see additions, deletions, and unchanged lines without uploading either side.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Paste the original text on the left and changed text on the right.
  2. 2.Select Compare lines.
  3. 3.Review plus additions, minus deletions, unchanged rows, and the summary counts.

About Text Diff Checker

Text Diff Checker compares an original and changed plain-text version line by line. Paste both sides, run the comparison, and inspect a single ordered view where unchanged lines have a neutral prefix, additions begin with plus, and deletions begin with minus. A summary reports added, deleted, and unchanged line counts. Both texts remain in the browser and are never uploaded to Lizely.

The comparison unit is a complete line, not a character or word. Lines match only when their strings are exactly equal, including capitalization, punctuation, leading spaces, trailing spaces, tabs, and Unicode code points. A one-character edit therefore appears as one deleted line and one added line. This coarse view is intentional: it stays understandable for lists, configuration, logs, prose paragraphs, and small code excerpts.

CRLF, standalone CR, and LF are recognized as boundaries, with CRLF treated as one boundary. The comparison normalizes boundary syntax for analysis but retains the content inside each line. Completely empty input is zero lines. Empty lines inside a nonempty text are valid line values and participate in matching like any other line.

The algorithm computes a longest common subsequence of the two line arrays. Equal lines chosen for that subsequence appear as unchanged. Lines skipped from the original appear as deletions, and lines skipped from the changed side appear as additions. Duplicate lines can yield more than one valid optimal alignment; this implementation uses a deterministic tie rule that favors an addition when the remaining subsequence lengths are equal.

This is not a patch generator. It does not add line numbers, detect moved blocks, ignore whitespace, fold letter case, parse programming languages, highlight character-level edits, merge conflicts, or write either source. The output is an explanatory view rather than a unified-diff file suitable for automated application.

Each side is limited to 500 lines and 200,000 UTF-16 code units. Longest-common-subsequence comparison has quadratic work in line counts, so the explicit line cap prevents a pasted huge document from freezing the tab. Character limits also bound input storage and rendering. An over-limit side is rejected before the dynamic-programming table is built; nothing is silently truncated.

The table stores subsequence lengths for the remaining suffixes and then walks forward once to build rows. With 500 lines per side the matrix remains bounded. Generated rows preserve original line strings and their order within each source. Counts are derived from the final row types, ensuring the visible representation and summary use the same result.

Use Text Diff Checker to review a short configuration change, compare edited copy, inspect a list revision, or verify expected log lines. For a source repository, use Git because it tracks history, filenames, renames, patches, authorship, and conflict resolution. For very large files, use a streaming or native diff utility rather than pasting them into a browser.

A displayed equality means exact string equality under this tool's documented rules, not semantic equivalence. Different Unicode normalization forms, visually similar characters, line-ending conventions inside escaped strings, or hidden whitespace can produce changes. Inspect sensitive changes in the destination format and retain the original versions until review is complete.

Editing either side clears the previous comparison. The same accepted inputs always produce the same deterministic rows. The tool calls no third-party library or service and does not retain a history after the page is closed or refreshed.

Methodology & sources

Reject either side above 200,000 UTF-16 code units or 500 normalized CRLF/CR/LF lines, build a bounded dynamic-programming matrix of longest-common-subsequence lengths, walk forward using exact line equality and a deterministic addition-first tie rule, emit equal, add, or delete rows in source order, and derive summary counts from those rows.

Frequently asked questions

Does it compare individual characters?
No. Exact complete lines are the comparison unit; an edited line appears as one deletion and one addition.
Are spaces and capitalization ignored?
No. Line equality is exact, including case and every whitespace character inside the line.
Why are there limits of 500 lines?
The longest-common-subsequence algorithm has quadratic line-count work, so the cap keeps browser memory and latency bounded.
Are my versions uploaded?
No. Splitting, comparison, row generation, and rendering happen locally.

Text Tools guides

View all