/tools/json-to-csv
Streaming JSON to CSV Converter
Convert a root or nested JSON array of objects to RFC 4180 CSV with two bounded passes and direct file writing.
JSON source
No source selected.
Conversion progress
Two passesNo conversion has run.
- Pass 1
- Strict UTF-8 and JSON validation; locate the exact array; discover first-seen columns.
- Pass 2
- Re-scan records and stream quoted CSV bytes to the selected destination.
/stream
Convert a large JSON file to CSV without loading it into RAM
A selected File remains file-backed. The worker reads bounded chunks, validates the complete JSON document, discovers a stable header, and then re-reads the source while applying output backpressure. Memory use therefore depends on the chunk and at most one row's property ranges, not the total file size.
- Choose a JSON file or paste a small sample.
- Leave the pointer blank for a root array, or enter an exact pointer such as
/data/items. - Choose CSV delimiter, line ending and optional BOM.
- Select a destination and let both passes complete.
/mapping
Predictable JSON-to-CSV value rules
One object becomes one row
Top-level object properties become columns in first-seen order. Missing properties are empty, explicit null is null, booleans and numbers keep their JSON spelling, and strings are decoded and CSV-escaped.
Nested values stay intact
Nested objects and arrays become compact JSON inside one quoted field. The converter does not invent flattening rules or explode arrays into duplicate rows.
Every selected array member must be an object. Duplicate row keys and more than 10,000 distinct columns are rejected rather than silently discarded.
/limits
Browser support and practical limits
Direct multi-gigabyte writing requires a desktop browser with File System Access support. Other browsers use a Blob download fallback capped at 100 MiB for both source and output. The source limit is 4 GiB; the completed CSV can be larger when written directly.
Is any data uploaded?
No. The file, pointer, column names and resulting CSV never leave the browser. Analytics receives only a content-free activation after successful completion.
/faq
Large JSON to CSV questions
Are nested objects flattened?
No. A nested object or array remains compact JSON inside one quoted CSV field, avoiding invented column names or duplicate rows.
Why are two passes required?
The first pass discovers the complete stable header and validates every row. The second can then write each row once in that column order.