Skip to the tool
ViewCSV
Files stay on your device

Filter CSV rows

orders.csv· SAMPLE DATA15 rows · 8 columns
Matching rows
15 of 15 rows match.
Result
#order_idcustomercityproductquantityunit_priceorder_datestatus
1001041Liam GarciaAustinDesk lamp6142.722026-01-09paid
2001042Mary ClarkSeattleMonitor 27"5210.762026-02-03shipped
3001043Henry TaylorDenverNotebook A51143.742026-03-25pending
4001044Lucas SmithChicagoMonitor 27"5137.002026-04-25shipped
5001045Noah DavisSeattleUSB-C cable7·2026-05-11refunded
6001046Emma WilliamsPortlandNotebook A56166.442026-06-10pending
7001047 Henry Taylor New YorkMonitor 27"757.532026-07-14pending
8001048Lucas JonesAustinDesk lamp7194.192026-08-03pending
9001049Olivia WilliamsAustinUSB-C cable5190.032026-09-07pending
10001050Mary WilsonNew YorkChair, ergonomic861.042026-01-15pending
11001051Noah WilliamsPortlandChair, ergonomic261.372026-02-25refunded
12001052Mia SmithBostonMonitor 27"5231.422026-03-09refunded
13001053Ava GarciaBostonUSB-C cable3201.242026-04-05pending
14001054Mary ClarkBostonDesk lamp535.492026-05-12pending
15001043Henry TaylorDenverNotebook A51143.742026-03-25pending

Input: 15 rows. Result: 15 rows · 8 columns.

Open or paste a CSV file, choose a column, a condition and a value, and the matching rows appear in the result as you type. Combine up to 30 conditions with All conditions or Any condition, then keep or remove the matches and download them as CSV. Cell text is never changed: 00412 stays 00412. Files larger than 25 MB are filtered in streaming mode and downloaded without a preview. The file is processed in your browser, not uploaded.

How to filter rows in a CSV file

  1. Open a .csv, .tsv or .txt file, drop it on the tool, or paste rows. The delimiter and a UTF-8 or UTF-16 byte-order mark are detected; choose another delimiter or a legacy encoding under Import settings.
  2. Pick a Column (or Any column), a Condition and a Value. Most conditions are ignored in the preview until you enter a value.
  3. Select Add condition for more rules and set Rows must match to All conditions (AND) or Any condition (OR).
  4. Under Matching rows, choose Keep them or Remove them. The note above the result shows how many rows match.
  5. Select Download CSV, Copy, or Open in editor to keep working on the result.

To split a file into one part per value instead of keeping a subset, use Split CSV files. To reorder the rows you kept, continue with Sort CSV rows.

How each condition compares values

contains, does not contain, is exactly, is not, starts with, ends withCompare the cell text as written. Upper and lower case are treated alike unless Match upper and lower case exactly is on. Spaces count: Madrid is not exactly Madrid.
is one of (list), is none of (list)Enter Values, one per line. Commas inside a value are fine; blank lines in the list are ignored. Each line must equal the whole cell.
matches regular expressionA JavaScript regular expression in Unicode mode, tested against the raw cell. It matches anywhere in the value unless you anchor it with ^ and $. Case is ignored unless Match upper and lower case exactly is on. An invalid pattern shows an error instead of a result.
is empty, is not emptyA cell that contains only spaces counts as empty.
number greater than, number at least, number less than, number at most, number betweenPlain decimal numbers such as 12, -3.5, 0.25 or 1e3, compared exactly, so 9007199254740993 is greater than 9007199254740992. Thousands separators, currency symbols and units are not numbers, so 1,250.00 or $40 never match. Blank and non-numeric cells never match a number condition. From and To are inclusive, in either order.
date before, date after, date betweenDates in the selected Date format. With ISO 2024-03-31, cells may also carry a time, fractional seconds and a Z or +02:00 offset, which is converted to UTC; times without an offset are compared as written. A date-only To value includes that whole day. Cells that aren't valid dates in the format never match.

