CSV to JSON

Convert CSV to JSON format

Uploaded files: up to 500,000 rows (including the header row, files up to 150 MB). Pasted text: up to 70,000 rows. Conversion runs in the background — this tab stays responsive.

Click or drop a .csv file here

About CSV to JSON

CSV to JSON converts a CSV file (or pasted CSV text) into an array of JSON objects entirely in your browser — nothing is uploaded to a server. The first line is treated as the header row. Parsing is quote-aware: a field wrapped in double quotes can safely contain a comma or a newline (like 'Smith, John') without being split into extra columns. Large files are read and parsed off the main thread in a Web Worker, so the page stays responsive, and the result downloads automatically as a .json file.

How to use CSV to JSON

  1. 1Click the upload area and select a .csv file, or paste CSV text directly into the box below it.
  2. 2Click 'Convert' to generate the JSON.
  3. 3A file upload downloads automatically as converted.json; pasted text appears in the output box for you to copy.
  4. 4Validate the JSON in a linter or your target application before relying on it.

Frequently Asked Questions

Does it support file upload, or only pasted text?

Both — upload a .csv file, or paste CSV text directly into the box.

Is my data uploaded to a server?

No, conversion happens entirely in your browser, in a background Web Worker so the page never freezes.

Does it support delimiters other than commas, like semicolons or tabs?

No, splitting is done on commas only — though a comma inside a properly double-quoted field is treated as data, not a delimiter.

Why is there a row limit?

Converting a very large CSV in a browser tab risks running out of memory and crashing the tab rather than just being slow. Uploaded files support up to 500,000 rows on desktop (70,000 on phones/tablets); pasted text is capped lower, at 70,000 rows, since pasted text has to live in the page itself rather than being streamed in like a file. The count includes the header row.

Why is the pasted-text limit lower than the file-upload limit?

A pasted CSV sits in the page's own memory and gets re-rendered into the input box on every change, on both desktop and mobile — an uploaded file is instead streamed straight into the background worker without that overhead, so it can safely handle far more rows.

Tips & Tricks

  • Include a header row as the first line — those values become the keys in each JSON object.
  • Wrap a value in double quotes if it contains a comma (e.g. "Smith, John") — quoted fields are parsed correctly and won't shift into the wrong keys.
  • Rows with fewer values than headers get empty strings for the missing fields.
  • For a large CSV, upload it as a file rather than pasting it — the file path supports far more rows and downloads the result directly instead of rendering it on the page.