Skip to main content

CSV Viewer & CSV to JSON Converter

Paste or upload comma-, tab-, or semicolon-separated data to see it as a readable table and convert it to JSON. The parser handles the hard cases — quoted fields, commas and line breaks inside cells, escaped quotes — that make naive split-on-comma converters produce garbage.

Chart this data in Moda

Turn the table you just cleaned into a designed chart, report page, or dashboard slide.

Try Moda free →

Why splitting on commas isn’t parsing CSV

Real CSV wraps fields in quotes when they contain the delimiter — “Smith, Jane” is one cell, not two — and doubles quotes to escape them inside quoted fields. Cells can even contain line breaks, so a row doesn’t necessarily end at the end of a line. This parser implements those rules (the RFC 4180 conventions spreadsheet exports follow), which is the difference between your address column surviving and every comma shifting the rest of the row over by one.

Delimiter auto-detection

CSV from Excel in much of Europe actually uses semicolons; exports from databases and clipboard copies from spreadsheets are often tab-separated. The tool inspects the first line and picks the likeliest delimiter, shows you what it chose, and lets you override it — the one-click fix when a file full of semicolons parses as a single fat column.

Two JSON shapes for two uses

Array of objects uses the first row as keys — [{"name":"Jane","role":"Designer"}] — which is what APIs, JavaScript code, and most tools want. Array of arrays keeps every row as a plain list, right when the data has no header row or you need positional access. In objects mode, blank headers become column_1, column_2, and duplicate headers get numbered suffixes, so no column is silently dropped.

Limits, and what stays private

Everything parses in your browser — the data never uploads, which matters for exports full of customer records. Input is capped at 5 MB, comfortably tens of thousands of rows; beyond that, browser-tab conversion is the wrong tool and a script or database import is the right one. The table preview shows the first 50 rows for speed, while the JSON output and download always include everything.

Frequently asked questions

My file uses semicolons or tabs — will it work?

Yes. Auto-detection recognizes comma, tab, and semicolon delimiters from the data itself, and the dropdown overrides it when detection guesses wrong (for instance, a semicolon file whose first line happens to contain more commas).

How are commas and line breaks inside cells handled?

Per the CSV standard: a field wrapped in double quotes may contain delimiters, quotes (doubled as ""), and line breaks, and the parser reads it as one cell. This is exactly what Excel and Google Sheets produce when exporting such data.

What if my data has no header row?

Switch the output to “array of arrays” — every row, including the first, becomes a plain JSON list. Objects mode assumes row one is headers, because that’s what spreadsheet exports almost always include.

Are numbers converted, or kept as strings?

Kept as strings, deliberately. CSV has no types — “00501” might be a ZIP code and “1e3” a product code, and auto-converting them destroys data (the classic leading-zero bug). Converting known-numeric columns is a one-liner in your code, where you know which columns are safe.

Is my data uploaded anywhere?

No — parsing, preview, and conversion all run locally in your browser. Close the tab and the data is gone. That makes this safe for exports containing names, emails, or other records you wouldn’t paste into a random website.

Related tools

← All tools