About this tool
Move from raw CSV input to a reviewable data export while keeping parse errors, row counts, inferred types, and potentially executable spreadsheet cells visible.
CSV Viewer & Cleaner loads a CSV file or pasted text of up to 10,000,000 characters into a Web Worker running Papa Parse 5.5.3 and shows what is really inside. The source column profile lists each header with its inferred type and its unique and empty counts, the preview shows the first 100 rows, and parse errors from broken quoting or ragged rows are surfaced instead of silently patched. From there you can filter on one column, deduplicate on another, sort with numeric-aware ordering, and export the result as CSV, JSON, or NDJSON. Each export is re-parsed before the download button unlocks, so the saved file opens the way it was built. It also flags cells beginning with =, +, -, or @ that spreadsheets would treat as formulas.
- Uses Papa Parse in a disposable worker for quoted fields, embedded line breaks, delimiter detection, and bounded structural checks.
- Profiles column type, unique and empty values, assigns deterministic keys to empty or duplicate headers, and applies filtering, stable numeric-aware sorting, or first-row deduplication.
- Detects formula-like spreadsheet cells, optionally neutralizes export values, and reparses every CSV, JSON, or NDJSON output before enabling download.
How to use CSV Cleaner
Paste into CSV input, open a file, or click Load sample. Set Delimiter to Auto detect unless you know the file uses a semicolon, tab, or pipe, then press Analyze and build export. The column profile and metrics appear: Input rows, Output rows, Filtered, and Duplicates removed. Choose a Filter column and type text into Filter contains for a case-insensitive substring match, pick a Deduplicate by column to keep the first row per value, and set a Sort column with a direction. Select CSV, JSON, or NDJSON as the Export format and tick Neutralize formulas if the file is headed for Excel or Sheets. Any change marks the result stale, so click Build updated export, check the Output preview, and use the Download button for the chosen format.
When this tool is useful
- A marketing coordinator removes duplicate email addresses from a webinar export before loading it into the mailing platform.
- A developer converts a 40,000-row CSV to NDJSON so it can be streamed into a bulk import endpoint.
- An analyst checks whether an ID column is truly unique before using it as a join key in a report.
- A support lead filters a ticket export down to rows containing one customer's domain for a case review.
- A finance assistant inspects a bank export whose quoted descriptions contain commas and line breaks that broke another tool.
Practical tips
- Rows that are entirely blank are dropped during parsing, so an output count slightly below the input count is not necessarily a filter effect.
- Deduplication runs before sorting and keeps the first row in source order for each value, comparing exactly, so trailing spaces or case differences count as distinct.
- Sorting is numeric-aware and stable, so 2 sorts before 10 in a text column and rows that tie keep their original order.
- Empty or duplicated headers get generated keys so JSON output stays usable; rename them in the source if the keys need to be meaningful.
- Ten seconds of worker time is the ceiling. If a large file times out, split it, or narrow the input before running the transformation.
Examples you can test
Load an example, compare the result with the expected output, then replace it with your own input.
Deduplicate a lead list
Example input
leads.csv with 1,240 rows and repeated email values; Deduplicate by email; Export format CSV
Expected output
Output rows 1,102, Duplicates removed 138, and a CSV that reopens with the same 1,102 rows
Because the first occurrence wins, sort the source by date in another tool first if the newest record is the one you want to keep.
Convert for a bulk import
Example input
products.csv with headers sku, name, price and a semicolon delimiter
Expected output
NDJSON with one object per line such as {"sku":"A100","name":"Lamp","price":"24.90"}Values stay strings in JSON output; convert price to a number in the importer rather than expecting the CSV to carry types.
Validation checklist
- Clear every parse error before trusting the row counts.
- Compare Input rows and Output rows against what your filter should have removed.
- Open the Output preview and check quoted fields survived intact.
- Turn on Neutralize formulas before sending the export to spreadsheet users.
- Open the downloaded file in its destination system and re-count rows.