CSV to JSON Converter

Convert CSV or TSV to a JSON array of objects, with correct handling of quoted fields and a chosen delimiter. Nothing is uploaded — conversion runs locally.

Loading tool…

Worked examples

  • A simple table with a header row

    The everyday case: a CSV exported from a spreadsheet becomes an array of objects keyed by the header row, ready to use in code.

  • Quoted fields containing the delimiter

    CSV quoting rules matter: a comma inside quotes must stay part of one field instead of splitting into an extra column.

  • Tab-separated values

    TSV is common when copying tables out of spreadsheet apps; choosing the tab delimiter parses it the same way as CSV.

What this converter does

This tool reads a CSV or TSV file, treats the first row as field names, and converts every remaining row into a JSON object — producing the JSON array of objects shape that most application code and APIs expect. It uses a proper CSV parser rather than splitting on commas, so quoted fields, embedded delimiters and escaped quotes are all handled correctly.

When you need it

  • Turning a spreadsheet export into JSON your application can loop over.
  • Feeding CSV data into a JavaScript, Python or Node script that works natively with objects and arrays, not rows and columns.
  • Converting a CSV-based data dump into JSON for a mock API, a test fixture, or a seed script.
  • Moving data out of a spreadsheet and into a JSON-based config or database.

Rules the converter applies

  1. The first row is always treated as the header, and its values become the JSON object keys for every subsequent row.
  2. Quoted fields are parsed correctly. A cell like "Turing, Ada connection" stays a single value even though it contains a comma, because it's wrapped in double quotes per the CSV standard.
  3. Every value comes out as a string. CSV has no type system — a cell containing 42 becomes the JSON string "42", not the number 42. Convert types in your own code afterward if you need numbers, booleans or dates.
  4. Blank lines are skipped (including lines that contain only spaces), so trailing empty rows at the end of an exported file don't produce empty objects in the output.
  5. You can choose comma, semicolon or tab as the delimiter, matching how the source file was actually exported.

Why values stay as strings

This is the detail people trip over most: a CSV cell containing 100 and a CSV cell containing 100.00 are both just text in CSV, and converting them to JSON numbers would silently lose that distinction (and, for things like phone numbers or zip codes with leading zeros, would actively corrupt the data by dropping the leading zero). Keeping every value as a string is the only conversion that's correct for all cases; you decide which fields to cast to numbers or booleans based on what you know about your data.

Things to check after converting

  • The delimiter is never guessed. If you leave comma selected for a semicolon- or tab-separated file, the tool stops with a message naming the delimiter to choose, but only when the header row has a single column; a file with a different problem will simply convert into the wrong columns, so look at the first object.

  • Duplicate header names are made unique by appending a number (a, a_1), and an empty header cell becomes an empty-string key, so give every column a distinct name before converting.

  • Confirm the row count matches what you expect. Both CRLF and LF line endings are accepted, and line breaks inside quoted fields stay part of the value.

  • If a "Too few fields" or "Too many fields" error appears, check the reported row (counted from the first row after the header) for more or fewer delimiters than the header has — often caused by an unquoted value that itself contains the delimiter. The same applies to an unterminated quote, which is reported rather than guessed at.

  • A byte-order mark at the start of a file exported from Excel on Windows is removed, so the first header name comes through clean.

Limits

Input is capped at 2 MB. This tool parses the whole file in memory in your browser, so very large exports (hundreds of thousands of rows) may be slow to paste and render, even though the parsing itself is fast.

Frequently asked questions

Is my CSV uploaded anywhere?
No. The conversion runs entirely in your browser; nothing is sent to a server.
What if my file uses semicolons or tabs?
Pick the matching delimiter. If you leave comma selected but the header row contains a semicolon or a tab and only one column is found, the tool stops and tells you which delimiter to choose.
Does the first row have to be a header?
Yes — this tool always treats the first row as field names and uses them as the JSON object keys.
What happens with quoted fields?
Fields wrapped in double quotes can safely contain the delimiter, line breaks or escaped quotes, and are parsed as a single value.
Why are all my values strings, even numbers?
CSV has no type system — every cell is text. Convert fields to numbers or booleans in your own code after parsing if you need that.