Clean a CSV export without damaging IDs or dates

Trim, normalize, replace and convert column by column. Each step shows how many cells it changed, and conversions list every value that failed.

Example data — not saved

Showing synthetic sample data: CRM export clean-up. Open or drop your own file to replace it — files are read in your browser and never uploaded.

Source AUpdating…
Loading…

Arrow keys move; Enter or double-click edits a cell (recorded as a replayable “Cell edits” step). ∅ = missing, · = edge whitespace, ↵ = line break inside a value. Row labels show source:record provenance.

Cleaning steps available here

“Trim & case” removes edge whitespace, collapses repeated spaces, treats no-break and zero-width spaces as whitespace, and can apply lowercase, uppercase or title case. Unicode normalization (NFC or NFKC) is a separate, explicit choice because NFKC changes characters.

“Find & replace” works literally or with JavaScript regular expressions. Regex steps run inside a Web Worker with a time budget; a pattern that backtracks catastrophically is stopped and the table is left exactly as it was.

“Convert type / date” needs you to state the number style (1,234.56 or 1.234,56) or the date format (for example DD/MM/YYYY). Converted values are written back as canonical text, and anything that does not fit is either kept, set missing or rejected, according to the policy you pick.

Why dates are never guessed

03/04/2024 is 3 April in most of the world and 4 March in the US. The profile flags such values as ambiguous, and the convert step will not run until you choose a format. Impossible dates such as 29/02/2023 or month 13 show up in the failure ledger.

Questions

Will cleaning turn 00123 into 123?

No. Values are text unless you add a conversion step to that column. Even then, converting to a number is an explicit, previewed step; the profile warns when a column has leading zeros or integers beyond 2^53.

Can I see what a step changed?

Click the step before it and the step itself to compare outputs; each step also reports the number of changed cells and lists conversion failures with their row provenance.

What does “Turn values that become blank into missing” do?

It is off by default. When on, cells that are empty after trimming become missing values, which matters for “is missing” filters, fill steps and JSON export.