CSV to JSON Converter
Convert CSV data to JSON arrays with custom delimiter support.
Paste a JSON array of objects and get a CSV in the format Excel, Google Sheets, and every database import tool expects. Columns are auto-detected from the union of all keys across your records. Nested objects and arrays are flattened or JSON-stringified depending on your preference. Everything runs in your browser; nothing is sent to a server.
CSV (Comma-Separated Values) and JSON are the two text formats most data ever passes through. CSV is the lingua franca of spreadsheets, databases, and BI tools — every system can import it. JSON is the default for APIs, configuration, and modern data pipelines. Converting between them is one of the most common data-engineering tasks: an API returns JSON, but the analytics team wants it in Sheets; a database export is CSV, but the JavaScript frontend needs JSON.
The conversion isn't quite mechanical, because JSON and CSV model data differently. JSON has nested objects, arrays inside values, and explicit types (string, number, boolean, null). CSV is flat — every cell is a string, every row has the same columns. This tool makes the lossy parts explicit: nested objects can flatten to dotted column names or stringify to JSON, arrays in values stringify by default, and types collapse to their string representations. None of this is reversible without a schema, which is why round-tripping JSON → CSV → JSON usually requires hand-tweaking on the way back.
For most everyday data — API responses, log exports, database rows — the conversion is straightforward and lossless enough. The tool follows RFC 4180 quoting rules so the output parses cleanly in Excel, Google Sheets, pandas, and any standards-compliant CSV reader. For data that genuinely needs to preserve nested structure, consider keeping it as JSON and using a tool like jq to query it instead of forcing it into a flat tabular shape.
parent.child column names) or JSON-stringifying (the nested value becomes a JSON string in one column). The tool detects the shape automatically and applies the right strategy." becomes ""). So {"name": "O'Reilly, Inc."} renders as "O'Reilly, Inc." in the CSV. You can also choose "quote all fields" if your downstream consumer is strict about quoting. The tool follows RFC 4180 by default, which is what Excel, Google Sheets, and pandas all expect.{"user": {"name": "Jon"}} produces a column user.name. Best when the nesting is consistent and shallow. JSON-stringify: the nested value becomes a literal JSON string in one column — useful when nesting is irregular or when the downstream consumer can re-parse JSON. Arrays in values always JSON-stringify by default (a column of ["a","b"]) because flattening arrays into multiple columns rarely produces what people want.[a, b, c] followed by [b, c, d] produces columns a, b, c, d. If you need a specific column order, restructure the JSON so the first object has every key in the order you want, or post-process the CSV in your spreadsheet. The tool prioritizes "every column present" over "matches the first object exactly" — there's no universally right answer here, and the union approach matches what pandas and most libraries do.\r\n line endings) opens cleanly in Excel and Google Sheets and parses correctly with pandas.read_csv(). For European Excel (which uses semicolon as the default separator), switch the separator option. For tab-delimited (.tsv) output, also switch the separator option. Single-line text inside a cell, multi-line text wrapped in quotes, Unicode characters, and emoji all pass through unchanged.