Clean Text · browser-local
List Compare
Paste two lists and see which items are unique to each, which they share, and the combined set. GlyphSift compares whole lines by exact membership, keeps your original casing and order, and reports a count for every group so nothing is lost or silently merged.
- Index state
- draft
- Reviewed
- 2026-09-16
- Input limit
- 5,000 graphemes
List Compare
1 items
apple
1 items
cherry
1 items
banana
3 items
apple banana cherry
Good fit
Use this tool when
- You need the difference or overlap between two lists.
- You want to keep the original text of each line, not a character diff.
- You are reconciling exports, name lists, or inventories.
Keep the original
Avoid it when
- You need a character-level diff of two paragraphs.
- You want fuzzy or partial matching.
- The comparison should ignore whole-line boundaries.
Reviewed truth vectors
Examples that expose the edge cases
A: apple, bananaOnly in A: apple"apple" is not present in list B.
B: banana, cherryOnly in B: cherry / In both: banana"banana" appears in both lists; "cherry" is unique to B.
apple, banana + banana, cherryUnion: apple, banana, cherryThe union lists each distinct item once, in first-seen order.
Transparent implementation
How it works
- 01
Split both inputs into lines and ignore blank lines.
- 02
Match lines by exact value, optionally case-insensitive, keeping the original text.
- 03
Report four groups — only A, only B, in both, and the union — each with a count.
Known limitations
What the result cannot promise
Matching is exact and whole-line; there is no fuzzy matching.
Duplicate lines within one list are collapsed to a single entry.
Leading and trailing spaces are part of the value unless you remove them first.
Questions before copying
Frequently asked questions
Does it change my text?
No. It keeps each line's original casing and characters and only sorts items into groups. Turn on case sensitivity to treat "Apple" and "apple" as different.
How are duplicates within one list handled?
Repeated lines inside the same list are counted once. The tool compares set membership, not how many times an item appears.
Is this a character-by-character diff?
No. It compares whole lines as items. For a character-level comparison of two passages, use a dedicated text-compare tool.
Experience, expertise & trust
How we verify this tool
Automated evidence
- Tool-contract & coverage suite30 deterministic cases
tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.
Run in: node --test after a production build (vinext build) - Rendered-HTML suite12 deterministic cases
tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.
Run in: node --test against the built dist/server bundle - Transform & cleanup suite21 deterministic cases
tests/transform-cleanup.test.mjs exercises each deterministic cleanup and transform action against whitespace, duplicate, ordering, casing, and HTML-to-text edge cases.
Run in: node --test, no network, no randomness
Standards this tool follows
- UAX #29: Unicode Text Segmentation
Grapheme and word boundaries underpinning line and whitespace operations.
- UAX #14: Unicode Line Breaking Algorithm
Line-break semantics behind hard-wrap repair.