Skip to content
100% local

CSV row filter

Keep only the CSV rows whose column values match a condition you set.

Input

CSV row filter

Paste CSV or TSV data and this tool keeps only the rows whose values match a condition you set on one column — the way a spreadsheet's filter view works, without opening a spreadsheet. Point it at an export from a database, a form tool or an analytics dashboard and pull out just the rows you need before pasting the result somewhere else.

Pick the column by its header name or its 1-based position, then choose a condition: equals, does not equal, contains, starts with, greater than, less than, is empty, or matches a regular expression. Add a second condition on another column and join the two with AND or OR — for example city equals "Prague" AND age greater than 30. Case-sensitive matching, comparing values as numbers instead of text, and inverting the selection to keep the non-matching rows instead are all separate toggles, and the input delimiter defaults to a comma but accepts a tab, semicolon or anything else your file uses.

The first row is always read as the header, both to resolve a column by name and, when "Keep header row" is on, to carry through into the output; it is never itself tested against a condition. Splitting is a plain delimiter split, so a comma or the chosen delimiter inside a quoted field is treated as a real separator, same as a quick paste-and-check would be. The live tally reports rows in, rows matched and the output size, and turning on "Show match count in output" adds that same count as a comment line at the top of the copyable result.

Everything runs locally in your browser — the CSV never leaves your device, which matters when the file contains customer records or anything else private. Copy the filtered rows, download them as a .txt file, or send the output straight back into the input to layer on another condition.

FAQ

Can I reference a column by its header name instead of a number?
Yes. Type the header text (matched case-insensitively) or a 1-based column number — "city" and "2" both work if city is the second column.
What happens to the header row?
It's read to resolve column names and, by default, kept as the first line of the output. Turn off "Keep header row" to drop it, or turn on "Invert selection" to keep the rows that don't match instead.
How do the two conditions combine?
Set a second column, condition and value, then choose AND (both must match) or OR (either can match). Leave the second condition set to "None" to filter on a single column.
Does "Compare as numbers" affect every condition?
It applies to both conditions at once, so equals, greater-than and less-than are parsed as numbers on whichever column they run on. Leave it off for text columns like names or cities.
Is my CSV data uploaded anywhere?
No. Filtering runs entirely in your browser — the file never leaves your device.