BrainCoder
ConvertNothing uploaded

CSV to JSON Converter

RFC 4180 CSV parsed in your browser, with nothing hidden

Free forever — no sign-up, nothing uploaded. Files never leave your device.

braincoder.app/use/csv-json

CSV to JSON Converter

RFC 4180 CSV parsed in your browser, with nothing hidden

Drop your file here

or browse from your device

Browse files

document.pdf

1.2 MB

report.pdf

860 KB

100% private

Nothing is uploaded — everything runs in your browser.

Free forever

No account or payment required.

No sign-up

Open the tool and start using it right away.

Local processing

Processing time depends on your input and device.

About this tool

Convert CSV to JSON with a real RFC 4180 parser: quoted commas, embedded newlines, doubled quotes, CRLF, LF, CR and a UTF-8 BOM. Auto-detects comma, semicolon, tab or pipe and says how sure it is. Every value stays a string.

CSV to JSON is a small job that a naive one-liner gets wrong in a dozen ways, so this page is built around a real RFC 4180 parser written out by hand. A quoted cell that contains commas, a cell with a line break in the middle of it, a doubled quote inside a quoted cell, a file that ends CRLF, a file that ends with a bare CR, a UTF-8 byte order mark on the front, a trailing line ending, and a header row whose names are not unique are all handled as cases with names — not as things that happen to work.

The parser is deliberately honest about the parts that are guesses. A double quote in the middle of an unquoted field is reported as an anomaly with its record, field and character position instead of being swallowed, because that is exactly how a converter loses a column. A row with fewer fields than the header has its missing cells written as JSON null rather than as an empty string, since an empty cell is something the CSV said and a missing cell is something it did not. A row with more fields keeps its extra values in a named array rather than dropping them. Duplicate header names are renamed deterministically and every rename is listed on screen.

No type is inferred. Every value in the output is a JSON string, so 00123 keeps its leading zeros, TRUE stays TRUE rather than becoming true, and a date in whatever format the export wrote stays in that format. That is a decision, not a limitation being hidden: a spreadsheet guesses types on open and this page does not, and it says so in the same font as the rest of the copy.

Input is capped before any parsing work begins — 5,242,880 characters of pasted text, 5 MB of opened file, 20,000 rows, 512 columns per row and 100,000 characters in a single cell — and each cap is refused with the real numbers rather than silently truncating. Your CSV is read in this tab. Nothing is uploaded, and no request is made with your data at all.

Key features

Everything you get with CSV to JSON Converter — no premium upsell.

A real RFC 4180 parser, not split(

): quoted cells with embedded delimiters, embedded line breaks, doubled quotes, CRLF, LF, a bare CR, a UTF-8 BOM and a trailing newline

A quote in the middle of an unquoted field is reported as an anomaly with its record, field and character position — never silently accepted

Every value stays a JSON string: no type inference, so leading zeros, TRUE/FALSE and spreadsheet dates survive exactly as written

Ragged rows are surfaced, not smoothed over: a short row's missing cells become JSON null, a long row's surplus values are kept in a _surplus array, and the count of both is reported

Duplicate header names are de-duplicated deterministically as name (2), name (3) and every rename is listed

Delimiter detection for comma, semicolon, tab and pipe that reports its own confidence, with a manual override

Header-row toggle: keys come from the first row, or are generated as column1, column2 … with the column count taken from the widest record

2- or 4-space JSON indentation and a live row, column and byte count measured on the exact text that is copied and downloaded

Copy and download the JSON; re-parsing the downloaded file gives back the same document

Caps of 5,242,880 characters, 5 MB per file, 20,000 rows, 512 columns per row and 100,000 characters per cell, each refused with its real numbers before any parsing work starts

Cell values are rendered as escaped text only, in a bounded preview that says it is a preview

Runs entirely in this tab — your CSV is never uploaded and no request is made with it

How to use CSV to JSON Converter

Follow the steps below to use the tool.

  1. 1

    Paste the CSV or open a file

    Paste into the input box or use Open CSV file. Nothing is pre-filled. An opened file is decoded as UTF-8; a non-UTF-8 file shows U+FFFD characters and the page says how many.

  2. 2

    Check the delimiter and the header row

    Auto-detect reports how confident it is and why — read the sentence under Delimiter. If it is not confident, or the header row above does not line up, pick the delimiter yourself.

  3. 3

    Read what was decided

    The What was decided panel lists blank lines skipped, duplicate keys renamed, rows padded with null, surplus values kept, the byte order mark, and the line endings found — before you copy anything.

  4. 4

    Copy or download the JSON

    Copy puts the exact indented document on the clipboard; Download writes the same bytes to a file named for its source and its row and column count. Both give you every row, not the preview.

Still free, still private — your files never leave your device.

Launch CSV to JSON Converter

Frequently asked questions

Quick answers before you launch the tool.