Toolivaro

Free CSV to JSON Converter

Convert CSV files and pasted tables into JSON objects with automatic delimiter detection and header mapping.

The CSV-to-JSON converter turns spreadsheet exports and pasted tables into JSON objects, ready for APIs, scripts, and data work. Paste CSV text or load a file, and the converter parses it with RFC 4180 semantics — quoted fields, embedded commas, escaped quotes, and multi-line cells all handled — maps the first row to object keys, and produces a JSON array of objects. The delimiter is auto-detected from common candidates (comma, semicolon, tab, pipe) with a manual override, and blank headers are named column_1, column_2, and so on. Duplicate headers are rejected with a clear error instead of silently dropping data. The tool works entirely in your browser: pasted or uploaded data never leaves your device, is never logged, and is never transmitted — important for customer lists and internal spreadsheets. The output is presented with indentation for reading, with copy and download actions for the compact form. Use this converter when moving data between spreadsheets and applications, preparing fixtures, or migrating from CSVs to a JSON API.

Processed locally in your browser

Processed locally in your browser — data is never uploaded, logged, or stored.

How to use this calculator

How the header row becomes the schema

CSV-to-JSON works on one assumption: the first row names the columns. The converter maps each header to an object key, and every data row becomes one object with those keys — the shape most APIs, scripts, and data pipelines expect. The mapping is literal: header names become keys exactly as written, so a header like "user name" produces the key "user name" with the space intact, and blank headers are named column_1, column_2, and so on so no data is dropped.

The strict part is the duplicate check: two columns with the same header would silently overwrite each other in a naive conversion, so the converter rejects the file with a clear error instead of losing data. If your spreadsheet has repeated headers, fix the source — the error names the column — rather than converting around it.

Why every value stays a string

CSV has no type information: a cell is text, and nothing in the format says whether "30" is the number thirty, the string "30", or a product code. The converter never guesses — every value is emitted as a JSON string, so "30" stays "30" and an empty cell stays an empty string. Type conversion (string to number, string to boolean) belongs in the receiving application, where the decision is explicit and testable.

That discipline is the honest behavior for a data tool: guessing types at conversion time looks convenient until a leading-zero id like "007" silently becomes the number 7. The example on this page shows the difference directly — the age "30" is quoted in the output on purpose.

Handling the messy cases: quoting, delimiters, newlines

Real spreadsheet exports are not simple comma-separated text. RFC 4180 covers the cases that break naive parsers: a field containing a comma, a quote, or a line break is wrapped in double quotes, and a double quote inside a quoted field is doubled ("") so it is distinguishable from the closing quote. The converter parses all of it — embedded commas, escaped quotes, multi-line cells — which is why a "New York, NY" value stays one cell and a cell containing a newline stays one field.

Delimiters are the other point of friction: European exports commonly use semicolons, and tab or pipe delimiters appear in tools and exports. The converter auto-detects the delimiter from common candidates, with a manual override when detection picks wrong — the selector makes the choice explicit rather than silent.

The local promise

Customer lists, internal spreadsheets, and payroll exports are precisely the data that should not be uploaded to a converter on the internet. Everything runs in your browser: the CSV is parsed locally, nothing is uploaded, logged, or stored, and copy and download actions deliver the JSON where it is needed. The honest limits are on the page too: the converter reads the whole file into memory, so it is built for typical spreadsheets, not database dumps.

How is the result calculated?

Converting a customer export

A spreadsheet export contains name, age, and city columns. The converter maps the header row to keys and produces objects for each data row. Note that "30" stays a string — CSV carries no type information, and the converter never guesses.

Example input and output
Input Value
csv name,age,city Alice,30,Paris Bob,25,"New York"
Result [{"name":"Alice","age":"30","city":"Paris"},{"name":"Bob","age":"25","city":"New York"}]

What is the formula and its assumptions?

Header mapping

object = { header_1: cell_1, …, header_n: cell_n }

Formula terms
Symbol Meaning
header_i value of the first row, i-th column
cell_i value of the data row, i-th column

Every value is a string — CSV has no type information. Numbers stay quoted in JSON output; convert types in your application.

Field quoting (RFC 4180)

quoted ⇔ cell contains delimiter, quote, or newline

Formula terms
Symbol Meaning
quote a double-quote inside a quoted field is doubled ("")

What are the most common mistakes?

  • Expecting numbers and booleans in output — CSV cells are always strings; type conversion belongs in the application.
  • Converting files with duplicate headers, which the converter rejects rather than silently overwriting columns.
  • Pasting data into an online converter that uploads it — this tool processes everything locally.

What are the assumptions and limitations?

  • CSV carries no type information, so all JSON values are strings.
  • Nested data (arrays or objects inside a cell) must be encoded by your own convention; CSV is a flat format.
  • Very large files are read fully into memory — the tool is designed for typical spreadsheets, not database dumps.

Where do the numbers come from?

Last reviewed August 4, 2026 · Version 1.0.0 · Toolivaro does not guarantee external content.

Frequently asked questions

Are my numbers converted to JSON numbers?

No — CSV has no type information, so every value stays a string ("30", not 30). Converting types in the receiving application is safer than guessing, which is why the converter never guesses.

What happens with a quoted field containing a comma?

It is parsed as a single cell: "New York, NY" stays one value. Embedded double quotes are doubled (RFC 4180) and unescaped on parse.

Can the converter handle semicolon-delimited files?

Yes — the delimiter is auto-detected from common candidates, and you can override it manually with the delimiter selector if detection picks wrong.

What happens to empty cells?

An empty cell becomes an empty string in the JSON output — the position in the row is preserved, so the column alignment stays intact and downstream code can decide how to treat blanks.

Why is my JSON output all on one line?

The output is presented with indentation for reading; the copy and download actions offer the compact form, which is the version most APIs and scripts consume. Both are valid JSON with identical data.

Part of Developer text and JSON toolkit

Found a mistake or have a correction? Report it — we review every correction.

Was this helpful?

Reviewed by the Toolivaro editorial team per our methodology Methodology · Editorial policy