Find unique items in a list

Paste a list and get only items that appear **exactly once** back. This is different from dedupe - dedupe keeps the first copy of every value; this keeps only items that have no duplicate at all. Original order is preserved.

Input
Ready
Output
Live

Singleton extraction, not deduplication

The tool tallies every item's occurrence count first, then keeps only items whose count is exactly 1. Items that appear twice or more are dropped entirely - not collapsed to a single copy, but excluded from the output. This answers "which items show up exactly once?" rather than "what are the distinct values?".

Case sensitive (off by default) and Trim (on by default) control how counts are tallied. Off/on means `Apple` and `apple` are the same entry; on/off makes every casing and whitespace variant distinct. Blank lines are always skipped.

Items keep their original order. If `grape` was last in the input, it is last in the output. For items-that-repeat instead, use Find duplicates. For first-copy-of-every-value, use Dedupe.

How to use find unique items in a list

  1. 1Paste your list into the input panel
  2. 2Toggle Case sensitive (default: off) and Trim (default: on) to control the compare
  3. 3Output keeps only items whose total count is exactly 1
  4. 4Items with two or more occurrences are dropped entirely
  5. 5For duplicates instead, use Find duplicates

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 this tool actually does

Count-then-filter-by-1 with normalised comparison.

Keeps items whose count equals 1

Items that appear multiple times are removed entirely, not deduped. That is the key difference from standard deduplication - if `apple` appears three times, it does not appear once in the output; it does not appear at all.

Original order preserved

Singletons appear in the same order they appeared in the input. No sort, no reorder.

Case-insensitive comparison by default

With Case sensitive off, `Apple` and `apple` collapse for counting - if the input has `Apple, banana, apple`, both `Apple` and `apple` are dropped because together they appear twice.

Trim-aware comparison by default

Trim on strips whitespace before counting. `Apple` and ` Apple ` count as the same item; if both appear, both are dropped.

Blank lines skipped

Empty or whitespace-only lines are not counted or emitted. Only real content appears in the output.

Worked example

`apple` and `banana` appear twice - dropped. Only singletons survive.

Input
apple
banana
apple
orange
banana
grape
Output
orange
grape

Settings reference

How each option shapes the output using the sample above.

Setting What it does Effect on the sample
Case sensitive: off (default) `Apple` / `apple` / `APPLE` all count as the same item `apple` still dropped; `orange` and `grape` survive
Case sensitive: on Each casing is a separate item If input had `Apple` (once) + `apple` (once), both are now singletons and survive
Trim: on (default) Whitespace stripped before tallying ` apple ` and `apple` collapse together
Trim: off Whitespace-variant items are distinct ` apple ` and `apple` count separately; both can survive as singletons

FAQ

How is this different from Dedupe?
Dedupe keeps the first copy of every distinct value - `apple, apple, banana` becomes `apple, banana`. This tool keeps only items that appear exactly once - `apple, apple, banana` becomes just `banana`. Pick based on whether duplicates should collapse (Dedupe) or be dropped entirely (this tool).
What is the opposite of this?
Find duplicates - keeps only items that appear 2+ times. Together with this tool they partition your list: singletons go to this one, repeats go to the other, blanks go nowhere.
Does case sensitive affect the output?
It affects what counts as a duplicate. With on, `Apple` and `apple` are separate items - each can be a singleton. With off, they count together - if both exist, neither is a singleton.
Why is order preserved?
So the output reads the same way as your input. If you want alphabetical, sort first with Sort or chain both in a Plus Pipeline.
What happens to blank lines?
They are skipped during counting. An empty string is never a singleton in the output.