Convert CSV to JSON — records, columns, or rows
Turn a CSV into JSON in your browser: an array of records, one array per column, or row arrays. NDJSON too. Nothing is uploaded, nothing is retyped.
Source
or drag one here · it stays on your device
Result
Add a CSV file. Pick the JSON shape once the preview is up.
How this works
- Add your CSV. Drop the file onto the page.
- Pick the shape. Records, columns, values, or NDJSON.
- Download. Save the .json (or .ndjson) file.
What it cannot do
- Every value is a JSON string; nothing is guessed into a number or a boolean, because guessing is how data corrupts quietly.
- The whole result is built in the page, so very large files are better served by the SQL console’s streamed JSON export.
- Duplicate column headings cannot both be keys of one JSON object; the values shape handles them, the records shape refuses with an explanation.
Questions
- Which JSON shapes can it write?
- Records ([{"a":"1"}, …], the default most APIs expect), columns ({"a":["1",…]}), values (row arrays with the column names first), and NDJSON — one record per line, the shape log pipelines expect.
- Do numbers come out as JSON numbers?
- No — every value is written as a JSON string, deliberately. The tool never knew 00412 was “a number”, and writing it as one would delete the zeros. Your consumer can cast the fields it knows are numeric.
- How are blank cells written?
- An empty cell is an empty string. CSV has no way to mark a value as missing rather than blank, so nothing of the kind is invented.
- What happens to duplicate column headings?
- Two columns with one name cannot both be keys of one JSON object, so the records and columns shapes refuse with the headings named; the values shape carries them through.
- Is my file uploaded anywhere?
- No. The conversion runs inside this page: when you convert CSV to JSON here, the browser is told to block outbound connections, so nothing can be sent to another server. Keep the Network tab of your developer tools open while you convert CSV to JSON: every request in it goes to this site, and none carries your file.
Your file is processed in this page and never uploaded — the privacy page shows how to confirm that yourself.