Text Diff Checker
Compare two plain-text drafts and inspect their line-by-line differences. Line endings are normalized, while spaces, tabs, case and the final newline remain significant. This is an editorial comparison, not a judgment about meaning or correctness.
Compare two drafts
- Paste or type the earlier version into Original text and the later version into Updated text. Both fields may be empty. Use example fills two short drafts and waits for you to select Compare.
- Select Compare to start a local browser worker. Keep each side within 100000 UTF-16 units, 2000 line records and 10000 content units per line. Editing, Clear or Cancel stops the current comparison; your drafts are not silently shortened.
- Read the match or difference status, added/removed/unchanged counts and numbered rows. Show whitespace and controls reveals otherwise hard-to-see changes. Previous and Next expose every result row; no file is uploaded or merged.
Understand exactly what is compared
CRLF and standalone CR line endings become LF before comparison. Browser text fields already normalize line endings, so a match does not establish byte-identical source files or recover the clipboard's original line-ending convention.
A line record includes its final LF when one exists. The text a and the text a followed by LF each contain one record, but those records differ. Empty text has no records; one LF represents one blank record.
Everything else remains significant, including trailing spaces, tabs, nonbreaking spaces, letter case and different Unicode combining sequences. Similar-looking text may differ. A wrapped line on screen is not another record, and the input limit counts UTF-16 units rather than visible characters.
A completed comparison finds a shortest whole-line insertion/deletion script. Repeated lines can admit several equally short alignments. Removed and added rows do not uniquely identify a rewritten or moved passage, and no word-level, semantic or correctness conclusion follows.
Examples of lines and endings
Compare red then blue with red then green, with both drafts ending in LF. Red is unchanged; blue is removed and green is added. Each draft has two records, with one added, one removed and one unchanged line in the comparison.
Compare a without a final newline against a followed by LF. The result has one removed and one added record, not an unchanged line plus an invented empty line. The final-LF flags read No and Yes.
Compare empty text against one LF. The result adds one blank line; the original final-LF flag is Not applicable. By contrast, two empty drafts match with zero added, removed and unchanged records after you explicitly select Compare.
Limits and incomplete comparisons
Input limits are inclusive and are checked without truncation. Highly different drafts can still reach an internal edit or time budget within those limits. Comparison limit reached means no complete result exists; it must not be read as a match.
An unavailable worker, cancellation or failure preserves the drafts but produces no comparison result. Try again explicitly or use smaller drafts. No fallback blocks the page by running the diff on its main thread, and background browser scheduling prevents a guaranteed completion deadline.
This tool accepts pasted plain text, not PDF, Word or other document files. It does not ignore whitespace or case, validate facts or code, approve safety-critical instructions, apply a patch, merge changes or create a saved/shared report.
Local text processing
The comparison runs in a dedicated browser worker. The tool does not upload drafts or results, put them in URLs, include them in logs or analytics, or save them in browser storage. Ordinary site and asset requests still occur. User text is rendered as text, not executed as HTML or code.
Text comparison questions
Sources
References for the comparison and browser behavior.
- github.comjsdiff line comparisonDocuments the line-diff algorithm and options used here.
- html.spec.whatwg.orgHTML textarea specificationDescribes line-ending normalization in text fields.
- developer.mozilla.orgWorker terminationDescribes stopping a browser worker.
- jsdiff BSD-3-Clause licenseComplete notice for the pinned dependency.
Reviewed 5 November 2026; this is not professional, security or safety approval.
Related tools
JSON to YAML
Convert JSON to YAML locally while preserving number text and quoted strings; copy or download the complete result.
Open tool — JSON to YAMLYAML to JSON
Convert one YAML document locally to JSON with exact number text and bounded aliases, then copy or download the complete result.
Open tool — YAML to JSONHTML to Markdown
Convert pasted or local HTML into Markdown, review conversion notes, and copy or download the result.
Open tool — HTML to MarkdownJavaScript Regex Tester
Test a JavaScript pattern locally and inspect matches, captures, and UTF-16 positions.
Open tool — JavaScript Regex TesterMarkdown to HTML
Convert a Markdown draft to an HTML fragment, inspect the source and inert preview, then copy or download it.
Open tool — Markdown to HTMLText Sorter
Sort lines alphabetically by a chosen language or by Unicode code point, keeping duplicates, blank rows and complete line contents.
Open tool — Text SorterRemove Duplicate Lines
Keep the first copy of each exact text line, preserving order, significant spaces and blank rows, then copy or download the result.
Open tool — Remove Duplicate LinesCase Converter
Convert text to uppercase, lowercase, capitalized words or sentence case with explicit letter rules.
Open tool — Case ConverterHTML Entity Encoder/Decoder
Encode or decode literal HTML references with explicit context, Unicode options and LF output, without parsing or rendering markup.
Open tool — HTML Entity Encoder/DecoderMarkdown Table Generator
Edit a small literal-text table, set alignment and copy GFM Markdown or import tab-separated text.
Open tool — Markdown Table GeneratorQuery String Parser & Builder
Edit ordered URL parameters, retain repeated names and copy a normalized query or HTTP(S) URL.
Open tool — Query String Parser & BuilderURL Encoder & Decoder
Convert a UTF-8 URL component or form value with explicit space and plus rules, then copy or download the result.
Open tool — URL Encoder & DecoderBase64 Encoder & Decoder
Encode UTF-8 text as standard or URL-safe Base64, or decode either format with clear errors and complete text output.
Open tool — Base64 Encoder & DecoderXML Formatter
Check namespace-aware XML 1.0, format or compact locally, and copy or download UTF-8 output.
Open tool — XML FormatterJSON Formatter & Validator
Check JSON syntax, format or minify locally, and copy or download output while preserving original data tokens.
Open tool — JSON Formatter & ValidatorSMS Character Counter & Segment Calculator
See how your message is encoded, where its segments end and what it may cost. Your text stays in your browser.
Open tool — SMS Character Counter & Segment CalculatorSocial Media Character Counter
Check platform-specific limits and split posts without losing text.
Open tool — Social Media Character CounterCharacter Counter
Count characters, words, sentences and paragraphs. Check word density, reading time and UTF-8 size, all in your browser.
Open tool — Character CounterText Size Calculator
Compare text encodings and payload sizes in your browser.
Open tool — Text Size CalculatorPDF Text Cleaner
Fix line breaks and spacing in text copied from a PDF. Preserve your original and review ambiguous hyphens before copying the cleaned text.
Open tool — PDF Text CleanerFancy Text Converter
Convert supported fancy Unicode letters to normal text locally. Keep case, accents, emoji and your original text.
Open tool — Fancy Text ConverterGarbled Text Fixer
Fix garbled text and repair broken accents with a browser-based mojibake fixer. Review each possible UTF-8 reversal before applying it.
Open tool — Garbled Text FixerGmail Clipping Checker
Measure email HTML bytes in UTF-8, compare them with an advisory 102,000-byte Gmail reference, and inspect size contributors locally.
Open tool — Gmail Clipping Checker