JSON ↔ CSV Converter
Convert CSV, TSV, and JSON locally with file import, JSON Lines, 2D arrays, nested object flattening, delimiter detection, and copy/download output.
Delimiter
JSON indent
Use header row
Trim fields
Skip empty lines
CSV to JSON
Flatten nested objects
JSON
⇄
CSV
Quick Start
Common Scenarios
Excel copy to JSON
copy a cell range from Excel or Google Sheets, paste the tab-delimited text into the CSV pane, and convert it to a JSON object array.
API response to spreadsheet
convert JSON responses to CSV for analysis in Excel or Google Sheets.
Import payload prep
turn pasted CSV rows into JSON payloads for import scripts or API requests without running the import here.
Log review
convert CSV logs to JSON before using downstream query tools; this page does not run jq expressions.
Mapping table migration
switch the current pasted mapping table between CSV and flat JSON config snippets.
Data cleanup
quickly clean exported data with field trimming and empty-line skipping.
Conversion Contract
Usage Advice
Round Trip Boundaries
Limitations & Compatibility
Privacy & Security
FAQ
CSV (Comma-Separated Values) is a plain-text table format where each line is a record and fields are separated by commas. TSV is the tab-delimited variant. Excel can open and export both formats, but .xlsx itself is a binary workbook format. This tool works with plain-text CSV/TSV, not .xlsx files. Historically, CSV had no single strict standard. In 2005, RFC 4180 defined common rules: fields are comma-separated, fields with special characters are wrapped in double quotes, and quotes inside quoted fields are escaped as two double quotes. Different apps still implement CSV with small differences, which is why import/export issues are common.
The tool scans the first non-empty row and counts commas, tabs, semicolons, and vertical bars (|) that appear outside quoted fields, then picks the most frequent one as delimiter. This is accurate for most well-formed CSV/TSV data. Mis-detection can happen when there is only one column, when the first row is not representative, or when field content itself contains many delimiter characters. If that happens, choose the delimiter manually.
When enabled, the first CSV row is treated as column names, and each record becomes a JSON object keyed by those names (for example, {"name": "Alice", "age": "30"}). Blank header cells become col1, col2, and duplicate names get suffixes such as name_2. When disabled, all rows including the first are treated as data and converted to a 2D array (for example, [["name", "age"], ["Alice", "30"]]). In JSON → CSV direction, enabling header outputs object keys as the first CSV row when the JSON shape has object keys.
Not losslessly. Turn on Flatten nested objects to write plain objects as escaped dot-path columns such as user.name. Arrays stay JSON strings, and CSV -> JSON does not rebuild nested objects from those paths.
Yes, for copied cell text. Excel and Google Sheets usually copy ranges as tab-delimited text, and .csv/.tsv files can also be imported locally. This tool does not parse .xlsx workbooks, formulas, sheet tabs, or formatting.
The tool follows RFC 4180: if a field contains a delimiter, newline, or double-quote character, the entire field is wrapped in double quotes; quotes inside the field are escaped as two consecutive double quotes (""). Parsing and output generation both follow this rule. If input contains an unclosed quote mark, you will see the "Unclosed quote in CSV input" error.