100% local · CSV · XLSX · JSON

Clean messy spreadsheets in seconds

Drop a CSV or Excel file and CSV Formatter trims whitespace, fixes capitalization, splits name columns, removes duplicates and exports to clean CSV, JSON or formatted XLSX — all in your browser, nothing uploaded.

Auto-clean Split names Dedupe Multi-format export
⚠️ A required library (PapaParse or SheetJS) failed to load. Check your internet connection and refresh the page. The app cannot parse files without them.

How to use CSV Formatter

Four simple steps — your data is cleaned locally in your browser and never uploaded anywhere.

1

Drop your file

Drag a .csv, .xlsx, .xls, .tsv or .txt file onto the dropzone, or click to browse. Only one file at a time — dropping a new one replaces the previous.

2

Review the summary

CSV Formatter inspects every column, detects types (text, number, date, email, boolean) and lists issues like empty rows, duplicates and messy whitespace.

3

Tune & apply cleaning

Toggle the cleaning options you want, then click "Apply cleaning". The preview re-renders from the original data and shows before/after stats.

4

Export anywhere

Download clean CSV (UTF-8 with BOM for Excel), JSON, nested JSON, or formatted XLSX — or copy the table as Markdown / JSON to your clipboard.

100% private

Your spreadsheet is parsed entirely in your browser. No upload, no server, no tracking — your data never leaves your device.

Smart auto-clean

Trim whitespace, collapse spaces, normalize emails, title-case names and standardize dates — all detected and applied automatically.

Split & dedupe

Split a "Full Name" column into First and Last, and remove exact duplicate rows or empty rows in one click.

Multi-format export

Export to clean CSV (Excel-ready BOM), JSON, nested JSON, or formatted XLSX. Or copy as Markdown / JSON for docs and chat.

Live preview

Scroll through up to 100 rows with a sticky header. Modified cells are highlighted yellow — click any to see its original value.

Cross-platform

Works on Chrome, Firefox, Safari, Edge and modern mobile browsers. Uses PapaParse and SheetJS — the battle-tested open-source parsers.

Frequently asked questions

No. CSV Formatter runs entirely in your browser using JavaScript. Your file is read into memory on your own device, cleaned there, and the result is offered as a download — nothing is ever uploaded. You can verify this by opening DevTools → Network and watching that no file data leaves your device.

Input: .csv, .tsv, .txt (plain delimited), .xlsx and .xls (Excel). Output: clean .csv (UTF-8 with BOM for Excel compatibility), .json (array of objects), .json with nested name object, and .xlsx (via SheetJS). You can also copy the table as Markdown or JSON.

Each column is sampled: if more than 80% of its non-empty cells match a number pattern, it is flagged "number"; if they match date patterns (DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD, DD-MM-YYYY, or Indonesian "12 Januari 2020"), it is "date"; if the header contains "email" or >80% of cells match an email regex, it is "email"; if >80% match true/false/yes/no/y/n/0/1, it is "boolean"; otherwise "text". Detection only guides cleaning — it never deletes your data.

If you enable "Split full name column", the app looks for a header matching "Full Name", "Nama Lengkap" or "Name" (case-insensitive). That column is split on the first space into a "First Name" and "Last Name" column. Single-word names get an empty last name. The original full-name column is replaced.

No. SheetJS reads the cached cell values, not live formulas. If a cell contains a formula, you get its last computed value. Formatting (colors, fonts, number formats) is also not preserved on re-export — the focus of this tool is clean data, not faithful spreadsheet cloning.

The app handles roughly 50,000 rows smoothly on a typical laptop. Beyond that, parsing and rendering slow down and the preview table (capped at 100 visible rows) may take a moment. There is no hard limit — the only constraint is your device's memory.

Any modern browser from the last few years: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+, and equivalent mobile browsers. Internet Explorer is not supported. PapaParse and SheetJS are loaded from a CDN on first visit.

Original value