Clean Text · browser-local
Filter Text Lines
Filter a list, log, or export by whole lines: keep only the lines that contain a phrase, or remove them. GlyphSift matches the exact text you type — not a pattern — and shows both the kept and the removed lines with their original line numbers so nothing disappears silently.
- Index state
- draft
- Reviewed
- 2026-09-16
- Input limit
- 5,000 graphemes
Filter Text Lines
2 lines
1 paid:1 3 paid:3
1 lines
2 pending:2
Good fit
Use this tool when
- You want to keep or drop rows that mention a word or code.
- You need to see which lines were removed, not just the survivors.
- You are cleaning a log, name list, or exported report.
Keep the original
Avoid it when
- You need to change characters inside a line — use Find and Replace.
- You need regular expressions or column logic in this first version.
- Matching should ignore whole-line context and act on substrings within a line.
Reviewed truth vectors
Examples that expose the edge cases
paid:1
pending:2
paid:3Kept (2): paid:1 / paid:3Keep lines containing "paid:" returns lines 1 and 3; line 2 moves to Removed.
error: disk
ok: cpu
error: netRemoved (2): error: disk / error: netSwitch to Remove matching lines to drop every line containing "error:".
Alpha
alpha
BETACase sensitive keeps only "Alpha"With case sensitivity on, "Alpha" no longer matches "alpha".
Transparent implementation
How it works
- 01
Split the text into lines, keeping their original 1-based line numbers.
- 02
Test each line for the literal match text, optionally case-sensitive.
- 03
Route each line to Kept or Removed; an empty match keeps every line unchanged.
Known limitations
What the result cannot promise
Matching is literal text, not a regular expression, in this first version.
The match is case-insensitive unless you turn on case sensitivity.
An empty match text is treated as a no-op and keeps every line.
Questions before copying
Frequently asked questions
Does an empty match delete everything?
No. An empty match text is a deliberate no-op: every line is kept and nothing is removed, so a blank field cannot wipe your list.
Can I use a regular expression?
Not in this version. The match is literal text so results are predictable. Character-level edits belong in a find-and-replace tool.
Why do the results show line numbers?
The numbers are the original positions in your input, so you can trace a kept or removed line back to where it came from.
Experience, expertise & trust
How we verify this tool
Automated evidence
- Tool-contract & coverage suite30 deterministic cases
tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.
Run in: node --test after a production build (vinext build) - Rendered-HTML suite12 deterministic cases
tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.
Run in: node --test against the built dist/server bundle - Transform & cleanup suite21 deterministic cases
tests/transform-cleanup.test.mjs exercises each deterministic cleanup and transform action against whitespace, duplicate, ordering, casing, and HTML-to-text edge cases.
Run in: node --test, no network, no randomness
Standards this tool follows
- UAX #29: Unicode Text Segmentation
Grapheme and word boundaries underpinning line and whitespace operations.
- UAX #14: Unicode Line Breaking Algorithm
Line-break semantics behind hard-wrap repair.