CSV to JSON — online, without uploading your files
This turns a comma-separated file into an array of JSON objects, one object per row, keyed by the header names in the first row. Values are carried through as text from parse to output — the page says so in its own footer, "Values remain strings by design" — so a postcode with a leading zero and a sixteen-digit account number come out with every character they went in with. The parser is strict rather than forgiving: every column needs a non-empty header, headers must be unique, and each row must carry exactly as many fields as there are headers, or the run stops and names the row. Fields are separated by commas only, so a semicolon-separated export reads as a single column and there is no setting to change the separator. The file picker accepts .csv up to 20 MB; the paste box has no character limit of its own, so a very large paste is bounded only by what the tab can hold.
Quick Summary / Direct Answer
Paste a CSV into the box, or choose a .csv file of up to 20 MB, then press Convert to JSON. The first row becomes the keys, every later row becomes one object, and the result is a JSON array printed with two-space indentation that you can copy or download as converted.json. Every value arrives as a JSON string, because nothing here is read as a number, a date or a boolean.
Tool Specifications
Runs on
Your browser
Server upload
None
Account
Not required
Cost
Free, no paywall
How to use CSV to JSON in 3 simple steps
Three steps, all of them inside this browser tab.
Open the CSV to JSON workbench
Open the workspace in your browser. The code it needs loads with the page — there is nothing to install and no account to create.
Provide your input files or parameters
Select, drag, or configure your input. The file is read into the page and processed there, so there is no upload to wait for.
Save your output
Preview the result and click download. The file is written from the page straight to your disk; nothing is stored on a server.
Local Browser Compute vs. Traditional Cloud Converters
What changes when the tool runs in your own tab instead of on someone else's server.
| Feature / Aspect | OpenTools (Local) | Standard Cloud Converters |
|---|---|---|
| Where your file goes | Stays in the page; it never touches a server | Uploaded to and processed on the provider’s servers |
| Waiting to upload | None — there is no upload step | Upload time, then a place in the server queue |
| Price | Free, with no paywall and no sign-up | Often a free tier with daily limits or a subscription |
| Retention | Nothing to retain; the file was never sent | Stored on the provider’s disks under their policy |
| Account & tracking | No account, no third-party trackers, no client-side analytics | Often an email sign-up and advertising trackers |
How this page is locked down
This page is served with a Content Security Policy that blocks every network connection the page could make (connect-src 'none'). Your browser will not send the file, its name or its contents to any server, including this one. The exact header is below.
Related Spreadsheet and Data Utilities
Other Spreadsheet and Data tools that run the same way.
Run json to csv in your browser tab.
Also in Spreadsheet and Data →
Run csv type converter in your browser tab.
Also in Spreadsheet and Data →
Run csv diff in your browser tab.
Also in Spreadsheet and Data →
Run json editor in your browser tab.
Related in Developer and Data →
Frequently Asked Questions
Does it convert numbers, dates and true or false values?
No, and that is the point. Every cell becomes a JSON string, so 007 stays 007, a long account or order number keeps all of its digits, and a value such as 1-2 is not turned into a date. Type coercion is where a CSV quietly loses information, because a value that is too long to be held exactly as a number comes back changed; the JSON tools in the same file refuse an integer outside the exact range rather than round it, which is the same hazard seen from the other side. Cast the values yourself afterwards, column by column, where you can see what you are deciding.
How does it handle quotes, commas and line breaks inside a field?
It follows the usual CSV quoting rules. A field that begins with a double quote is read as quoted and may hold commas and line breaks, and two double quotes inside it mean one literal double quote. A double quote that appears after other characters in the same field is kept as an ordinary character rather than opening a quoted section. An opening quote that is never closed stops the run with "CSV contains an unclosed quoted field." A test in this repository parses a file with a quoted comma, a doubled quote and a line break inside a field, and requires all three back intact.
Why was my file refused?
Three named checks reject a file. An empty cell anywhere in the first row gives "Every CSV column needs a header in the first row.", which usually means the export began with a title line or a blank column. Two identical headers give "CSV headers must be unique before conversion.", because a duplicate key would silently overwrite a column. A row with the wrong number of fields gives its row number and both counts, for example "Row 2 has 1 columns; expected 2." Nothing is padded or discarded to make a ragged file fit.
What happens to blank lines and to a byte-order mark?
A byte-order mark at the very start of the file is removed before parsing, and blank lines at the end of the file are dropped. A blank line in the middle is not: in a file with more than one column it counts as a row holding one empty field, and it is refused with the row number like any other short row. Delete the stray line and run it again.
What are the limits, and what does the download contain?
The file picker accepts .csv or text/csv and stops at 20 MB with "This candidate limits CSV files to 20 MB." The download button writes the JSON you see to a file named converted.json as UTF-8 JSON, and the result panel reports how many rows and columns were converted. The file is written from the page to your own disk; nothing is posted anywhere.
Does CSV to JSON upload my files or data to any server?
No. The work happens in the page you have open. This page is served with a Content Security Policy of connect-src 'none' and webrtc 'block', so the browser will not let it open a connection to any server, including this one.
Is CSV to JSON free?
Yes. There is no paywall, no usage limit and no account. If the tool is useful to you, you can choose to support the project.
Can I use this for confidential legal or financial records?
Your file is not sent anywhere, so it is not exposed to this site or to a third party. What remains is your own device and browser — treat it the way your organisation's policy treats any local file.
Does the site collect anything when I visit?
The server records one coarse metadata event per page visit (see the security policy for exactly what). There are no third-party trackers and no client-side analytics, and nothing from the tool itself — your files, inputs or results — is included.
Ready to use CSV to JSON?
Open the workspace in your browser. No account, no paywall, and your file never leaves the page.