Clean a CSV: Remove Duplicates, Blanks & Extra Spaces

Drop your file below to strip out duplicate rows, empty rows, stray leading/trailing spaces, and fully-empty columns — your header stays put, and nothing is uploaded. Preview before and after, then download.

Drop your CSV file here or click to choose a file
…or paste the data straight into the box below

Or paste CSV data:

🔒 Everything runs locally in your browser. Your data is never uploaded, stored, or seen by anyone.

What the cleaner does

This tool tidies the structure of a CSV without touching the meaning of your data. It handles the four housekeeping jobs that clutter exported files — each is optional, and you can run any combination in a single pass:

OptionWhat it removes
Remove duplicate rowsLater exact copies of a row (the first is kept). Optionally case-insensitive.
Trim extra spacesLeading and trailing spaces in every cell ( London London).
Remove blank rowsRows where every cell is empty — the gaps a paste or merge leaves behind.
Remove empty columnsColumns that are empty in every row, header included.

Your header row is always preserved and never treated as a duplicate. If your file has no header, untick “First row is a header” and every row is treated as data.

When you’d use it

Exports pick up cruft fast. Two systems merged into one list leave duplicate contacts; a copy-paste from a web page adds trailing spaces that make "London " and "London" look different to every downstream tool; an append job leaves blank separator rows; a template leaves a run of empty columns on the right. A quick clean before you import into a CRM, a mailing tool, or a database saves the “why are there 12,000 rows when I have 9,000 contacts” conversation later.

Is it safe? What it will and won’t change

The cleaner only does what you tick, and it runs entirely in your browser. It never edits the values inside your cells beyond trimming outer spaces, and it never uploads anything — you can disconnect from the internet after the page loads and it keeps working. The before/after preview and the removal counts let you confirm exactly what changed.

One honest note: “duplicate” means an exact row match (after trimming/case options). If two rows describe the same customer but differ by one character — a middle initial, a different phone — they are not duplicates and are both kept, by design. Fuzzy matching would risk deleting real records, so we don’t guess.
Was the file also damaged by Excel?

Cleaning removes clutter but doesn’t undo Excel’s type-guessing. If numbers are stuck in 1.23E+12 notation or ZIP codes lost their zeros, repair that first, then clean.

Open the CSV repair tool →

Related

Need to change the separator instead of cleaning? Use the CSV ⇆ TSV converter. For a full walk-through of de-duplicating a CSV (including the Excel and Google Sheets ways to do it), see how to remove duplicate rows from a CSV, or browse all guides.

Frequently asked questions

How do I remove duplicate rows from a CSV?

Drop the file into the cleaner above, tick Remove duplicate rows, and click Clean & Download. The first occurrence of each row is kept and later exact copies are dropped; the header is preserved. Tick Ignore case so Apple and apple count as the same.

Will the cleaner change my data or is it safe?

It only does what you tick — remove duplicate rows, drop blank rows, trim spaces, or delete fully-empty columns. It never alters the values inside cells beyond trimming outer spaces, and it runs entirely in your browser, so the file is never uploaded.

Does it keep the header row?

Yes. The first row is treated as a header and is never removed or de-duplicated. If your file has no header, untick First row is a header and every row is treated as data.

Can it remove blank rows and extra spaces at the same time?

Yes — tick any combination and they run together in one pass. The summary afterwards tells you exactly how many duplicate rows, blank rows, and empty columns were removed and how many cells were trimmed.