How the workbench is put together
Open a file and CSVUtils reads the original bytes in your browser, guesses the delimiter, and shows how many records were accepted, repaired, padded or rejected. Changing the delimiter, quote or encoding reparses those same bytes, so a wrong guess never costs you data.
The recipe on the left is an ordered list of steps. Click any step to see the table exactly as it is after that step, with its own row counts, findings and removed rows. Disabled steps stay in the recipe; reordering a step simply recomputes everything after it.
The example above is a synthetic CRM export: names with stray spaces and no-break spaces, mixed-case emails, a duplicated customer, dates written day-first, a multi-line note, a formula-like value and a short row. The recipe trims, lowercases emails, removes the duplicate, converts dates with an explicitly chosen format, and flags remaining problems in an issues column.
Exact by default
Every cell is kept as the exact text from the file. Nothing is turned into a number, a date or a formula unless you add a step that says so, and then failures are listed rather than silently blanked. Sums and means use exact decimal arithmetic, so 0.1 + 0.2 is 0.3 and 16-digit account numbers do not drift.
Missing fields (a short record), empty text and whitespace-only text are three different things in the grid, the profile and the filters. Exports explain how missing values are written, because plain CSV has no way to say “null”.
Questions
Is my file uploaded anywhere?
No. Parsing, every recipe step, profiling and export run in your browser, mostly inside a Web Worker. The site has no upload endpoint. Autosave writes to this browser’s IndexedDB only, and you can switch it off with “Private session”.
How big a file can it handle?
The whole dataset is held in memory, so the practical limit depends on your device. Files over 300 MB are refused up front instead of failing halfway. Autosave is skipped above 50 MB and the status line says so. Streaming and disk-backed sorting for larger files are on the roadmap.
Can I reuse a recipe on next month’s export?
Yes. Export the recipe as JSON, then import it on the new file. Columns are matched by ID and name. If a column was renamed or removed, the affected step stops at a preflight check and asks you to pick the column, instead of guessing.
What happens to rows a step removes?
They go to that step’s ledger with their source:record provenance. You can inspect them in the Ledger tab and export them as their own CSV.