Compare Two Lists
Paste two lists and instantly see how they relate: items only in A, items only in B, and items in both (the intersection) — each in its own copyable box, with union and intersection counts. Toggle case-insensitive matching, trim whitespace so trailing spaces don't cause false mismatches, and sorted output. Duplicates within a list are collapsed so the comparison is by membership. It runs entirely in your browser.
How to use the Compare Two Lists
Put one list in box A and one in box B, one item per line. The comparison updates as you type, splitting the items into three result columns: Only in A (items missing from B), In both (the intersection), and Only in B. Each column has a count badge and its own Copy button, and a summary line reports the unique size of each list plus the union and intersection totals. Blank lines are ignored and duplicate entries within a single list are collapsed, so the result reflects set membership rather than how many times something was repeated.
Three toggles handle the things that usually cause spurious mismatches. Trim whitespace (on by default) strips leading and trailing spaces so apple and apple are treated as the same item — invisible trailing spaces are the most common reason two lists "differ" when they look identical. Case-insensitive matches Apple with apple while preserving the original casing in the output. Sort output orders each column alphabetically; leave it off to keep items in their original order. Everything runs locally in your browser, so you can compare sensitive lists — email addresses, SKUs, user IDs — without anything being uploaded.
Set comparison as a everyday text task
Comparing two lists is one of the most common small data tasks there is: which email addresses are on the new list but not the old one, which SKUs appear in both feeds, which user IDs were added or removed between two exports. Mathematically these are set operations — difference (A − B and B − A), intersection (A ∩ B) and union (A ∪ B) — but you rarely want to open a spreadsheet or write a script for a one-off check. A focused tool that takes two pasted lists and shows the three partitions answers the question in seconds.
The subtlety is that real-world lists are messy in predictable ways, and naive comparison gets them wrong. Trailing whitespace from a copy-paste makes two visually identical items unequal. Inconsistent casing splits what should be one entry into two. Duplicate lines within a list inflate counts if you compare item-by-item instead of by membership. And order differences make a line-by-line diff useless when both lists contain the same things in a different sequence. Handling these — trimming, optional case-folding, de-duplicating into a set, and comparing by membership rather than position — is what separates a reliable answer from a misleading one.
This tool treats each list as a set: it trims (optionally), folds case (optionally), drops blank lines, and keeps the first-seen original spelling of each unique item for display. It then computes the three partitions and the union/intersection counts in one pass. Because it's membership-based and not a positional diff, the order of the input doesn't matter and repeated lines don't distort the result. It is the right tool when you care about what is in each list; when you instead care about line-by-line changes in order — say, two versions of the same file — a sequential text diff is the better instrument. Running entirely client-side means even sensitive lists stay on your machine.
Common use cases
- Mailing-list deltas. Find who was added or removed between two email exports.
- Inventory reconciliation. See which SKUs or IDs appear in both feeds and which are unique to one.
- Permission audits. Compare two access lists to find members present in one but not the other.
- Dedup and overlap checks. Measure how much two keyword or tag lists overlap before merging them.