Free CSV to JSON converter
Paste CSV or drop a spreadsheet export. Set each column's type so numbers come out as numbers and ZIP codes keep their leading zeros, then download JSON that's ready for an API or an import.
Runs in your browser. Your file is never uploaded.
You can also drop a file anywhere on this page. Up to 50 MB.
Result
Paste CSV or choose a file, and the JSON preview appears here.
Saved you some time? Chip in to keep these tools free (opens Stripe in a new tab)Missing something? Suggest a tool
How it works
- 1
Paste CSV or choose a file
Comma, semicolon, tab, and pipe separators are detected for you. Files saved by Excel on Windows are read correctly too.
- 2
Check the column types
Each column starts on Auto, which picks number, true/false, or text from the values. Change any column that guessed wrong.
- 3
Download the JSON
Choose a JSON array for most APIs, or JSON Lines for bulk imports and data tools that read one record per line.
- Auto types
- A column becomes a number only when every value is a plain number without leading zeros, so 02134 stays "02134". It becomes true/false only when every value is true or false.
- Number and True/false
- Choosing a type converts what it can, including yes/no and 1/0 for true/false. Values that don't fit stay text, and the result lists how many there were.
- Nested objects
- With dotted names turned on, address.city and address.state become one address object. A dotted name that would overwrite another column keeps its flat name.
Questions
What happens to rows with too many values?
The extra values are kept in columns named column_3, column_4, and so on, and the result says how many rows had them. Nothing is dropped.
Why are long ID numbers kept as text?
JavaScript, and many tools built on it, can't store whole numbers above 9,007,199,254,740,991 exactly. Keeping long IDs as text keeps every digit.
How big a file can it handle?
Up to 50 MB. Most computers handle that in a few seconds. If you convert files that size on a regular schedule, a small automated job is usually the better fit.
Is my file uploaded anywhere?
No. The conversion runs in your browser with the JavaScript on this page. Your data never leaves your computer, and nothing is kept after you close the tab.
Preparing the same import over and over?
I build integrations that send the data straight to the API, so nobody has to export, convert, and upload it by hand.