JSON ↔ CSV Converter
UTF-8 BOM + CRLF CSV ↔ JSON conversion with no Korean character corruption. Excel-Korean compatible. Client-side processing only (no server upload).
Result
Paste data on the left and click Convert.
What this tool does
The JSON↔CSV converter is a browser-based utility that transforms JSON arrays into CSV files and CSV files back into JSON arrays, with no data ever sent to a server. In the JSON→CSV direction it defaults to UTF-8 BOM and Windows CRLF line endings — the two settings that prevent Korean (Hangul) characters from appearing as garbage in Korean Windows Excel. In the CSV→JSON direction it auto-detects the delimiter (comma, semicolon, or tab), correctly parses quoted cells that contain commas or embedded newlines per RFC 4180, and optionally converts numeric-looking strings to the number type. Results can be copied to the clipboard or downloaded as a file.
Who uses this
- Convert an API JSON response to a CSV that can be opened directly in Excel or Google Sheets
- Convert an Excel-exported CSV to JSON for a database INSERT or REST API request body
- Fix Korean character corruption in Excel by enabling BOM + CRLF when exporting CSV
- Quickly reformat test data during development or QA without installing any software
- Normalize JSON or verify CSV column schema before uploading to Pandas, BigQuery, or similar tools
How to use (3 steps)
- 1Click the direction toggle to select 'JSON → CSV' or 'CSV → JSON'. Sample data switches automatically when you toggle.
- 2Paste or edit the text in the input area. For JSON, the top-level must be an array of objects. For CSV, turn on the 'Header row' option if the first row contains column names.
- 3Review the options (BOM, CRLF, header, number parsing), then click 'Convert'. The output appears on the right — copy it or download as a file. Row and column counts are shown as a summary.
Conversion rules & technical basis
[JSON → CSV] - Column order: keys of the first object in the array - Cell escaping: cells containing a comma, newline, or double-quote are wrapped in double-quotes; internal double-quotes are escaped as "" (RFC 4180) - BOM: UTF-8 BOM (EF BB BF) — prevents Korean character corruption in Korean-locale Windows Excel - Line ending: CRLF (\r\n) for Windows Excel compatibility [CSV → JSON] - Delimiter auto-detection: the character (comma / semicolon / tab) that appears most often in the first row - Quoted-cell parsing: everything between an opening and closing double-quote is treated as one field, including embedded newlines - Number conversion: values matching /^-?\d+(\.\d+)?$/ are converted to the number type when the option is enabled - BOM stripping: a leading UTF-8 BOM in the input is removed automatically - Empty-line skipping: blank rows are ignored during parsing
Example scenarios
Example 1: Convert an API JSON response to an Excel-ready CSV
Paste [{"name":"홍길동","age":30,"city":"서울"}, ...] into the input, select JSON → CSV, enable BOM and CRLF, then click 'Convert'. Downloading the result opens in Korean Windows Excel with all Hangul characters displayed correctly. Column order follows the key order of the first object.
Example 2: CSV with commas inside a cell — address data
If an address cell contains '서울특별시, 강남구' (a comma inside the value), Excel wraps it in double-quotes when exporting. This tool parses the quoted field as a single value per RFC 4180, so the JSON output will contain address: '서울특별시, 강남구' intact — the comma does not split the field.
Example 3: Number auto-conversion option
With 'Parse numbers' on, a CSV column value '30' becomes the JSON number 30 instead of the string '30'. This is convenient for downstream code that expects numeric types. Turn the option off if you need leading zeros preserved (e.g., postal codes like '01234' or phone numbers like '0101234567').
Frequently asked questions
Why does Korean text look garbled when opening a CSV in Excel?
Windows Excel interprets a UTF-8 file without a BOM using the system locale, which on Korean Windows is CP949 (EUC-KR). UTF-8-encoded Hangul read as EUC-KR appears as garbage characters. Enabling the 'UTF-8 BOM' option prepends the three bytes EF BB BF to the file, signalling to Excel that the encoding is UTF-8 and causing Hangul to render correctly.
What JSON structure is supported?
JSON→CSV conversion requires the top-level value to be an array of objects: [ {...}, {...} ]. A single object { ... }, an array of primitives, or a nested array are not supported and will produce an error. Nested objects within a row (object-in-object) are serialized via JSON.stringify and placed in a single CSV cell.
Can it handle semicolon-delimited CSV files?
Yes. In the CSV→JSON direction, the delimiter is detected automatically from the first row: whichever of comma, semicolon, or tab appears most often is used. European CSV files commonly use semicolons, and the auto-detection handles them correctly. If auto-detection picks the wrong delimiter, inspect the first row for ambiguity.
What happens if a row has a different number of columns than the header?
A warning is shown for each mismatched row (row.N.colMismatch). Parsing continues: if the row has fewer cells than headers, missing values are filled with an empty string; extra cells beyond the header count are discarded. Conversion is not aborted.
Is my data sent to any server?
No. All conversion logic runs entirely in your browser using JavaScript. Neither the input nor the output is transmitted over the network. You can safely use this tool with personal data or confidential business data.
Can I choose the download file name?
The download button saves the file as 'worktool-[timestamp].csv' (or .json). You can rename the file in your file explorer after downloading. Some browsers show a 'Save as' dialog where you can change the name and location before saving.
Cautions
- •JSON input must be an array of objects ([ {...}, {...} ]). A single object or a primitive array will cause an error.
- •Nested objects or arrays within a row are serialized as a JSON string into a single CSV cell. Flatten the structure first if you need them as separate columns.
- •EUC-KR (CP949) encoded CSV files are not directly supported. Convert the file to UTF-8 first using Notepad, VS Code, or similar tools before pasting here.
- •Very large files (tens of thousands of rows or more) may be slow or may crash the browser tab due to memory limits.
- •With 'Parse numbers' enabled, values with a leading zero — such as postal codes ('01234') or phone numbers ('0101234567') — will lose the leading zero when converted to a number. Disable the option to keep them as strings.
Related tools
Last reviewed: 2026-06-17