Multi-list symmetric difference
The parser splits input on `# List` header lines, collects items per block (deduped within each block), and counts how many distinct blocks each item appears in. Only items with a count of exactly 1 survive - i.e. items that appear in one list and nowhere else.
Output is emitted in block order: list 1's distinct items first, then list 2's, and so on. Within each list, the original order is preserved. Two or more lists are required - a single block returns an empty result with a status-bar note.
Case sensitive (off by default) controls the compare key. Off: `Apple`, `APPLE`, `apple` collapse into the same identity, so if any case variant is in another list the whole cluster is dropped. On: each case variant is tracked independently.
How to use find distinct items in lists
- 1Paste two or more lists into the input panel
- 2Separate lists with `# List 1`, `# List 2`, ... header lines
- 3Output keeps only items that appear in exactly one list
- 4Order: list 1's uniques first, then list 2's, etc.
- 5For the opposite (items in every list), use Find common items
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this tool actually does
Keep items present in exactly one list; drop items present in two or more.
N-way distinct
Works with two lists or any N. An item must appear in exactly one of the N blocks to survive - the threshold is always "exactly one", not "not in all".
Within-list dedupe before counting
A value repeated in the same block counts as one occurrence of that block. So `apple / apple` in list 1 and `apple` nowhere else still produces `apple` once in the output.
Block-order output
Items are emitted list 1 first, then list 2, etc. Within each block, the original input order is preserved.
Case-insensitive by default
`Apple` in list 1 and `APPLE` in list 2 count as the same item and are both dropped. Toggle Case sensitive on to treat them as distinct.
Whitespace is significant
No trim option - ` apple` and `apple` are distinct. Chain trim first if the input has inconsistent whitespace.
Worked example
`banana` appears in both lists and is dropped. `apple`, `orange` (list 1) + `grape`, `kiwi` (list 2) survive.
# List 1 apple banana orange # List 2 banana grape kiwi
apple orange grape kiwi
Settings reference
How each option shapes the output using the sample above.
| Setting | What it does | Effect on the sample |
|---|---|---|
| Case sensitive: off (default) | `Banana` = `banana` = `BANANA` | `banana` drops from both lists; 4 items output |
| Case sensitive: on | Exact-case match required | `banana` in list 1 and `banana` in list 2 still match - 4 items. But `Banana` vs `banana` would keep both. |
| Single list (no `# List` header) | Returns empty output | Status bar: "Paste two or more lists separated by `# List X` headers" |
| Within-list duplicates (automatic) | Count as one occurrence of that block | `apple / apple` in list 1 emits `apple` once |