Yueser

Text diff

Config, copy or code — first see exactly which lines changed.

Algorithm

Line-by-line comparison uses the longest common subsequence (LCS), so it finds the "smallest set of changes" instead of simply aligning by line number. Even a few thousand lines are fast.

When to use it

  • Two versions of a config file or a piece of copy differ by a few lines and you need to see exactly which lines changed — including whether a paragraph was accidentally deleted.
  • You picked up someone else's file and want to skim what they added in this revision while ignoring pure case or trailing-whitespace edits.

When not to

  • You only want the word-level change: comparison is per line, so a one-word edit shows up as a whole line deleted plus a whole line added.
  • Both sides are tens of thousands of lines (minified JS, a database dump): the LCS table is lines × lines and will hang the tab — use git diff --no-index or diff in a terminal.
Limits and privacy

Both texts stay in the browser and are never uploaded. Limits: line-by-line only, no character-level diff; whitespace is trimmed at line ends only, so indentation changes still count; the LCS table is n×m, so tens of thousands of lines exhaust memory and freeze the tab; no syntax or encoding checks, and CRLF is treated like LF.

Frequently asked

How much text can it handle?

The algorithm builds a table of left lines × right lines. Measured with Chrome's V8 engine: 1,000 lines each is about 1 million cells and tens of milliseconds; 8,000 lines each is 64 million cells, roughly half a second to a second and several hundred MB; 16,000 lines each is 256 million cells and ran out of memory at a 1 GB heap. A browser tab usually gets sluggish before that, so staying within a few thousand lines per side is safe.

Why is the whole line marked deleted and added when I changed one word?

LCS matches whole lines, and a line counts as unchanged only if it is exactly equal. An edited line therefore falls out of the common subsequence and appears on both the deleted and the added side. This page has no character-level diff; use a tool with intra-line highlighting for word changes.

What exactly does ‘ignore outer whitespace’ ignore?

Only whitespace at the end of each line (spaces, tabs, a Windows ). Leading indentation still counts, so re-indenting a block from four spaces to two is reported as a change. ‘Ignore case’ lowercases both sides before matching, and the displayed lines are the lowercased ones, while the line numbers still refer to each original file.