Filter list lines

Paste a list and keep only the lines matching your pattern - or with Invert on, drop them. Five match modes (Contains, Equals, Starts with, Ends with, Regex), optional whole-word boundary, case sensitivity toggle.

Input
Ready
Output
Live

A line-level match filter

Every line is tested independently against your pattern. Contains (default) is a substring check. Equals is a strict whole-line match - the line must equal the pattern exactly, no trimming applied. Starts with / Ends with check only one end of the line. Regex treats the pattern as a JavaScript regular expression.

Whole word wraps your pattern in word-boundary anchors for Contains and Equals modes - `cat` matches `the cat sat` but not `category`. Ignored in Starts/Ends/Regex modes. Case sensitive (off by default) flips whether `Apple` matches `apple`.

Invert flips the keep/drop decision - same pattern, opposite outcome. Invalid regex clears the output and surfaces the error in the status bar, so malformed patterns are obvious rather than silently broken. For paragraph-level (blank-line-separated) filtering, use Filter paragraphs instead.

How to use filter list lines

  1. 1Paste your list into the input panel
  2. 2Type your Match pattern (text or regex)
  3. 3Pick Mode: Contains (default), Equals, Starts with, Ends with, or Regex
  4. 4Toggle Whole word to require word-boundary matches (Contains/Equals only)
  5. 5Toggle Invert to drop matches instead of keeping them

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 filter actually does

Line-by-line test with five modes and three toggles.

Five match modes

Contains (substring), Equals (strict whole-line match, no trim), Starts with, Ends with, Regex. Pick the one that matches how you mentally describe the filter.

Whole-word boundary for Contains/Equals

Wraps your pattern in `\b…\b` to match only complete words. `cat` matches in `the cat` but not in `category`. Ignored in Starts/Ends/Regex - for those, encode word boundaries yourself.

Regex mode for complex patterns

Treats the pattern as a JavaScript regex. Standard syntax - groups, alternation, lookaheads. Invalid regex clears the output (empty result) and surfaces the error in the status bar.

Invert toggle for drop-matches

Flips the decision - when on, lines NOT matching the pattern are kept. Useful for removing known noise without rewriting the pattern as a negation.

Case sensitivity toggle

Off (default) makes matches case-insensitive. On distinguishes `Apple` from `apple`. Applies to all five modes.

Common use cases

Concrete scenarios where a line-level filter beats manual scanning.

Log file triage

Paste an Nginx / Apache / application log and keep only lines containing `error`, `warning`, or `404`. Switch to Regex mode with `error|fatal|5\d\d` to match multiple severities at once.

Subset extraction from mixed exports

CRM or product exports often mix active and archived rows on one sheet. Filter to keep only active entries (`status: active`) before handing off. Chain Dedupe if the export has repeat rows.

Noise removal via Invert

Toggle Invert and set a pattern matching stopwords, placeholder rows, or known junk (`TEST_DATA`, `DELETED`) to drop them from the list in one pass. Same power as a negated grep.

Domain-specific sweeps

Filter an email list by domain (`@yourco.com`), URLs by host (`github.com`), or IDs by prefix (`user_`). Specialized sibling pages - Find emails, Find URLs - ship with pre-tuned defaults for those shapes.

Worked example

Default Contains mode, pattern `apple`, case-insensitive.

Input
apple
banana
cherry
apple pie
banana split
Output
apple
apple pie

Settings reference

How each option shapes the filtered output using the sample above.

Setting What it does Effect on the sample
Mode: Contains + pattern `apple` Keeps lines containing `apple` as a substring `apple` + `apple pie`
Mode: Equals + pattern `apple` Keeps only lines that equal the pattern exactly (no trimming) `apple` only. A line ` apple` (with leading space) would NOT match.
Mode: Starts with + pattern `apple` Keeps lines starting with `apple` `apple` + `apple pie`
Mode: Regex + pattern `^a.+e$` Keeps lines matching the regex `apple` + `apple pie`
Whole word + Contains + `apple` Requires word-boundary match `apple` + `apple pie` (both have `apple` as a whole word)
Invert: on Drops matches instead of keeping them `banana` + `cherry` + `banana split`

FAQ

What happens when my pattern is blank?
The input passes through unchanged - nothing is filtered. The status bar says "No pattern - input returned unchanged."
Does Whole word work with Starts/Ends/Regex modes?
No - it is applied only in Contains and Equals mode, where wrapping in `\b…\b` is meaningful. In Regex mode you can add `\b` anchors manually; in Starts/Ends modes the semantics already anchor to one end of the line.
What if my regex is invalid?
The tool shows the regex error in the status bar and returns empty output. Fix the pattern to resume.
Is this case-insensitive by default?
Yes. Toggle Case sensitive on when capitalization matters - e.g. filtering for proper nouns or when `API` and `api` should be distinct.
What is the difference between Filter and Delete?
Filter keeps matching lines (or drops them with Invert). Delete drops matching lines with a smaller option set and is framed as "remove these from my list". Functionally similar - pick by which framing matches your intent.