Changing a file extension does not convert CSV and JSON. Start with headers, delimiters and data types, then compare a few sample records before processing the full dataset.

The CSV ⇄ JSON converter accepts pasted text. CSV becomes an array of objects with string values; JSON becomes a table. Conversion runs inside the browser.

What the current converter preserves or changes

Input Output behavior What to check
CSV 00123 JSON string “00123” Zeros already removed by another program cannot be recovered
CSV 12.5, true, empty cell “12.5”, “true”, “” No automatic numeric, boolean or null inference
JSON null, missing key, empty string All become empty CSV cells Define a separate column or representation if distinctions matter
Nested arrays and objects Converted to strings, losing structure Flatten into explicit rows and columns first
Long numeric JSON IDs Precision can be lost while parsing Quote IDs as strings in the original JSON
Repeated CSV headers Later cells overwrite the same key Use unique, nonempty column names
More cells than headers Extra cells have no output keys Make column counts consistent

See RFC 4180 for common CSV quoting rules and RFC 8259 for JSON values and numeric interoperability. This converter is not an automatic data-integrity auditor.

Example 1: leading zeros, commas and quotes

Choose CSV → JSON, the comma delimiter and Header row. Paste this and select Convert:

id,name,note
00123,Taro,"Tokyo,Osaka"
00456,Hana,"He said ""Hi"""

Expected data:

[
  { "id": "00123", "name": "Taro", "note": "Tokyo,Osaka" },
  { "id": "00456", "name": "Hana", "note": "He said \"Hi\"" }
]

Check two records and three keys per record. A comma inside a quoted cell is content, not another column. Double quotes inside CSV fields are doubled; JSON represents embedded quotes with a backslash. The ID remains a string with its zeros.

Quoted fields can contain newlines, so the number of visible text lines is not always the record count. Without a header row, disable that option and check the generated column1, column2… keys.

Example 2: a round trip loses type distinctions

Switch to JSON → CSV and paste:

[
  { "id": "00123", "score": 12.5, "note": null },
  { "id": "00456", "score": 0, "note": "" }
]

The comma-separated output is:

id,score,note
00123,12.5,
00456,0,

Converting back produces strings for score and empty strings for both note fields. It cannot restore which note was null. The union of object keys becomes the columns; missing keys also become empty cells.

JSON null, an empty string and a missing key all map to an empty CSV cell, then return as an empty string. Type distinctions are lost.
Current conversion behavior, illustrated by Tools Hub. Keep the original JSON to preserve the meaning of missing values. Open the diagram to enlarge it.

Long IDs and nested JSON

A numeric ID outside JavaScript’s exact integer range can change during parsing. Enter an ID such as “9007199254740993” as a string. Turning an already rounded number into a string afterward cannot recover it.

Flatten nested fields such as {"address":{"city":"Tokyo"}} into explicit columns like address_city first. This converter does not flatten objects automatically; a nested object can become [object Object].

From a sample to a download

  1. Retain the original and prepare a small nonconfidential sample. Use unique, nonempty, simple header names without delimiters, quotes or newlines.
  2. Open the converter, choose direction and comma, tab or semicolon. The header checkbox applies to CSV → JSON; JSON → CSV always writes column names.
  3. Compare record count, column count, IDs and blank values in Output. Copy or download the result, then check a few records again in the receiving application.

Try the two sample records

Check that 00123 and embedded quotes survive

CSV values become JSON strings. Verify records and headers before downloading.

Convert CSV and JSON

Check these limits even when no error appears

  • This is not an encoding converter. Reopen incorrectly decoded source files with the correct encoding rather than pasting mojibake.
  • Downloads use UTF-8 and CSV uses LF line breaks. There is no UTF-8 BOM option. Set encoding and column types in the spreadsheet import dialog.
  • Leading/trailing whitespace around the entire input is trimmed; entirely empty rows are skipped. Do not use this workflow to preserve meaningful blank-row positions or edge whitespace.
  • The parser is not a strict validator for every malformed quote or CSV dialect. No error does not prove complete preservation.
  • OWASP’s CSV Injection guidance explains how untrusted cells starting with characters such as = can become spreadsheet formulas. Quoting alone is not a defense. Check the source and import method; this tool does not neutralize formulas.

Frequently asked questions

How many rows can it handle?

Capacity and processing time depend on the browser, device, column count and content. There is no guaranteed row count. Test a small sample, split larger data when necessary and keep the original.

How can I check JSON syntax?

Use the JSON formatter. Valid JSON can still be unsuitable for this table conversion: use a flat array of row objects.

How can I return for the next data update?

Add the converter to favorites and open it from My Tools on the same browser. It does not retain converted data. Record direction, delimiter and column rules in your own notes, and paste from the original again.

Verification scope

On 24 October 2026, RFC and OWASP guidance was compared with the current parser and the string, null, quoting and leading-zero examples. Automatic flattening, complete type preservation, formula-injection protection and compliance with every CSV dialect are outside scope. See the text comparison guide for checking textual changes.