CSV ↔ JSON Converter🔒 100% local
Convert between CSV and JSON formats. Upload files or paste text directly.
How it works:
Privacy-first • No server uploads • Runs on PapaParse
Related Tools
Converts in both directions: a CSV file becomes a JSON array of objects whose keys come from the header row, or a JSON array of objects becomes CSV. The file is read with the File API and parsed by the bundled PapaParse build, so the data is never uploaded, and the result can be copied or saved as converted.json or converted.csv. Header names are trimmed, but values are not type-inferred, so a number arrives in JSON as a string.
How to use it
- Choose CSV to JSON or JSON to CSV.
- Drop the file onto the dashed box or pick it with the browser dialog.
- Press Convert, then copy or download the result.
Worked example
name,age,city
John,30,NYC
Jane,25,LAbecomes[
{
"name": "John",
"age": "30",
"city": "NYC"
},
{
"name": "Jane",
"age": "25",
"city": "LA"
}
]This is the content of a .csv file rather than text typed into the page, because the drop box is the entry point. Reproduced with the parser version the page loads: PapaParse 5.5.4, header true, empty lines skipped, header names trimmed.
[{"name":"John","age":"30"},{"name":"Jane","age":"25"}]becomesname,age
John,30
Jane,25The contents of a .json file in JSON to CSV mode, shown as a literal string because the CSV output uses CRLF line endings.
When to use it
- An API or config file expects JSON and all you have is a CSV export.
- You want to see a small dataset as JSON so you can read the field names off it.
- You need CSV back out of a JSON array someone handed you.
What it does not do
- If a data row has a different field count than the header, the parser records a field mismatch and the tool shows that message instead of a result, so tidy the export first.
- Everything from a CSV arrives as a string, including numbers, dates and booleans. Convert types downstream, not here.
- The JSON input has to be a top-level array of objects. A single object or a nested document is rejected with the parser's error.
- There is a paste-instead-of-drop field in the markup, but it only renders when a result is already on screen with no file attached, so in practice files go in through the drop box.