viewer.csslab.dev

CSV Viewer & Converter

Open delimited data as a table, guess the delimiter, and convert it to JSON.

What is CSV?

CSV — comma-separated values — stores tabular data as plain text, one record per line with fields separated by a delimiter. It has no official type system and no single specification, which is why the same extension covers files separated by commas, semicolons, tabs, or pipes, and why two tools can read the same file differently.

This viewer reads the file, guesses the delimiter from how consistently each candidate appears outside quoted fields, and shows the result as a scrollable table or as JSON. Because everything is parsed in your browser, a customer export or an internal report can be inspected without uploading it anywhere.

Within the header and each record, there may be one or more fields, separated by commas. Each line should contain the same number of fields throughout the file.
RFC 4180 §2

Features

Guesses the delimiter, and says which
Commas, semicolons, tabs and pipes are all tested by how evenly they appear across lines, ignoring anything inside quotes. Excel on a Korean or European locale exports semicolons, and a tool that assumes commas shows one column of gibberish.
Correct quoting
Quoted fields containing the delimiter, embedded line breaks, and doubled quotes ("") are parsed per RFC 4180, so a field like "Doe, Jane" stays one field.
Reports rows that do not fit
Rows with more or fewer fields than the header are listed rather than silently trimmed — they are usually a sign of a missing quote, and finding them later in production is much more expensive.
JSON conversion with sane types
Numbers and booleans become real JSON types, but values with a leading zero stay strings, so postal codes and phone numbers do not lose their first digit.
Large files stay responsive
The table renders the first 200 rows and reports the total, so a large export does not lock up the page.

How to use

  1. 1

    Paste the data

    Paste CSV, TSV, or any delimited text into the left pane.

  2. 2

    Check the delimiter

    Auto detects it and shows which one it chose. Override it if the guess is wrong.

  3. 3

    Say whether the first row is a header

    With a header, the column names come from the first row; without one, columns are numbered.

  4. 4

    Read it as a table or JSON

    Switch views, and copy the JSON when you need it in a request or a fixture.

Why Excel mangles Korean in a UTF-8 CSV

Excel does not detect UTF-8 in a .csv file. Without a byte order mark it decodes the bytes using the system's legacy code page — CP949 on a Korean Windows install — and every multi-byte character becomes a run of mojibake. The file is not corrupt; it is being read with the wrong assumption.

The fix is a UTF-8 BOM: the three bytes EF BB BF at the very start of the file, which Excel treats as a signal to decode as UTF-8. Note the cost — those bytes are not part of the data, so a strict parser reading the same file reports the first column name as U+FEFF followed by id, rather than id. That is why this viewer strips a leading BOM when reading and why anything you export for Excel should carry one.

Frequently asked questions

Why does my CSV open as a single column?

The delimiter does not match. Excel exports semicolon-separated files on locales where the comma is the decimal separator — Korean, German, French and others — so a comma-assuming reader sees one field per line. Set the delimiter to semicolon, or leave it on Auto, which tests each candidate for consistency across lines.

How do I convert CSV to JSON?

Paste the CSV, keep "first row is a header" on so the keys come from the header names, and switch the output to JSON. Each row becomes one object in an array.

Does it handle commas inside a field?

Yes, when the field is quoted — "Doe, Jane" is one field. The parser also handles line breaks inside quoted fields and doubled quotes as an escaped quote character, following RFC 4180.

Why does my postal code lose its leading zero?

In this tool it does not: values with a leading zero are kept as strings when types are inferred. Spreadsheets are the usual culprit — they treat 03187 as the number 3187 on import, and the zero is gone before the file ever reaches a converter.

Is my CSV uploaded?

No. Parsing happens in your browser and the page has no backend, so a customer list or an internal export never leaves your device.

What is the difference between CSV and TSV?

Only the delimiter: TSV separates fields with a tab. Because tabs rarely appear inside data, TSV needs quoting far less often, which is why data pipelines tend to prefer it. This viewer reads both.

Specifications this follows

Related tools