Skip to content

Convert between CSV, Excel and JSON

Convert spreadsheets between CSV, XLSX and JSON in any direction with a table preview; the data is converted on your device.

Convert to
Drop a CSV, Excel or JSON fileCSV, TSV, XLSX, XLS, ODS, JSON · up to 500 MB
Choose fileProcessed on your device — never uploaded
Runs in your browser · no uploadHow it works

How to use CSV ↔ Excel ↔ JSON

  1. 1

    Add your data

    Drop a CSV, TSV, Excel (XLSX, XLS), ODS or JSON file — or paste the data straight from a spreadsheet or code editor.

  2. 2

    Pick the output

    Choose JSON, CSV, TSV, Excel or ODS. The preview table shows exactly what was read, so you can fix the delimiter, header row or sheet.

  3. 3

    Fine-tune and download

    Choose a JSON shape, nesting, delimiter or BOM, check the output preview, then download the file or copy it.

Limits and Pro

Files up to 500 MB, any number of rows and columns; one sheet converted at a time.

Files up to 4 GB. See Pro

About CSV ↔ Excel ↔ JSON

This converter moves tabular data between the three formats people swap most: CSV (and TSV), spreadsheets (Excel XLSX, older XLS, XLSB and OpenDocument ODS) and JSON. Every direction works, so the same page turns a CSV export into JSON for an API, an API response into an Excel sheet for a colleague, or a workbook into a clean CSV for a database import.

Reading is forgiving. CSV delimiters (comma, semicolon, tab or pipe) are detected automatically, quoted fields with line breaks are handled, and legacy Windows-encoded exports are decoded correctly. Type detection turns numbers, true/false and ISO dates into real values while keeping identifiers such as ZIP codes or "007" as text. For JSON input it understands arrays of objects, arrays of arrays, column-keyed objects, objects keyed by ID, a single object and JSON Lines; nested objects can be flattened into dot-notation columns such as address.city.

Writing is configurable: JSON as an array of objects (optionally re-nesting dot keys), an array of arrays or one array per column, pretty-printed or compact; CSV with any delimiter and an optional UTF-8 byte-order mark for Excel on Windows; and XLSX or ODS with numbers, dates and booleans stored as typed cells and columns sized to their content.

A virtualized preview pages through even very large files. Limits: formulas are exported as their last calculated values, only one sheet is converted at a time, and cell styling, merged cells and charts are not carried over.

Privacy

Files and pasted data are parsed and converted by a Web Worker in this tab with Papa Parse and SheetJS; nothing is uploaded, and pasted text is not saved anywhere. The conversion libraries are part of this site and load only when you add data.

Features

Every direction

CSV, TSV, XLSX, XLS, ODS and JSON in and out.

Live preview

A virtualized table shows exactly how your data was read.

JSON your way

Objects, arrays or columns; nested or flat; pretty or compact.

Never uploaded

Conversion happens in a worker inside your browser.

CSV ↔ Excel ↔ JSON: frequently asked questions

How do I convert an Excel file to JSON?
Drop the .xlsx or .xls file, pick the sheet if there are several, and choose JSON as the output. With “First row is the header” on, each row becomes an object keyed by the column names; numbers, dates and true/false values keep their types. Download the .json file or copy it to the clipboard.
Why does my CSV open with garbled accents in Excel?
Excel on Windows often assumes a legacy encoding unless the file starts with a UTF-8 byte-order mark. Turn on “Add UTF-8 BOM” when exporting CSV or TSV and characters like é, ü or 中 will display correctly. Spreadsheets in Google Sheets, Numbers and LibreOffice read UTF-8 either way.
What do the JSON shapes mean?
Array of objects gives one object per row, the format most APIs and JavaScript code expect. Array of arrays keeps rows as plain lists with the header row first, which is compact. Keyed by column produces one array per column — handy for charting libraries and pandas-style data frames.
How are nested JSON objects turned into columns?
With “Flatten nested objects” on, nested values get dot-notation column names: {"address": {"city": "Oslo"}} becomes a column called address.city, and array items become tags.0, tags.1 and so on. Converting back with “Nest dot keys” rebuilds the original structure from those column names.
Can it handle very large files?
Yes, within your device's memory. Parsing runs in a background worker so the page stays responsive, and the preview only renders the rows on screen, so files with hundreds of thousands of rows scroll smoothly. As a rough guide, allow about ten times the file size in free RAM for Excel workbooks.

Other tasks with this tool