Filter CSV rows — without uploading your file.
Keep or remove rows by text, number, or regex. Chain multiple conditions with AND / OR. Preview the result before you download.
Drop your CSV or Excel file here
File never leaves your device
Everything the Filter CSV tool does
Multiple rule types
Contains, equals, starts with, ends with, greater/less than, is empty — pick the operator that fits your data.
AND / OR logic
Combine rules with "match ALL" for strict filters or "match ANY" for inclusive ones. Common pattern: status = active AND revenue > 1000.
Regex support
Full JavaScript regex for power users. Example: ^USD-\d{4}$ to match invoice IDs.
Keep or remove matches
Toggle between keeping matching rows (inclusive filter) and removing them (exclusion filter).
Preview before download
Click Preview to see how many rows match — no wasted downloads.
Numeric comparisons
Columns that look like numbers are compared as numbers for > / < operators. Text fallback for non-numeric data.
What's the difference between AND and OR logic?
Match ALL (AND): every rule must be true for a row to pass. Example: status = active AND revenue > 1000 keeps only rows where both are true. Match ANY (OR): at least one rule must be true. Example: country = USA OR country = Canada keeps rows from either country.
Can I combine AND and OR in the same filter?
Not with the UI's simple toggle. For complex mixed logic, use Regex mode — a pattern like ^(active|pending)$ in the status column is effectively "status = active OR status = pending" combined with any AND rules outside it.
What does "does not contain" match?
Keeps rows where the text is NOT anywhere in the cell. Example: "email does not contain gmail.com" keeps every row whose email column doesn't have that substring. Case-insensitive by default.
How do greater-than / less-than work on text columns?
If the cell looks like a number (parses cleanly), it's compared as a number. Otherwise, the operator returns false. So a "price" column with "1200" vs "800" compares numerically; a free-text column with "high" vs "low" won't match any > / < rule.
Can I filter by empty cells?
Yes — "is empty" matches rows where that column is blank or only whitespace. "is not empty" matches rows where the column has any real value. Useful for catching incomplete records.
What regex flavor is supported?
JavaScript regex (ECMAScript). Pattern flags: g for global, i added automatically unless "case sensitive" is ticked. Typical patterns: \d+, ^ABC, (apple|banana). If your pattern is invalid, you'll see an error rather than a silent no-match.
Does the tool preview how many rows match?
Yes. Click "Preview" and you'll see the count before committing. Saves you from downloading a file that filtered to zero rows by accident.
Can I keep just the matching rows AND remove them at the same time?
Not in one pass. But you can run the filter twice with opposite "Action" settings — once to keep matches, once to remove them. That gives you two output files (inside + outside the filter).
Are filter rules saved?
Save settings stores the output format and match-logic (AND/OR). Individual rules aren't saved because they reference specific column names that might not exist in your next file.
Does filtering preserve data types?
Yes. Output rows are the original rows, unchanged. Numbers stay numbers, leading zeros stay, dates stay in their source format. The tool only selects rows — it doesn't transform their values.
Can I see what rows will be filtered before downloading?
Yes — the preview updates live as you type a rule. Every time you change a column, operator, or value, the preview table and the match counter above it refresh automatically. You can see the first 10 matching rows plus the total count before committing to a download, so there's no trial-and-error.
How do I filter a CSV for a date range (e.g. only 2024 orders)?
If your dates are in a format like 2024-03-15 (ISO) you can use two rules: date column greater than or equal 2024-01-01 AND date column less than 2025-01-01. Make sure logic is set to Match ALL (AND). For other date formats, the Regex operator works — e.g. ^2024- catches every row starting with "2024-".
Split CSV
Break large files by size, rows, parts, or column.
Merge CSV
Combine multiple files into one, matching headers by name.
Remove Duplicates
Remove duplicates by any columns, keep first or last occurrence.
Filter Rows
Keep or remove rows matching text, number, or regex.
CSV ↔ JSON
Convert either direction, array of objects or NDJSON.
Find & Replace
Bulk edit values across one column or all.
Sort CSV
Sort by one or more columns, text or numeric.
Validate CSV
Check before import, one-click fixes.