CSV Cleaning Studio

Clean messy CSV files — duplicates, blanks, stray spaces and mixed dates — entirely in your browser.

Runs in your browser. Nothing is uploaded — your input is processed on this device and discarded when you close the tab.

Clean a file

Drop a CSV file here or click to browse. Files up to 20 MB and 200,000 rows are accepted, and the file is read on this device only.

Pasted data is parsed with the delimiter and encoding options below, exactly like an uploaded file.

Changing the delimiter or encoding after a file has loaded re-reads the original file with the new setting, so a wrong first guess costs nothing.

Columns

Rename a column by editing its name, untick Keep to drop it, tick Dedupe key to mark it as part of the duplicate check, and use the arrow buttons to change the column order. The badge beside each name is the data type the studio detected from the values themselves. Nothing here takes effect until you choose Apply operations.

Cleaning operations

Operations always run together, in a fixed order: column keep, rename and reorder first, then trimming, case changes, date standardisation, missing-value handling, the row filter, and finally deduplication. The fixed order matters: duplicate detection sees the already-trimmed, already-standardised values, so two rows that differ only by stray spaces are still recognised as copies.

Row filter

Only rows matching the condition are kept. Greater than and less than compare numbers numerically when both sides are numeric. Leave the column unchosen to skip filtering.

Deduplication uses the columns you marked as Dedupe key in the column list above. If no column is marked, deduplication is off: two rows count as duplicates only when every key column matches, and the first occurrence is the one kept.

Change summary

No data loaded yet. Load a file or paste data above, and each Apply will report exactly what it changed here.

Preview — before

Before — first 200 rows

Preview — after

After — first 200 rows

Export

The apostrophe is added to the downloaded file only — your on-screen data is never altered by this option. See the FAQ below for why it matters.

“Open in Chart Builder” hands the cleaned table to the Chart Builder in this browser only (via local storage) — nothing is uploaded.

How to use the CSV Cleaning Studio

  1. Load your data. Drop a CSV, TSV or plain-text file onto the dropzone, click it to browse, or paste raw CSV text into the box and choose Load pasted data. The status line confirms the file name, the delimiter and encoding that were detected, and the row and column counts.
  2. Check the parse. If columns arrive merged into one, or accented characters look wrong, change the delimiter or encoding selectors — the original file is re-read with the new settings, so you can experiment freely.
  3. Shape the columns. Rename headers so they are consistent, untick Keep on columns you do not need, reorder with the arrow buttons, and mark the Dedupe key columns — an email address, an order number, or any combination that should be unique.
  4. Choose operations. Switch on trimming, pick a case style for text columns, pick one output format for dates, decide how empty cells are handled, and optionally set a single row filter.
  5. Apply and inspect. Choose Apply operations, then read the change summary: rows before and after, duplicates removed, cells changed, and a note for every fill, filter and unrecognised date. Compare the Before and After previews, which show the first 200 rows of each state.
  6. Refine or download. Apply again with different settings, use Undo to step back one Apply at a time, or Start over to return to the file exactly as loaded. When the After preview looks right, download the cleaned CSV.

Worked example: a messy sign-up export

The sample below is a small customer sign-up export with the faults real exports usually have: names padded with spaces, one person entered twice, city names typed in three different case styles, two missing prices, and signup dates written in three different formats. Load it and clean it with the tool itself:

With the sample loaded, try this cleaning pass. Tick Dedupe key on the Email column, tick Trim, set text case to Title Case, set the date format to ISO, set missing values to Fill with the column median, then choose Apply operations. The verified result is:

Undo the pass and try a different missing-value strategy — for example filling with the mean — and the summary will show how the two choices differ before you commit to either in the downloaded file.

What the CSV Cleaning Studio is, and why it matters

A CSV file looks simple — rows of values separated by commas — but that simplicity is exactly why messy files cause so much quiet damage. Almost every system that handles lists of people, products, orders or payments can export a CSV, and almost every other system can import one, which makes CSV the hand-off format between tools that were never designed to agree with each other. The disagreements are small and human: a name typed with a trailing space, the same customer exported twice, a date written as 05/01/2024 by one system and as January 5 by another, a price left blank because nobody filled in the field. Individually each fault looks harmless. Together they break the things people actually do with the data. A mail merge greets “ Alice” with a visible gap. A pivot table counts London, london and LONDON as three different cities. A duplicate row mails the same person twice, or pays a supplier twice. A blank price silently distorts an average. A column of mixed date formats sorts into nonsense and defeats every filter built on it.

