CSV Linter
Check a CSV file for ragged rows and detect its delimiter, without converting it to anything.
Paste a CSV file on the left.
How it works
Checks whether every row has the same number of fields as the header row — a ragged row is the single most common CSV defect, usually caused by an unescaped delimiter or a missing trailing field, and it silently corrupts anything downstream that assumes positional columns.
Delimiter detection
Auto-detect tries comma, semicolon, tab and pipe against the first 20 non-blank lines and picks whichever produces the most consistent field count — not just whichever character appears most often, which would be wrong for a file where the real delimiter is rare but the data happens to contain lots of commas.
Example
For a non-comma delimiter, a literal comma appearing in unquoted data is a real ambiguity this tool does not attempt to resolve — nothing in the file marks it as data rather than a separator.
Frequently asked questions
How is this different from the CSV → JSON Converter already on this site?
That tool turns CSV into JSON and back — its job is transformation. This one stays in CSV and answers a narrower question: is this file internally consistent, does every row have the same number of fields as the header, and what delimiter is it actually using.
How does delimiter detection work?
It tries comma, semicolon, tab and pipe against the first 20 non-blank lines and picks whichever produces the most consistent field count across them — not just whichever character appears most often, which would be wrong for a file where the real delimiter is rare but the data contains lots of commas.
Related tools
CSV ⇄ JSON Converter
Convert CSV to a JSON array of objects, or back, with proper quoted-field parsing.
LocalJSON Formatter & Validator
Format, validate and measure JSON, with errors located by line and column.
LocalJSON Diff
Compare two JSON documents and see what actually changed, independent of formatting.
LocalSQL Formatter
Reflow a SQL query onto readable lines, one clause per line.
LocalcURL Converter
Turn a pasted curl command into a fetch call or Python requests snippet.
LocalRegex Explainer
Turn a regular expression into a plain-English, line-by-line breakdown.
Local