Set Decimal separator to Comma 1,5 for files where 2,25 means two and a quarter; with that setting a value written 2.25 is no longer a number. Day first 31/03/2024 and Month first 03/31/2024 accept /, . or - between the parts and one- or two-digit days and months.

Searching every column at once

With Any column, a positive condition such as contains keeps a row when at least one cell matches. A negative condition (does not contain, is not, is none of (list), is not empty) must hold for every cell in the row, so “does not contain test” keeps only rows where no column mentions it.

Remove them inverts the whole combination, not each condition: with All conditions, it drops only rows that satisfy every rule.

Quoted values, IDs and extra columns

  • Quoted delimiters and line breaks inside a value are read per RFC 4180; a multiline cell is still one row, and is written back quoted.
  • Matching rows are written exactly as read. Leading zeros, long IDs and spaces are kept; nothing is converted to numbers or dates in the output.
  • A blank header is written as Column 3, and a repeated header as name (2), so every condition can name one column.
  • A row with more values than the header gets extra columns named Column 5, Column 6…; a shorter row is padded with empty values, which is empty then matches.
  • The download keeps the file’s delimiter, line endings and final newline, and its encoding when that is UTF-8 (with or without a byte-order mark), UTF-16 LE or Windows-1252; other encodings are saved as UTF-8.

Filtering files larger than 25 MB

Larger files are not loaded into memory, so there is no result preview. The tool reads only the start of the file to list its columns; set the conditions, then Filter and download reads the whole file twice in a background worker: once to find every column, once to test each row. Matching rows download as CSV with the original delimiter, quotes only where needed, CRLF line endings and UTF-8 encoding. A progress bar and Cancel are shown while it runs, and the note afterwards says how many rows matched.

In this mode every condition is applied exactly as entered, including empty ones: an empty contains matches every row and an empty number condition stops with an error. Fill in or remove each condition before you run it. Large files are read as UTF-8 unless they start with a UTF-16 byte-order mark.

Why rows don’t match a filter

  • No rows match a number condition. Check the values for thousands separators (1,250), currency or units, or a decimal comma with Point 1.5 selected. Use matches regular expression to find the odd values, or clean them in the CSV editor.
  • A date condition skips rows. The cells are in another format than the selected Date format, for example 03/31/2024 while ISO 2024-03-31 is chosen.
  • “is exactly” misses rows that look identical. The cells have extra spaces or invisible characters. Use contains, or trim them first with Clean CSV data.
  • Everything is in one column. The delimiter was guessed wrong; choose it under Import settings and open the file again.

Filter limits and privacy

Up to 30 conditions. Files up to 25 MB, 100,000 rows, 250 columns and 2 million cells open with a live preview; larger files are filtered in streaming mode, and one downloaded result is capped at 4 GB.

Filtering runs in your browser. The CSV is not uploaded to a server.

Example: orders of at least 100 after 1 March 2024

Orders kept with two conditions under All conditions: total number at least 100, and ordered_on date after 2024-03-01 (ISO). Order 00414 fails the date, 00413 the amount, and 00415 has a blank total, which never matches a number condition. Leading zeros and the quoted names are unchanged.

CSV
order_id,customer,total,ordered_on
00412,"Lopez, Ana",129.90,2024-03-02
00413,Kim Lee,48.00,2024-03-05
00414,"Nguyen, Bao",1250,2024-02-28
00415,Sara Ali,,2024-03-09
00416,"Okafor, Chidi",310.5,2024-03-11
Filtered CSV
order_id,customer,total,ordered_on
00412,"Lopez, Ana",129.90,2024-03-02
00416,"Okafor, Chidi",310.5,2024-03-11

Questions and answers

How do I keep rows where a column is one of several values?

Choose is one of (list) and put each value on its own line. It matches whole cells, ignoring case unless Match upper and lower case exactly is on.

Can I combine AND and OR in one filter?

Not in one pass: all conditions are combined with either All conditions or Any condition. For mixed logic, run one filter, select Open in editor or download the result, and filter it again. A list or regular expression often replaces several OR conditions on one column.

Does filtering change my values?

No. Numbers and dates are parsed only to compare them; matching rows are written with exactly the text they had.

Standards and references