Developers do this with grep. Everyone else ends up scrolling a long list and copying out the lines they want one at a time. This tool is for those people, and for developers without a terminal handy: paste your lines, say what to look for, and keep or delete everything that matches.
Typical jobs
A list of 3,000 URLs where you only want the ones containing “/blog/”. An error log where only lines with “ERROR” matter. A customer export where you want to throw away every row mentioning “test”. A set of sentences where you want those with a particular word. A to-do list where finished items are marked “done”. Pick “Keep matching lines” to get just the matching lines, or “Delete matching lines” to get everything else.
The stats show how many lines went in and how many came out, which is a quick sanity check on whether your keyword was too broad or too narrow.
Matching
Matching is a plain “contains” test, and it ignores case unless you tick “Match case”. So “apple” matches “Apple pie” and “pineapple” alike. If you need to match only whole words, tick the regular expression box and write \bapple\b.
Regular expressions, briefly
Tick “Use regular expression” for more power. A few patterns cover most needs:
apple|banana matches lines containing either word. ^Error matches only lines that begin with “Error”. \d{4}$ matches lines ending in four digits. ^\s*$ matches blank lines, which is a roundabout way of deleting them. If your pattern is not valid, the tool says so rather than failing quietly.
Each line is tested separately, so patterns that depend on several lines at once, such as “line A followed by line B”, will not work here.
Sensible follow-ups
The result of a filter is often a list that needs more work. Cleaning duplicates is next, with remove duplicate lines, and ordering is sort lines. If you only want a certain kind of item out of the text, not whole lines, such as addresses or numbers, then the email extractor, URL extractor or number extractor pull just that part. To change matching text rather than delete lines, use find and replace. Our guide to pulling duplicate lines out of a list shows a typical clean-up from start to finish.
A worked example with a log file
Suppose a log contains thousands of lines like “2026-10-21 14:02:11 ERROR payment failed for order 8812”. To keep only errors from one day, switch on regular expressions and use ^2026-10-21.*ERROR: it matches lines that start with that date and contain the word ERROR somewhere after it. To throw away noise instead, choose “Delete matching lines” with a pattern such as DEBUG|heartbeat. Check the line counts under the result to confirm the filter did what you meant, then paste the survivors into your notes or an issue report.