This text diff compares two pastes line by line. It is a reading of what changed. It is not a word diff, not a character diff, not moved-block detection, and not a three-way merge. It does not detect a language, and it does not parse the text as JSON, HTML, JavaScript, CSS, XML, or Markdown.
The text boxes follow the browser rule that a CR becomes LF before Compare reads the value. CRLF, a bare CR, and LF are therefore the same break, including a CR at the end of the text. A CR cannot remain inside a line in these boxes, because the box has already turned it into a break. Trailing spaces stay. Two lines that differ only by a space at the end are different lines.
Changed lines are shown with two unchanged lines of context on each side. A longer run of unchanged lines collapses to one row that states how many lines were omitted. The marks are the words same, only in A, and only in B. Copy writes those visible rows, including the count rows. It does not write a hidden copy of either original, and it does not write a patch.
JSON Diff is the other comparison on this site. It parses both sides as JSON, compares object keys as maps, and compares array items by index. A log file, a CSS snippet, or a text config will not go through that tool. Key order that JSON Diff ignores is visible here, because this page never parses.
When the lines match, the status is “No line differences.” and there is no row list. Over 200,000 characters or 5,000 lines on either side is an error. The previous rows are cleared. The page does not diff a truncated prefix.
Text A:
alpha
beta
gamma
Text B:
alpha
BETA
gamma
The middle line is only in A as beta and only in B as BETA. alpha and gamma are same. A file of twenty identical lines, one changed line, and twenty identical lines shows two context lines on each side of the change and a count for the rest.
An empty Text B against three lines in Text A lists those three lines as only in A. Both boxes empty is “No line differences.” hello with a CRLF and hello with an LF are the same line. hello followed by a final CR matches hello followed by a final LF, because the box treats that CR as a break. A CR typed between two letters does not survive as a character inside the line. The box makes it a line break before the comparison starts.
Rows are text nodes. A line that looks like a tag or a script is shown as characters. It is not inserted as HTML. The comparison runs in this browser and the pastes are not stored.
Identical lines that are far from a change are counted, not printed. That keeps a one-line edit in a long paste readable. If you need every unchanged line on screen, this page is the wrong tool. The count is the whole story for that run.
Line diff only. These text boxes turn CR into LF before Compare, so CRLF, a bare CR, and LF are the same break. A CR cannot remain inside a line in these boxes. Two unchanged lines of context are shown. Longer unchanged runs collapse to a count. This is not a word diff, a character diff, moved-block detection, a three-way merge, a JSON comparison, or a patch. Nothing is parsed as code or sent. Limits: 200,000 characters and 5,000 lines per side.
No. Rows are marked same, only in A, or only in B. There is no diff header, no hunk range, and no patch syntax. Copy writes those visible rows.
The text boxes turn a CR into a line break before Compare runs. CRLF, a bare CR, and LF therefore match. A CR cannot stay inside a line in these boxes.
JSON Diff compares parsed values. Object keys are maps, and array items are compared by index. This text diff compares lines, so key order and spacing in a JSON file show up here.
No. A line that differs only by a trailing space is a difference. The row keeps that space.