What the validator checks
A CSV importer doesn't reject a file because a value looks odd — it rejects a file whose structure is broken: the wrong number of columns on some row, a quote that never closes, two columns claiming the same name. This tool checks exactly those structural rules, the ones set out informally in RFC 4180:
| Check | What it means | Typical action |
|---|---|---|
| Delimiter | Which character the file uses to separate columns (comma, semicolon, tab or pipe) | Usually nothing — confirms what your importer should expect |
| Unbalanced quote | A " opened a quoted field that never closed, swallowing the rest of the file into one field | Fix the source export — see below |
| Ragged rows | One or more rows have a different column count than the header | Usually an unquoted delimiter or line break inside a value |
| Duplicate headers | Two or more columns share the exact same name | Rename one of them before importing |
| Blank rows | Empty lines sitting between records | Strip them with the CSV cleaner |
Why an unbalanced quote is the one issue this tool can't auto-fix
Every other check here has a mechanical answer, but a lone " that opens a quoted field and never closes it is different: everything after that character — delimiters, line breaks, entire rows — gets read as one giant field, and there is no way to know from the bytes alone where the real row boundaries were supposed to be. The honest fix is to re-export the file from whatever produced it, this time quoting fields correctly, rather than guessing at a repair that might land the data in the wrong column. Background on why this happens and how to quote fields correctly going in: escaping commas and quotes in a CSV.
Found blank rows in the report?
Those are the one issue on this list our cleaner actually removes automatically — duplicate rows, blank rows and stray spaces, in one pass, all locally.
Open the CSV cleaner →🔒 Your file never leaves this tab — we can’t read, store or leak what we never receive. See the proof →
Related guides
For the causes behind a failed validation: commas or quotes inside a field breaking the column count, a line break inside a cell splitting a row, and CRLF vs LF line endings if rows look merged or doubled. If the whole file lands in one column instead, that's a delimiter mismatch, not ragged rows — see CSV opens with all data in one column. Browse all guides.
Frequently asked questions
What does "ragged rows" mean in a CSV?
A ragged row is one whose number of columns doesn't match the header row — one field short, or one too many. The usual cause is a comma or line break sitting inside a value that was never wrapped in quotes, so the parser reads it as an extra column boundary instead of real content. It's a structural count, not a guess: the validator only reports rows whose column count actually differs from the header.
Why do duplicate column headers break an import?
Most importers and spreadsheet formulas look up a column by its header name, and when two columns share a name, only one of them — usually the last — actually gets read; the other is silently ignored. Some import tools reject the file outright instead. Either way the fix is the same: rename one of the duplicates to something unique before importing.
What is an RFC 4180 CSV validator checking?
RFC 4180 is the informal specification most CSV readers follow: one consistent delimiter, any field containing that delimiter, a quote or a line break wrapped in double quotes, and every row holding the same number of columns as the header. This tool checks a file against exactly those structural rules — delimiter, unbalanced quotes, ragged rows and duplicate headers — rather than guessing at damaged data.
Is my file uploaded when I validate it?
No. The validator reads the file locally with the browser's own FileReader and checks its structure in JavaScript running in this tab. The file never leaves your device, and the tool works offline once the page has loaded.