CSV Formatter / Viewer
Format & preview CSV
What Is This Tool?
The CSV Formatter parses raw CSV text — respecting quoted fields that may contain the delimiter, commas, or line breaks — and shows it both as a readable HTML table and as cleanly re-serialized CSV with consistent RFC 4180 quoting. It supports comma, semicolon, and tab delimiters.
How to Use
Paste CSV data with the first row as the header.
Choose the delimiter used in your data (comma, semicolon, or tab).
Click Format to see a table preview and re-serialized CSV.
Copy or download the cleaned-up CSV.
Features
- Proper quoted-field parsing (handles delimiters and commas inside quotes)
- Comma, semicolon, or tab delimiter support
- Readable, horizontally scrollable HTML table preview
- Consistent RFC 4180 re-serialization with quoting only where needed
- Copy and download the formatted result
- 100% client-side — nothing leaves your browser
Examples
Input:
name,age,note Alice,30,"Likes, cats" Bob,25,Simple note
The comma inside the quoted note field is preserved as a single cell, not split into two columns.
Common Use Cases
- Previewing exported CSV data before importing it elsewhere
- Cleaning up inconsistently quoted CSV from spreadsheets or exports
- Converting semicolon-delimited European CSV to standard comma CSV
- Spotting formatting mistakes in CSV data visually before sharing it
Frequently Asked Questions
How does it handle commas inside a field?
If a field is wrapped in double quotes, any delimiter characters, commas, or line breaks inside those quotes are treated as part of the field's text, not as a new column or row.
What delimiters are supported?
Comma, semicolon, and tab. Choose the one that matches your data before clicking Format.
What does "re-serialized CSV" mean?
It's your data written back out as clean CSV using RFC 4180 quoting rules: a field is quoted only when it contains the delimiter, a quote character, or a line break, and embedded quotes are escaped by doubling them.
Is the first row always treated as a header?
Yes, the first row is rendered as the table header (using <th> cells) and all subsequent rows are treated as data rows.
What if my rows have different numbers of columns?
Each row is rendered with however many cells it actually has; rows with fewer or more columns than the header will simply show a mismatched number of cells in the table.
Is my CSV data uploaded anywhere?
No, parsing and rendering happen entirely locally in your browser using JavaScript. Nothing is sent to a server.