CSV Filter
Filter CSV rows, select output columns and download a focused table without uploads.
This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.
CSV Filter keeps rows matching one literal, empty-cell or exact decimal condition and exports selected columns in your chosen order, entirely in the browser.
How to use it
- 1Paste or load a UTF-8 CSV, choose its delimiter and read the columns.
- 2Choose one condition and arrange the output columns.
- 3Filter, review the matching-row count and preview, then download the CSV.
Example
- Input
- id,amount,status 001,12.50,active 002,9.99,pending 003,20,active Filter: amount at least 10; output id,amount
- Output
- id,amount 001,12.50 003,20
Values keep their original text while the condition uses exact numeric comparison.
What happens to your data
Source CSV values, filter conditions and results stay in this browser. Exported CSV files contain the selected matching data.
Last updated October 2026
Extract the rows and columns you need from a CSV without uploading it or building a spreadsheet formula. Read the column names, choose one filter condition, arrange the output columns, and preview the matching rows before downloading. The CSV Filter supports literal text comparisons, empty-cell checks and numeric comparisons. It treats characters such as .* or [a-z] as ordinary search text rather than a regular expression.
Identifiers and source values remain strings in the output. A numeric filter compares bounded decimal strings exactly, so 9007199254740993 is greater than 9007199254740992 instead of rounding both to the same JavaScript number. Comparing a value numerically does not change how that value is written in the exported CSV.
How it works
Paste text or load an uncompressed UTF-8 CSV, select its delimiter, and press Read columns. The reader requires a header row with distinct nonempty names and consistent field counts. Malformed quotes stop parsing with a location. A BOM is excluded from the first header and disclosed. Changing the source or delimiter discards the read table and any earlier result; read the new columns before filtering it.
One condition applies to one column. Literal conditions include equals, does not equal, contains, does not contain, starts with and ends with. Text matching retains spaces and is case-sensitive by default. Turn that option off to compare lowercased strings. Empty Contains text intentionally matches every row, which lets you use the tool just to select or reorder columns. Is empty checks the empty string; a separate option treats whitespace-only strings as empty. The literal word null is ordinary text.
Numeric conditions accept decimal and scientific-notation text with up to 1,024 digits and an exponent between -1,000 and 1,000. Surrounding whitespace is ignored for numeric comparison, but retained in the exported value. Commas, currency signs, NaN, Infinity, empty cells and values outside those limits do not match a numeric condition; their excluded count is shown. A malformed threshold stops filtering instead of becoming zero. There is no date parsing, currency conversion, user-supplied expression or inferred column type.
Output column controls remove a field from the export, add it back at the end or move it earlier or later. At least one output column must remain. Source row order and duplicate rows are preserved. A zero-match result still produces a valid CSV containing the selected header row. The preview shows at most 10 matching rows and six columns; download includes all matches and selected fields. Changing a condition, value or output order clears the earlier export immediately.
A file or pasted input may contain up to 2 MiB, 10,000 records including the header, 200 columns and 200,000 cells. Output is capped at 10 MiB. It uses UTF-8, the selected delimiter and CRLF record endings. CSV itself has no type declarations, so a spreadsheet may still interpret exported identifiers, dates or formula-like strings on import. The tool discloses formula-marker counts and leaves those strings unchanged. Reading, matching, previewing and exporting happen in this browser.
Worked example: Keep amounts of at least 10 and omit the status column
- Input
- id,amount,status 001,12.50,active 002,9.99,pending 003,20,active Filter: amount at least 10 Output columns: id,amount
- Result
- id,amount 001,12.50 003,20
Two rows match; the leading-zero ID and original amount spellings are preserved.
Common use cases
- Extracting active records using a literal status value
- Finding rows with missing or whitespace-only fields
- Keeping amounts above a threshold without rounding long integers
- Creating a smaller export with selected columns in an importer's required order
Frequently asked questions
Can I use a regex or spreadsheet formula as the filter?+
No. Search text is literal, and conditions come from a fixed list. A query such as .* matches those two characters rather than every value. No JavaScript expression or spreadsheet formula is evaluated.
How are numeric values compared without rounding large IDs?+
The filter reads a decimal sign, digits and exponent and compares their magnitudes and digit strings. It never converts the whole numeric value to Number. Source spelling stays unchanged in the output, including trailing zeros or scientific notation.
Why did some cells not match my numeric filter?+
Only the supported decimal syntax participates. Blank cells, thousands separators, currency strings, NaN, Infinity or values exceeding the numeric bounds are excluded and counted. Clean a source deliberately if those strings represent numbers in your application.
Does an empty-cell filter include spaces or the word null?+
The default checks an actual empty string. Enable Treat whitespace-only cells as empty to include spaces, tabs or other whitespace. The word null remains a nonempty string in either mode.
Can I export columns without excluding any rows?+
Yes. Use Contains text with an empty value, then remove or reorder the output columns. All rows match that condition and stay in source order.
What is downloaded when no rows match?+
A UTF-8 CSV containing the selected header row and no data rows. This makes the result's schema explicit. The zero-match status is shown before download.
Standards and limitations
Related tools
CSV Merger
Combine CSV tables by header name, preserve IDs and download the result locally.
CSV Validator
Check CSV syntax, row widths and headings without silently repairing data. Download a diagnostic report.
CSV Compare by Key
Compare CSV exports by a unique key. Preserve string IDs and inspect added, removed and changed records.
Excel to CSV Converter
Choose any XLSX worksheet, preserve date-times, audit identifier risks and export private CSV locally.