Skip to main content
WizTools123
WizTools123
Free Online Tools

Tool Categories


CSV Tools New Tool

Free Online CSV Filter, Keep Only The Rows You Want

Filter the rows of a CSV by what is in its columns, without opening a spreadsheet. Up to three conditions, combined with all or any, comparing text, numbers and dates properly, so greater than 500 means the number rather than the text. Empty values are handled explicitly, and a whole folder can be filtered in one pass.

Free Forever Nothing Uploaded Three conditions Whole folder at once
Free Online CSV Filter, Keep Only The Rows You Want
Share this tool
Advertisement Slot (Top Banner) Google AdSense Unit • Responsive Banner
Bulk CSV Filter Your file is read inside this tab. Nothing is uploaded anywhere.
Drop the CSV files you want filtered The same conditions are applied to every file. Columns are matched by name. Choose files Up to 25 MB per file. Nothing is uploaded.
0%
Or paste it
Reading the file
Rows to keep
Condition one
Condition two
Condition three
Matching
Writing the result

0 files 0 rows in 0 rows kept 0 rows removed

All the rows
Nothing to show yet.
Rows kept
Nothing to show yet.
Buy Us A Coffee

Enjoying WizTools123? Help keep our server infrastructure 100% free and open for everyone.

Buy Us A Coffee
Sponsored Content (Below Tool) Google AdSense Placement

How to Filter a CSV By Column Value

A few steps, and nothing is uploaded.

1
Drop the files in One or many. Columns are matched by name, so files with the columns in a different order still work.
2
Build the first condition Pick the column, pick the test, type the value. Leave the type on automatic unless the column is unusual.
3
Add more if you need them Up to three, combined with all or any. All is an AND, any is an OR, and the difference matters a great deal.
4
Keep or drop, then download The last menu decides whether matching rows are the ones you keep or the ones you throw away. The counters show how many went.

What to Know About Filtering Rows

Comparison types, empty values, and all against any.

Greater than on text does not mean what you want. Compared as text, 89 is greater than 1240, because text comparison stops at the first character. The type is worked out from the column by default, and the comparison type is what makes a numeric filter correct rather than merely plausible.
All against any is the most common mistake. Three conditions joined with all keeps only rows that satisfy every one, which is often nothing at all. Joined with any it keeps rows that satisfy at least one, which is often everything. If a filter returns zero rows, this is the first thing to check.
An empty value matching nothing is a deliberate choice. With the switch on, a blank cell fails every comparison, including "is not Leeds". That is almost always what people mean, because a row with no city is not a row with a city that is not Leeds. Switch it off if blanks should count as not matching the value.
Is one of takes a list. Type the values separated by commas and a row matches if the cell equals any of them. It is the quick way to do what would otherwise need several conditions joined with any.
Matches a pattern uses a regular expression, which is powerful and unforgiving. An invalid pattern cannot match anything, so it is reported rather than silently keeping no rows. If you only need "contains", use contains, which needs no escaping.
Filtering several files filters each one separately. They are not combined. A file that does not have the column named in a condition is reported and passed through unchanged, because quietly emptying a file would be worse.

Key Features & Capabilities

What this tool does, and what it deliberately does not.

Fifteen tests Exact, contains, starts, ends, greater, less, between, empty, one of, and a regular expression.
Typed comparison Numbers as numbers and dates as dates, so greater than 500 means the quantity rather than the text.
All or any Three conditions joined as an AND or an OR, with keep or drop as a separate choice.
Blanks handled on purpose An empty cell can be made to fail every comparison, which is what people usually mean.
A folder at a time The same conditions across every file, columns matched by name, all out as one zip.
Nothing is uploaded Order and customer data is filtered inside this tab and never sent anywhere.

About the CSV Filter

Filtering is the job a spreadsheet does well, which is why a separate tool only earns its place in the cases a spreadsheet handles badly. A file too large to open is one. A folder of twenty exports that all need the same filter is another. A filter that has to run the same way every week, on a file whose columns move around, is a third.

The part that goes wrong in practice is the comparison. Spreadsheet filters inherit whatever type the program guessed for the column, and when a column holds numbers stored as text, "greater than 500" quietly compares text and returns the wrong rows. Nothing warns you, because from the program point of view it did exactly what you asked. Setting the type explicitly, and being told which type was used, is the difference between a filter you can trust and one you have to check by hand.

The other quiet trap is blank cells. Ask for rows where the city is not Leeds and a strict reading includes every row with no city at all, which is almost never what the person meant. Making that an explicit switch rather than an invisible rule means the answer is whichever one you chose, and you know which one that was.

Frequently Asked Questions

Numbers, dates, blanks, patterns and several files.

Usually the conditions are joined with all when you meant any. All requires every condition to be true at once. Check that first, then check the comparison type, since a numeric test on a column read as text often matches nothing.

Use the "is one of" test and type the values separated by commas. That saves building three separate conditions joined with any.

Not by default. An empty value fails every comparison, because a row with no city is not really a row whose city is something other than Leeds. Switch off that option if you want blanks to count as matching.

Yes. Use "is between" with the two dates and set the type to dates. Year first dates are unambiguous; if your dates are day first, switch that on in the reading options so they are read the way you meant.

It is passed through unchanged and reported in the status line. Emptying it silently would be the worse of the two options, since you would have no way of knowing.

Yes, always. It is never treated as data and never filtered out, so the result opens correctly in whatever you load it into.

Other CSV Tools

Advertisement Slot (Bottom Banner) Google AdSense Unit • Responsive Banner