Cleaning a file by hand in a spreadsheet is possible, but it is slow, hard to repeat and easy to get half right: you fix the duplicates you notice, trim the cells you happen to select, and have no record afterwards of what changed. The CSV Cleaning Studio takes the opposite approach. It applies a small set of well-understood operations — trimming, case normalisation, date standardisation, explicit missing-value strategies, one clear row filter and key-based deduplication — to the whole file at once, in a fixed, documented order, and then tells you precisely what it did: how many rows went in and came out, how many duplicates were removed, how many cells changed, and a plain-language note for each fill, filter and value it could not interpret. That report is the point. A cleaned file you cannot audit is just a different file you have to trust; a cleaned file with a change summary is one you can check, defend and reproduce next month when the same export arrives again.

The studio also respects the data it is given. Column types are detected from the values, so a case change never rewrites email addresses or numbers, a date operation only touches columns that genuinely hold dates, and a mean or median fill is calculated only from a column’s own numeric values — if a column has none, the tool says so instead of inventing a plausible-looking number. Everything runs in your browser: the file is read on your device, never uploaded, and disappears when you close the tab, which makes the tool safe to use on customer lists, payroll exports and other files that should never be sent to a stranger’s server.

Common errors and limitations

Frequently asked questions

Is my file uploaded anywhere?

No. The file is read and parsed entirely in your browser, on your device, using the PapaParse library served from this site. Nothing is sent to a server, no copy is kept, and closing the tab discards everything. That is why the tool is safe for customer lists, order exports and other files you would not email to a third-party cleaning service.

How does deduplication decide which rows are duplicates?

You decide, by marking one or more columns as the Dedupe key — typically an email address, account number or order ID. Two rows are duplicates when all of their key columns match exactly, and the first occurrence is kept. Deduplication runs last, after trimming, case and date changes, so rows that differ only by stray spaces or date formatting are still caught. If you mark no key column, deduplication is switched off entirely.

Should I drop rows with missing values, or fill them?

It depends on what the empty cell means. If a missing value makes the row useless — an order with no order number — dropping is honest. If the value is merely unknown and the row still matters, filling keeps the row usable: a fixed value such as “Unknown” is clearest for text, while the median is usually the safest fill for numbers because a few very large or small values cannot drag it the way they drag a mean. The change summary always states how many cells were filled, in which column, and with what, so the choice stays visible to anyone who later questions the data.

What is formula injection, and why does the export guard against it?

Spreadsheet applications treat any cell beginning with =, +, − or @ as a formula. If a name, address or comment in your data happens to start with one of those characters — or was placed there deliberately by whoever supplied the file — opening the CSV can execute it as a formula rather than showing it as text. Formula-safe export prepends an apostrophe to such cells in the downloaded file only, which forces spreadsheets to treat them as plain text. Your on-screen data is never changed by this option.

Can I undo a cleaning pass, or try different settings?

Yes. Every Apply is recorded, and Undo steps back one Apply at a time, up to twenty steps. Start over restores the file exactly as it was loaded and clears that history, but note that it cannot undo a re-parse: if you changed the delimiter or encoding, the file was re-read at that point and that reading becomes the new starting point. Nothing is final until you download, so experimenting is free.

Why is there a 20 MB and 200,000-row limit?

Because the work happens in your browser tab, the practical limits are your device’s memory and patience rather than a server plan. Twenty megabytes and two hundred thousand rows cover the overwhelming majority of everyday exports while keeping parsing and previews responsive on ordinary hardware. Larger datasets are better handled by a database or a scripting tool — and if your file is refused, splitting it, cleaning the parts and recombining them produces the same result.

Related tools

Related articles

Why Your Clean-Looking CSV Fails on Import

Trailing spaces, hidden duplicates, and inconsistent headers make clean-looking CSVs fail. Find the invisible problems before import.

By AtoZTools Editorial Team · Last reviewed 2026-10-24