Compare three lists side by side

Compare three lists side by side to see which items are missing from which list. Each item in the output is tagged with its membership: `A`, `B`, `C`, `A+B`, `A+C`, `B+C`. Items that appear in all three are omitted - this is a differences-focused view, not a full set listing.

Input
Ready
Output
Live

Three-way diff with tagged membership output

Input splits on `#`-prefixed header lines into three blocks. The op computes membership sets for each block and tags each unique value with the lists it appears in: `A`, `B`, `C`, `A+B`, `A+C`, `B+C`. Items present in ALL THREE lists (`A+B+C`) are OMITTED - this is a differences view, not a full inventory.

Output format is `tag\tvalue` per line, tab-separated so it pastes into Excel with the tag as its own column. Order is first-appearance across the three blocks.

Case sensitive off (default) means `Apple` and `apple` tally together. For a value-present-in-all report, use Find common items. For a full diff across any number of lists, use Find distinct items.

How to use compare three lists side by side

  1. 1Enter your lists, separating them with '# List 1', '# List 2', and '# List 3' headers
  2. 2Adjust the 'Case sensitive' toggle if needed
  3. 3Observe the output panel for common, unique, and different items
  4. 4Copy the results directly from the output panel
  5. 5Download the output as a plain text file if desired

Keyboard shortcuts

Drive ListShift without touching the mouse.

Shortcut Action
Ctrl ZUndo last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor
EscExit fullscreen
Ctrl KOpen the command palette to jump to any tool
Ctrl SSave current pipeline draft Plus
Ctrl PRun a saved pipeline Plus

What compare three lists lets you do

Membership-tagged diff over three `#`-delimited blocks. Items present in every list are dropped.

Tagged row output, one value per line

Every differing value is emitted as `tag⇥value` - where the tag is `A`, `B`, `C`, `A+B`, `A+C`, or `B+C`. The tab before the value means pasting into a spreadsheet puts the tag in its own column. No section headers, no banners, no commentary.

Items in all three lists are suppressed

A value present in every list would tag as `A+B+C` - those rows are dropped. This is a differences-focused view. If you want the set of values common to every list, use Find common items; for a full diff with an inventory flavor, Find distinct items.

Header-delimited input

Paste all three lists into one textarea with lines beginning `# List 1`, `# List 2`, `# List 3` separating them. Any line starting with `#` resets to a new block, so `#a`, `## Bob`, `# Input A` all work. Without headers the op can't find block boundaries.

Case sensitive toggle

Off (default) folds `Apple` / `apple` together under first-seen spelling. On treats them as distinct values, each tagged independently.

Deterministic first-appearance order

Rows are emitted in the order each value first appears when scanning list 1 → 2 → 3. Same input produces identical output every run, so two runs can be diffed against each other.

Worked example

Three-way diff output. `cherry` appears in all three lists so it is omitted. All other items are tagged with their list membership.

Input
# List 1
apple
banana
cherry
# List 2
banana
cherry
date
fig
# List 3
cherry
date
elderberry
Output
A	apple
A+B	banana
B+C	date
B	fig
C	elderberry

Settings reference

How each option changes the output, with the sample above as input.

Setting What it does Effect on the sample
Case sensitive: on Compares items with exact casing No change unless input case differs
Case sensitive: off Ignores case differences No change in sample as input is uniformly cased

FAQ

How does the 'Case sensitive' toggle work?
It determines if comparisons respect letter casing. Turn it on for case-sensitive matches.
Can I compare more than three lists?
This tool is designed for three lists. For more, consider breaking them into separate comparisons.
What file format can I download?
You can download the output as a plain text file, which is easy to share and store.
Does this tool support other list formats?
Currently, it supports plain text lists. Ensure your input follows the required format.