Filter CSV rows
Keep CSV rows matching a text or numeric condition and preview the matching rows immediately.
How it works & useful details
Formats & limits
Import UTF-8 text up to 1.5 MB or paste up to 500,000 characters. CSV accepts comma, tab, semicolon or pipe separators, doubled quotes and line breaks inside quoted fields. All rows must have the same number of fields. A final line ending is ignored; interior blank rows are real rows. A leading UTF-8 BOM is removed. Up to 10,000 rows including the header, 100 columns, 100,000 cells and 50,000 characters per cell. Output is limited to 2,000,000 characters.
Live previews pause above 50,000 input characters; exports still process the full bounded input. The table pages through 15 rows and 12 columns at a time. Export includes every result row. Processing is synchronous and bounded; cancellation is checked before and after a transformation.
Data details
Text comparisons use Unicode code-unit order, with optional case folding. Numeric sorting/filtering requires finite numbers in every selected cell and uses JavaScript decimal precision; large integer identifiers need text mode. No trimming or spreadsheet formulas are evaluated.
CSV-to-JSON defaults to strings. JSON object export requires unique, nonempty headers. JSON input uses object keys in discovery order (integer-like keys follow JSON property order), missing properties become empty cells, and arrays must be rectangular. Primitive arrays get one “Value” column. Null becomes the literal text “null” by default; nested objects/arrays become compact JSON strings. Empty strings, missing values and optional empty nulls are indistinguishable in CSV. Mixed row shapes are rejected. JSON numbers use JavaScript precision; unsafe integers are rejected, so quote large IDs. Duplicate JSON names use the last value.
Transpose allows up to 100 source rows including the optional header, and exports all transposed cells as data. Spreadsheet formula protection is opt-in: it prefixes formula-like cells with an apostrophe, visibly changing their data. Spreadsheet programs differ; review results before opening them.
About this tool
Filter CSV rows keeps only the rows that match a text or numeric condition on a chosen column. It is a quick way to extract a subset of an export, such as rows above a threshold or entries containing a term.
The matching rows preview instantly as you adjust the condition, and the export contains only those rows. Filtering is local and leaves your source file untouched.
How to use it
- Import a CSV file or paste the text.
- Choose the column and whether the comparison is text or numeric.
- Enter the condition and check the live preview.
- Export the filtered rows as CSV.
Worked examples
On the sample table (Name, Team, Score, Active):
- Team equals "Design" keeps 3 rows: Ada, Sam, and Ada again.
- Score greater than 80 keeps 4 rows and removes Sam (76).
- Name is not empty removes rows where the Name cell is blank, a quick way to drop incomplete records.
The number of removed rows is reported alongside the result, so you can check the filter did what you intended.
Text and numeric conditions
Contains, equals, starts with, and ends with compare text. Turn off case sensitivity to match "design" and "Design" alike. Greater than and less than compare numbers, so 100 is greater than 80 even though "100" sorts before "80" as text. Numeric conditions need a number in every cell of the chosen column. Blanks and values with thousands separators are reported as errors rather than silently dropped.
Filters apply to one column at a time. To combine conditions, such as Team equals Design and Score greater than 80, run the filter twice. The second pass works on the first result, which acts as a logical AND.
Frequently asked questions
Why does a numeric filter reject some rows?
Numeric comparisons require every value in the selected column to be a finite number. Rows with text in that column are reported instead of being coerced.
Is comparison case-sensitive?
Text comparison is case-sensitive by default; matching uses Unicode code-unit order.
What are the limits?
Up to 10,000 rows, 100 columns, and 100,000 cells per run.
Can I use regular expressions?
No. The conditions are literal. For pattern matching, open the file in the spreadsheet editor or pre-process the column with the regex tools.
