OffTility

CSV to JSON

Turn CSV into a JSON array of objects. Nothing you paste ever leaves this tab.

0 characters

Nothing you type here is sent anywhere.

Delimiter

What this tool does

CSV to JSON turns a CSV export — from a spreadsheet, a database dump, an API's CSV endpoint — into a JSON array of objects, one per row, keyed by the header row's column names. It's built for the routine need to feed spreadsheet data into code that expects JSON.

Paste CSV and the JSON appears automatically, updating as you edit.

How to use it

Paste CSV text into the input box. The delimiter is auto-detected (comma, semicolon, or tab), or you can force one if auto-detection guesses wrong. Toggle off "First row is a header" if your data has no header row — column names become `column1`, `column2`, and so on instead.

Copy the resulting JSON with one click, or download it as a `.json` file. Clear the input any time to start over.

Why nothing leaves your device

Spreadsheet exports are frequently the exact place customer data, financial figures, or internal records live in their most exposed, plain-text form — that's the whole point of CSV. Running a conversion like this through a server means that data crosses the network on its way to a tool that has no reason to see it.

Parsing runs on plain JavaScript already loaded into this tab. Nothing is uploaded, and nothing about what you pasted is kept once you leave the page — check your network tab while using it and you'll see no request carrying your data.

What this does well — and what it doesn't

This handles standard CSV correctly, including quoted fields that contain the delimiter itself, escaped double quotes (`""`), and fields spanning multiple lines — not just a naive split on commas, which breaks on real-world exports constantly.

Every value comes through as a string, matching what's actually in the CSV file — this tool doesn't guess whether `"30"` should become the number `30` or stay text, since that guess is often wrong for things like ZIP codes or ID numbers that happen to look numeric. Convert types afterward if you need them as numbers or booleans.