JSON to CSV & CSV to JSON Converter
Convert JSON to CSV and CSV to JSON instantly. Turn an array of objects into spreadsheet-ready rows with proper RFC 4180 quoting, or convert a CSV back into a JSON array keyed by its header row. Choose comma, semicolon or tab delimiters, with correct handling of quoted fields, embedded commas and newlines. Everything runs in your browser; nothing is uploaded.
Everything runs locally in your browser — nothing is uploaded. Your JSON or CSV never leaves this page, so it is safe for pasting internal exports, config or customer data.
What this tool is
- A free, in-browser converter both ways: JSON → CSV (an array of objects becomes spreadsheet rows) and CSV → JSON (rows become an array of objects keyed by the header row).
- JSON → CSV uses the union of every object’s keys as the header, so rows with different or missing fields still line up; nested objects and arrays are JSON-stringified into a single cell.
- Output follows RFC 4180: any field containing the delimiter, a double-quote, or a line break is wrapped in quotes, and embedded quotes are escaped by doubling them.
- CSV → JSON uses a real CSV parser, not a naïve split — it correctly handles quoted fields with commas, newlines and doubled-quote escapes inside them, across comma, semicolon or tab delimiters.
- Everything runs client-side in your browser. Your data is never uploaded, so it is safe for internal exports, config and customer records.
How JSON maps to CSV
CSV (Comma-Separated Values) is a flat grid: a header row of column names, then one row of values per record. JSON that maps cleanly onto that grid is an array of objects, where each object is a record and each property is a column. This tool takes that array, builds the header from the union of every object's keys (in first-seen order), and writes one CSV row per object. A property missing on some objects just produces an empty cell in that column, so uneven records still line up. A single JSON object — not wrapped in an array — is treated as exactly one data row.
Nested values
CSV has no notion of nesting. When a property's value is itself an object or an array, the cell holds the JSON-stringified form of that value — e.g. {"tags":["a","b"]} becomes the literal text ["a","b"] in one cell. That keeps the mapping one key = one column and is lossless. If you want nested fields spread across columns (address.city), flatten the JSON first.
RFC 4180 quoting & escaping
- Quote when needed. A field is wrapped in double-quotes whenever it contains the delimiter, a double-quote, a carriage return or a line feed — otherwise it is written bare.
- Escape quotes by doubling. A literal
"inside a field becomes"", sohe said "hi"is written"he said ""hi""". - CRLF line endings. Rows are separated with
\r\nas the spec recommends, which every spreadsheet imports cleanly.
How CSV maps back to JSON
Going the other way, the first row is the header and supplies the keys; every following row becomes one JSON object. The important part is the parser: a real CSV field can contain the delimiter, line breaks and quote characters as long as it is quoted, so splitting on the delimiter is wrong. This tool uses a proper state-machine parser that reads quoted fields, preserves embedded commas and newlines, and collapses doubled "" back to a single quote. Values are emitted as strings, because CSV carries no type information — a cell of 42 is the text "42", which you can coerce afterwards if you need real numbers or booleans.
Delimiters
Pick the separator that matches your data: comma is the default, semicolon is common in locales where the comma is a decimal separator (much of Europe), and tab handles TSV files. The same choice drives both directions — it decides what the output uses and what the parser expects on input.
Privacy note: this converter runs entirely in your browser with no network calls, so the data you paste never leaves your machine. That makes it a safe alternative to online converters when the JSON or CSV contains internal exports, API responses, configuration or customer records.

Frequently asked questions
How do I convert JSON to CSV?
Paste a JSON array of objects into the input, keep the direction on JSON → CSV, pick your delimiter (comma, semicolon or tab) and press Convert. Each object becomes one row and each property becomes a column. The header is the union of all keys across every object, in first-seen order, so objects that are missing a field simply get an empty cell in that column. A single JSON object (not wrapped in an array) is treated as one data row. The output follows RFC 4180, so it opens cleanly in Excel, Google Sheets or any spreadsheet.
How do I convert CSV to JSON?
Switch the direction to CSV → JSON, paste your CSV (with a header row first), choose the delimiter that matches your file and press Convert. The first row is read as the column names and every following row becomes a JSON object keyed by those names, producing an array of objects. The parser understands quoted fields, so commas, line breaks and quote characters inside a quoted value are preserved correctly rather than splitting the row.
How are nested objects and arrays handled in JSON → CSV?
CSV is a flat, two-dimensional format with no concept of nesting, so a value that is itself an object or an array is JSON-stringified into its single cell — for example {"city":"Berlin"} becomes the literal text {"city":"Berlin"} in that column. This is lossless and round-trips back as a string. If you need deeply nested data flattened into separate columns (e.g. address.city), flatten the JSON before converting; this tool keeps one key = one column so the mapping stays predictable.
How does the tool handle commas, quotes and newlines inside a field?
On the way out (JSON → CSV) it applies RFC 4180 quoting: a field is wrapped in double-quotes whenever it contains the delimiter, a double-quote, a carriage return or a line feed, and any double-quote inside the field is escaped by doubling it (" becomes ""). On the way in (CSV → JSON) the parser reverses that exactly — it reads quoted fields, keeps embedded delimiters and newlines as part of the value, and collapses doubled quotes back to a single quote. That is why a plain string split on the delimiter would corrupt real-world CSV but this tool does not.
Is my data uploaded anywhere?
No. The entire conversion happens in JavaScript in your browser — there is no network request and nothing is sent to a server, logged or stored. You can confirm it with your browser’s network tab: converting produces no traffic. That makes it safe for pasting internal API responses, database exports, config files or customer data you would not want to send to a third-party web service.