Your data never leaves your device — 100% local processing

CSV → JSON converter

First row becomes the keys, every other row becomes an object. Ready for APIs and code.

0 B uploaded — this page has not sent your files anywhere?

Private by design — every conversion runs right inside your browser, so your data is never uploaded anywhere. Safe for customer lists, sales figures and personal data. It even works offline.

Other conversion sites upload your spreadsheet to a server, process it there, and say they delete it after a while. Until that happens, your rows sit on someone else’s server. Here there is no upload step at all. The more sensitive the data — customer lists, payroll, anything with personal identifiers — the more that difference matters. See how to verify it →

More table converters

All-in-one converterCSV → ExcelExcel → CSVJSON → CSVCSV → JSONRepair broken CSVMarkdown table maker

What happens to numbers, dates and empty cells when CSV becomes JSON?

For request bodies and mock data, a JSON array is far handier than a table. This tool takes the first row of a CSV as the keys, turns every other row into one object, and shows the result as JSON indented by two spaces. It also works out types, turning values into numbers, booleans and dates but leaving anything with more than one possible reading as text, so knowing its rules saves you cleanup afterwards.

A closer look

Keys come from the first row. If a name appears twice, the second becomes name_1 and the third name_2, so nothing is overwritten; a blank header cell becomes __EMPTY, then __EMPTY_1, and extra values in rows longer than the header get keys the same way. Empty cells come out as null and completely blank rows are skipped. The file is read as UTF-8 first and, if broken characters show up, read again as EUC-KR, a legacy Korean encoding. The delimiter is whichever of comma, tab, semicolon or pipe appears most often outside quotes in the first 1,024 characters.

Anything that reads as a number becomes a JSON number: 1234, 12.5, 50% (0.5), (123) (-123) and 1E5 (100000), while uppercase TRUE and FALSE become true and false. Values whose meaning depends on the country, such as 1,234 or 1.234, are read with a decimal point or a decimal comma only when the same column (or, failing that, the file) holds a value that settles it, such as 12.5 or 1.234,56; otherwise they stay text. That is how 1.234,56 in a semicolon-separated European or Latin American CSV becomes 1234.56. Year-first dates such as 2024-01-05 and 2024/01/05 are normalized to the string "2024-01-05", with the time appended when there is one, as in "2024-01-05 13:45:00". Numbers that start with 0 or +, such as ZIP code 01234 or a phone number, and whole numbers of 16 digits or more stay text so their value does not change.

How to use it

When it helps

API request testingTurn test cases someone listed in a spreadsheet into a JSON array and drop it into the request body in a tool such as Postman.
Static front-end dataMake a JSON file from a table that rarely changes, such as store locations, FAQs or a price list, and load it in the page.
Database seedsConvert starting categories or code tables into JSON for a seed script to read.
Chart library inputTurn a survey summary CSV into an array of objects and hand it to a chart library; the numbers are already numeric, so no extra parsing is needed.

Common snags

A number like 1,234 came out as the text "1,234".A comma and a point mean opposite things in different countries: in the US 1,234 is one thousand two hundred thirty-four, while in much of Europe and Latin America it means one and 234 thousandths. When nothing in the same column or file shows which is meant, the value is kept as text rather than turned into a number that might be wrong. One value in that column with a clear decimal, such as 12.5 or 1,234.56, is enough for it to be read that way.
A date like 01/02/2024 came out as text.It could be February 1 or January 2. If the same column (or, failing that, the file) has a date whose first number is over 12, such as 31/12/2024, dates are read day-first; if the second number is over 12, such as 12/31/2024, they are read month-first, and the result is written as "2024-02-01". With no such date, or with both kinds mixed, the value stays as written, and so do two-digit years such as 1/2/24. Year-month-day dates such as 2024-01-05 are always read as dates.
A key comes out as "__EMPTY" or as a report title.The first row was a title line rather than the header. CSVs exported from reports often start with a title and a blank line; delete those lines so the real header is the first row, then convert again.
The output box ends with a “display truncated” note.When the result is over 200,000 characters, only the beginning is shown on screen. Copy result and the download still contain all of it.

Tip In the output box, a value in quotes is a string and a value without quotes is a number or true/false; a quick scan for that difference catches most type problems before they reach your code.

Frequently asked questions

Is the first row used as the header?

Yes. Values in the first row become the object keys and data starts from row two. Duplicate keys get _1, _2 suffixes.

Do numbers come out as strings?

No — values recognized as numbers stay numeric (123, not "123"), and empty cells become null. The exceptions are kept as strings so they can’t turn into a wrong number: codes that start with 0, such as ZIP code 01234, whole numbers of 16 digits or more, and values like 1,234 whose meaning depends on the country when nothing in the file settles it.

My CSV shows garbled characters

sheetmoa reads your file as UTF-8 first. If it finds broken characters (�), it retries only with the Korean legacy encoding EUC-KR (CP949), which Korean Excel uses by default; old .xls files are also read with code page 949. No other legacy encoding is tried. Files saved as UTF-8 (Excel's "CSV UTF-8 (Comma delimited)") open correctly, but a CSV saved in Windows-1252 (what Excel's plain "CSV (Comma delimited)" produces on Western-language Windows) can show broken accents such as "A�o". If that happens, re-save the file in Excel as "CSV UTF-8 (Comma delimited)" and open it again.

Is my data uploaded to a server?

No. Every conversion runs inside your browser and your file is never sent over the network. Safe even for customer lists and confidential spreadsheets.

Is it free?

Completely free — no limits on file count or size, and no sign-up.