JSON to Relational CSV Converter
Convert complex API JSON into clean, relational CSV tables — fully in-browser and privacy-first.
Convert API JSON to relational CSV tables
What is “relational CSV”?
Most JSON-to-CSV tools flatten everything into a single sheet, which breaks joins and makes analytics painful. Relational CSV keeps one main table plus child tables for arrays. Each child table carries a foreign key (_parent_row_id) back to the main table so you can join in SQL or spreadsheets.
This preserves shape and intent: arrays of objects become rows; nested objects flatten into columns; irregular or mixed arrays are stringified instead of silently dropped.
How child tables work
Arrays of objects become their own tables. Every row gets _parent_row_id (the main row it belongs to) and _index to preserve order. Primitive arrays can optionally explode into a simple two-column table (_parent_row_id, value). This mirrors how you'd model one-to-many relations in SQL.
You can also prefix child table names or replace dots with underscores for warehouse-safe identifiers.
Import into Postgres, BigQuery, or Sheets
Download the main/child CSVs, plus SQL DDL that sets primary keys and foreign keys. In warehouses, load the CSVs, then run the generated schema.sql. In Sheets/Excel, use _row_id and _parent_row_id to join with VLOOKUP/XLOOKUP or pivot tables.
- Main PK:
_row_id - Child PK:
(_parent_row_id, _index) - FKs:
_parent_row_id → main._row_id
Examples
[{ "id": "ord-1", "items": [{ "sku": "A1", "qty": 2 }, { "sku": "B2", "qty": 1 }], "tags": ["vip","online"] }]_parent_row_id, _index, sku, qty. Tags can explode into a tag_values table if enabled.id,team.0,team.1,metrics.total,metrics.daily.0 unflattens back to objects when you tick “Unflatten”. Mixed paths are coerced and flagged as warnings.