Convert a spreadsheet export into JSON, or a JSON payload back into CSV, with the delimiter detected for you and the parsed table shown as a table before you commit to the output. Types are inferred, headers are cleaned into usable keys, and the three JSON shapes people actually need are all one click apart.
Delimiter detection
auto
JSON shapes out
3
Directions
2
Rows uploaded
0
Step by step
How to use it
01Paste the export
CSV, TSV, or semicolon-separated — the delimiter is detected from the content, and you can override it if the guess is wrong. Everything is parsed in your browser.
02Check the parsed table, not the output
The table is rendered from what the parser actually understood. If a row is short, a quote is unbalanced, or a column has landed under the wrong header, it is visible here before it becomes JSON.
03Decide how strongly to interpret the data
Type inference turns 42 into a number and true into a boolean. Header cleaning turns Order Date into order_date so the keys are usable as identifiers. Both are on by default and both are worth turning off for data that must survive untouched.
04Pick the JSON shape the consumer expects
An array of objects for most APIs, an array of arrays when the header is implied, or NDJSON — one object per line — for log pipelines and bulk import endpoints.
Worked example
One CSV, three JSON shapes
The same two rows, output three ways. The shape is not a formatting preference — it is what the receiving system expects, and sending the wrong one is a common integration failure.
Given
Input
2 rows, 3 columns
Header
id, name, active
Inference
on
objects · arrays · ndjson
objects [{"id":1,"name":"ada","active":true}, …]
self-describing, the usual API shape
arrays [[1,"ada",true], [2,"grace",false]]
compact; the header lives elsewhere
ndjson {"id":1,"name":"ada","active":true}
{"id":2,"name":"grace","active":false}
one object per line, streamable
Most portable
objects
Smallest
arrays
Streamable
ndjson
Objects repeat every key on every row, which is verbose and completely unambiguous — the right default. Arrays are the compact form when the schema is agreed in advance. NDJSON is the one people forget exists: because each line is a complete document, a consumer can process a million rows without holding the file in memory, which is why log and bulk-import endpoints ask for it.
Before you trust the conversion
What to know about CSV
CSV has no standard, only conventions
The delimiter, the quoting, the line ending, and whether a header exists are all decisions the producer made without telling you. That is why the delimiter is detected rather than assumed, and why the parsed table is shown before the output — the table is the only honest confirmation that the guesses were right.
Type inference is a guess with consequences
A leading-zero product code becomes 00123 → 123, a phone number loses its plus sign, and a long identifier can exceed what a JSON number holds exactly. Inference is on because it is right most of the time, but for identifiers, codes, and anything you will match against later, turn it off and keep strings.
Quotes are where exports break
A field containing the delimiter must be quoted, and a quote inside it must be doubled. Exports that build CSV by string concatenation get this wrong constantly, and the symptom is a row with too many columns or a value that swallowed the rest of the file.
Header names are rarely valid keys
Spreadsheet headers carry spaces, punctuation, and casing that make awkward JSON keys and awkward variable names. Cleaning normalises them to underscore-joined identifiers — useful for code, worth disabling when a downstream system matches on the exact original string.
Going back to CSV flattens what will not fit
JSON nests and CSV does not. An object with nested objects or arrays has to be flattened or serialised into a cell on the way out, and the round trip will not return the structure you started with. CSV is a destination for tabular data, not a container for documents.
The data never leaves your browser
Parsing and conversion both run locally, which matters because the files people convert are customer exports, order histories, and internal reports. Nothing is uploaded, and the share link carries only the settings.
The judgement call
Which settings for which data?
The defaults suit an ordinary spreadsheet export. These are the cases where they are wrong.
IDs, product codes, or postcodes
Inference off
Leading zeros disappear and long identifiers lose precision once they become numbers.
An export destined for code
Clean headers
Order Date becomes order_date — a usable key in every language, and stable across exports.
Feeding a bulk import or a log pipeline
NDJSON
One complete document per line, so the consumer never has to hold the whole file in memory.
A European export with semicolons
Set the delimiter
Detection usually gets it, but locales that use a comma as a decimal separator are worth confirming by eye.
Nested JSON going to CSV
Flatten first
CSV has no nesting. Decide how children collapse into columns rather than letting the conversion decide for you.
The parsed table looks wrong
Fix the quoting
Misaligned columns are nearly always an unbalanced quote in the source, not a parser bug.
Reference
How the conversion is defined
Delimiter
Detected, or set by handComma, semicolon, and tab are the usual candidates; detection reads the content rather than the file extension.
Quoting
RFC 4180 styleFields containing the delimiter, a quote, or a newline are quoted; embedded quotes are doubled.
Type inference
Numbers and booleansOn by default. Leaves everything else as a string, and can be switched off entirely.
Header cleaning
Trimmed, underscore-joinedNon-alphanumeric characters become underscores; empty headers get a positional fallback name.
JSON shapes
objects · arrays · ndjsonArray of records, array of rows, or newline-delimited documents for streaming consumers.
Row errors
Reported, not silently fixedShort and long rows are surfaced so a broken export is visible before it becomes valid-looking JSON.
FAQ
Questions, answered plainly
How do I convert CSV to JSON?
Paste the CSV in. The delimiter is detected, the first row is treated as a header unless you say otherwise, and the result appears as an array of objects. Check the parsed table first — it shows exactly what the parser understood, which is where quoting problems become obvious.
Why did my product codes lose their leading zeros?
Type inference turned them into numbers, and 00123 as a number is 123. Switch inference off for any file containing identifiers, codes, postcodes, or phone numbers; it will keep every value as a string exactly as written.
What is NDJSON and when should I use it?
Newline-delimited JSON: one complete object per line, with no wrapping array and no commas between records. Log pipelines and bulk import endpoints prefer it because a consumer can process one line at a time without loading the whole file into memory.
Can I convert JSON back to CSV?
Yes — switch the direction. Bear in mind that CSV has no nesting, so objects and arrays inside a record have to be flattened or serialised into a single cell. A round trip through CSV will not restore nested structure that was there in the original JSON.
My columns are misaligned. What went wrong?
Nearly always an unbalanced quote in the source file. A field containing the delimiter must be quoted and a quote inside a field must be doubled; exports that assemble CSV by concatenating strings frequently get this wrong, and one bad row can swallow the rest of the file.
Is my file uploaded?
No. Parsing and conversion both run in your browser, so customer exports, order histories, and internal reports stay on your machine. The share link carries the settings only — never the data.
Parsing and conversion both run in your browser. No rows are uploaded, logged, or retained, which makes the tool usable on customer exports and internal reports.