CSV and JSON Converter
Convert spreadsheet exports to JSON, or turn flat JSON into CSV or TSV. Choose either direction in one tool.
Conversion happens locally in your browser. Your files and values are not uploaded or saved.Choose a direction. Each keeps its own draft in memory; refreshing clears both. Conversion is not a lossless round trip.
CSV input
0 B / 5 MiB UTF-8Up to 5 MiB UTF-8 and 50,000 data rows. Browser safety limits: 4,096 columns and 32 MiB JSON output. Values stay in memory; refreshing clears them.
JSON output
JSON input
0 B / 5 MiB UTF-8Up to 5 MiB UTF-8, 50,000 records, 200 distinct columns and 20 MiB CSV output. Flat objects only; nested values and duplicate keys are rejected. Refreshing clears drafts.
Protection prefixes an apostrophe to potentially formula-like strings and headers, intentionally changing their text. Numbers and booleans are untouched. Quoting alone is not protection. A BOM can help encoding detection in some spreadsheets.
CSV output
How to convert CSV to JSON
- Paste CSV or import one UTF-8 CSV/TSV file.
- Select comma, semicolon or tab and choose whether the first record contains column names.
- Press Convert to JSON, check the record preview, then copy or download the complete array.
A string-preserving example
name,code Alice,00123
The resulting JSON keeps the identifier's leading zeros:
[
{
"name": "Alice",
"code": "00123"
}
]CSV to JSON rules
Cells are not trimmed or interpreted as numbers, booleans, null or dates. Headers are trimmed and must be non-empty and unique. Empty cells are empty strings. Header-only input produces []. A single initial UTF-8 byte order mark is removed during parsing.
Quoted commas, escaped quotes and embedded newlines are supported. Invalid quoting and inconsistent field counts produce a parser-record error while preserving the source. CSV records are not necessarily physical lines: do not deduplicate arbitrary CSV with a raw line-removal tool.
CSV to JSON is limited to 5 MiB UTF-8 and 50,000 data rows, 4,096 columns and 32 MiB output; no data is silently truncated. It does not infer cell types or build nested mappings.
How to convert JSON to CSV
- Choose JSON to CSV. Paste an array of flat objects or import one UTF-8 .json file.
- Choose a delimiter, optional UTF-8 BOM and formula protection. Press Validate / Convert to CSV.
- Select or remove detected columns and reorder them with the keyboard-accessible Move up/down buttons. Convert again after any change.
- Review the first 50 rows and protection changes, then copy or download the complete converted.csv or converted.tsv file.
[{"name":"Alice","code":"00123"},{"name":"Bob","active":true}]Columns follow first appearance across objects. This example exports:
name,code,active Alice,00123, Bob,,true
JSON to CSV rules and limitations
Only an array of flat objects is accepted. Nested objects/arrays, null or primitive rows, duplicate keys, invalid JSON and unpaired Unicode surrogates produce actionable errors. Empty arrays and arrays of empty objects validate, but export is disabled until columns exist. Numeric-looking keys retain encounter order; prototype-like names are handled safely.
Numeric tokens are preserved exactly, including 9007199254740993, long decimals, negative numbers and exponent spellings. Strings keep their content unless formula protection adds an apostrophe. Booleans serialize as lowercase true/false. Null, missing keys and empty strings become empty CSV fields, losing their distinction.
Formula protection is on by default. It prefixes an apostrophe to potentially formula-like strings and headers; it does not modify numeric or boolean values. Review the count and change preview. Disabling protection requests raw text explicitly. Quoting alone does not neutralize spreadsheet formulas, and no CSV is universally safe for every spreadsheet application.
CSV quoting escapes delimiters, quotes and embedded line breaks; record separators are CRLF. A header row is always included. Export delimiters can be comma, semicolon or tab. A UTF-8 BOM is optional and off by default; spreadsheet encoding detection varies.
JSON to CSV accepts 5 MiB input, 50,000 records and 200 distinct columns, with a 20 MiB output safeguard. The table previews 50 rows and the text area previews 8,192 characters; copy and download include the full accepted export. Clipboard denial exposes selectable complete output. Changing settings or columns invalidates the old export.
This is not a lossless JSON/CSV round trip: types and null distinctions are lost, CSV-to-JSON headers are trimmed, protection changes strings, and spreadsheet applications can reinterpret leading zeros or dates. Neither direction reads Excel workbooks, flattens nested JSON, supports JSON Lines or uploads data. Cancel, clear and undo keep control of in-memory drafts.
Frequently asked questions
Are my files uploaded?
No. UTF-8 decoding, validation, parsing and serialization happen locally in your browser. Each direction keeps its own draft in memory, not in URLs or storage. Refreshing clears both. Local workers handle conversion.
Will numbers, dates or booleans be converted?
No. Every cell remains a string, including leading zeros, long identifiers, date-like values, whitespace and empty cells. This release does not infer types or create nested objects.
What happens to headers?
Surrounding header whitespace is trimmed. Blank or duplicate names are rejected with column references. With the header option off, column_1, column_2 and so on are generated. Special keys such as __proto__ are safe own JSON properties.
Which CSV syntax is supported?
Comma, semicolon or tab delimiters; quoted delimiters; double quotes escaped as two double quotes; and line breaks inside quoted fields. LF and CRLF are accepted. Physically empty records and a final record separator are skipped, but quoted empty values and delimiter-separated empty cells remain records.
Does the preview contain the complete export?
The table previews the first 50 records and, for wide inputs, the first 50 columns. The JSON output, Copy and Download include every accepted record and column. The download is converted.json, encoded as UTF-8.
Can I convert JSON to CSV too?
Yes. Choose JSON to CSV and provide an array of flat objects. Numbers retain their exact JSON spelling, including large integers and exponents. Columns default to first appearance across objects, including numeric-looking keys; select and reorder them before recomputing. Nested values, duplicate keys and unpaired Unicode surrogates are rejected explicitly.
Is this a lossless round trip?
No. CSV does not preserve JSON types. JSON null, missing keys and empty strings become empty fields; booleans become true or false. CSV to JSON always returns strings and trims headers. Spreadsheet import can reinterpret leading zeros and dates. Formula protection also intentionally changes text.
How does formula protection work?
JSON to CSV defaults to prefixing an apostrophe to strings and headers starting with =, +, -, @, tab or carriage return, or whitespace followed by a formula marker. Numbers and booleans are untouched. A count and preview explain changes. Turn protection off explicitly for raw output. CSV quoting alone does not neutralize formulas; no CSV is universally safe for every spreadsheet.
What are the limits?
Both directions accept 5 MiB UTF-8 input and 50,000 data rows. CSV to JSON allows 4,096 columns and 32 MiB output. JSON to CSV allows 200 distinct columns and 20 MiB output. Both preview 50 records; JSON to CSV also caps the text preview at 8,192 characters. Copy and downloads are complete. Invalid or oversized input is rejected without truncation or replacement of the source.
How was this tool?
Help us improve CSV ↔ JSON.
Opens your email app; you send it there. No email app? Copy your comment and email feedback@tooltulip.com.
Don't include sensitive data.
0/300