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.Paste the original text on the left and changed text on the right.
- 2.Select Compare lines.
- 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.
Related tools
- Find and Replace TextReplace the first or every literal text match with optional case sensitivity, without regular-expression surprises or uploads.
- Line CounterCount total, non-blank, and blank lines plus the longest line without uploading your text.
- Text File MergerCombine two to twenty local text files in selected order with an explicit newline, blank-line, or no-separator rule.
- Remove Duplicate LinesKeep the first occurrence of each line with optional case and edge-whitespace comparison, while preserving the retained text exactly.
- Add Line Numbers to TextNumber every line of pasted text from a chosen starting value with a custom separator and optional zero padding.
- Add Prefix and Suffix to LinesAdd literal prefix and suffix text to every pasted line, with an option to leave blank lines untouched.
Text Tools guides
View all- Remove Emoji from Any Text Without Losing Formatting
- Yes, You Can Copy and Paste Emojis Anywhere in One Click
- How to Extract Email Addresses From Excel Cells
- Count Text Occurrences in Excel Without Formulas
- Count Characters in a String in Python (Plus Real-Time Counts)
- How to Change Case in an Excel Sheet Without Formulas
- Make LinkedIn Posts Stand Out with Bold Text
- Add a Prefix to All Lines in a File on Linux the Easy Way
- How Do I Add a Number to Text on Every Line
- How to Reverse Text Without Breaking Emojis
- How to Copy Special Characters with Unicode Names and Codes
- Count Lines in a File in Linux Without Command-Line Hassle
- Remove Line Break Symbols in Outlook Without Losing Formatting
- Extract Email Addresses from a Cell in Excel in One Click
- How to Generate Random Words in Excel
- How to Emoji Copy and Paste From Any Browser
- How to Generate Lorem Ipsum Online
- How to Create a Random List in Excel Without Formulas
- How to Use Kaomoji: Copy and Paste Japanese Emoticons
- Count Characters in a Cell in Excel and Beyond for Social Media