Loading...
Loading...
Clean a messy CSV in one click — invisible spaces, blank rows, duplicate rows, and untidy headers, fixed before you download. The file never leaves your computer.
A value can look identical on screen and still not be equal. Leading and trailing spaces and non-breaking spaces (character code 160) are removed from every cell, which is the usual reason a VLOOKUP or a match returns nothing.
Empty lines left by an export split tables in two. Sorting, filters, and formulas all stop at the first blank row, so removing them is the first repair in most cleanup jobs.
Rows are compared after the trimming step, so "Ann" and " Ann" count as the same record. That catches the near-duplicates a plain exact-match dedupe misses.
Columns with no data in any row are dropped, and header names are trimmed, with double spaces collapsed and unnamed columns given a column_1, column_2 name instead of a blank.
The download can include a UTF-8 byte order mark. Without it, Excel on Windows often shows "Müller" instead of "Müller". The checkbox is on by default because it causes fewer surprises.
Pick your rules, see the count of what changed, and download the cleaned file. No install, no upload, works on any device — and it takes seconds rather than minutes.
The right answer when the same export arrives every month. Power Query records your cleaning steps once, then replays them on refresh. See our Power Query tutorial.
Three lines for a repeatable cleanup:
df = pd.read_csv("dirty.csv")
df = df.map(str.strip).dropna(how="all").drop_duplicates()Always keep the original export. Deduplication and placeholder removal both delete rows, and you cannot undo a download once you have overwritten the source.
Two orders from the same customer on different dates are not duplicates. If two rows can be legitimate, dedupe on a key column in a spreadsheet instead of dropping whole rows here.
A number stored as text with a trailing space is still text. After trimming, set the column type in Excel or Power Query — or ask the AI CSV analyzer what it found.
A European export often uses semicolons. This tool detects the delimiter before parsing, and always writes standard comma CSV on download. To keep another delimiter, use the CSV delimiter converter.
The files that need cleaning are usually the ones that should not leave your laptop: customer lists, payroll exports, invoices. This tool reads the file with the browser FileReader API and cleans it in memory, so there is nothing to log, cache, or leak.
| This tool | Typical online cleaner | |
|---|---|---|
| File leaves your device? | No | Yes — uploaded to their server |
| Works offline once loaded? | Yes | No |
| Signup required? | No | Sometimes, for larger files |
Load the file into this cleaner and keep the Remove empty rows rule switched on. Every row where all cells are empty is deleted before you download, so the blank lines that break sorting, formulas, and lookups are gone in one pass.
Leave Remove duplicate rows switched on. The tool compares each row after the other rules have run, so a row with a stray space or a non-breaking space is recognised as the duplicate it really is, not treated as a separate record.
Almost always because of invisible characters. A non-breaking space (character code 160) looks exactly like a normal space but is a different character, and leading or trailing spaces also break exact matches. The trim rule removes both, which is what makes VLOOKUP and other lookups work again.
No. The file is read with the browser FileReader API and cleaned in memory on your own device. Nothing is sent anywhere, so customer lists, payroll exports, and invoices never leave your computer.
It cleans any plain-text CSV your browser can open, including files past Excel's 1,048,576 row limit. If a file is so large that the browser struggles, split it first with our free CSV splitter and clean the parts.
Yes. Every rule is a checkbox. Switch off the ones you do not want — for example keep duplicates but remove empty rows — and the download updates instantly, with a before and after count for each rule.