JSON powers the web, but most people who consume it — analysts, marketers, project managers — don't write code. This step-by-step tutorial shows how to convert JSON to CSV, Excel, YAML, and HTML tables in your browser without installing anything. You'll see how to flatten nested objects, pick the right delimiter for your locale, handle arrays inside arrays, validate before exporting, and avoid the four bugs that ruin 90% of CSV imports.
What You Need to Start
A modern browser — Chrome, Edge, Firefox, or Safari from the last 3 years.
Your JSON — copied from an API response, a file, or a database export.
Nothing else — no installs, no accounts, no signup.
Convert JSON to CSV — Step by Step
Step 1 — Make sure your JSON is an array of objects
[
{ "name": "Alice", "email": "alice@example.com", "role": "Admin" },
{ "name": "Bob", "email": "bob@example.com", "role": "User" }
]
The keys (name, email, role) become the CSV header row.
Step 2 — Paste it into the converter
Open our JSON to CSV Converter and paste your data. Headers are extracted automatically and you'll see a live preview of the resulting table.
Step 3 — Pick a delimiter
| Delimiter | When to use |
|---|---|
Comma , | Standard, default for most spreadsheets |
Semicolon ; | European locales (FR, DE, IT) where comma is decimal |
Tab | Pasting into Google Sheets / Excel without import dialog |
Pipe | | Data already contains commas and semicolons |
Step 4 — Download or copy
Click Download for a .csv file, or Copy to paste straight into a spreadsheet.
Format & Pretty-Print JSON
Minified API responses are unreadable. Paste them into our JSON Formatter to get:
- 2-space or 4-space indentation
- Alphabetical key sort (great for diffing)
- Tree view with collapsible nodes
- Real-time syntax validation
- One-click minification with byte-savings %
Validate Before Converting
| Mistake | Result | Fix |
|---|---|---|
| Single quotes | Parse error | Replace with double quotes |
| Trailing comma | Parse error | Remove last comma in array/object |
NaN / undefined | Invalid JSON | Use null or omit the field |
| Unquoted keys | Parse error | Wrap every key in " |
Comments (//) | Parse error | Remove or switch to JSONC |
Handling Nested JSON
CSV is flat — it has no concept of "object inside object". When your JSON looks like this:
[
{
"id": 1,
"address": { "city": "Tunis", "zip": "1001" },
"tags": ["vip", "early"]
}
]
Our converter offers two strategies:
| Strategy | Output | Best for |
|---|---|---|
| Flatten with dot-notation | address.city, address.zip | Spreadsheets, BI tools |
| Stringify nested values | address = {"city":"Tunis","zip":"1001"} | Round-tripping back to JSON |
| Explode arrays into rows | One row per tag | SQL-style normalisation |
Picking the Right Delimiter
⚠️ Excel in French/German locales cannot open comma-delimited CSV correctly without an Import Wizard. Use semicolon if your audience is in those locales.
Open the CSV in Excel / Google Sheets
Excel: File → Open → choose the .csv → confirm UTF-8 in the import wizard for accents.
Google Sheets: File → Import → Upload → "Replace current sheet" or "Insert new sheet".
Numbers (macOS): Drag the file into a new document — auto-detects delimiter.
Pandas (Python): pd.read_csv("data.csv") — pass sep=";" if needed.
Convert JSON ↔ YAML
For configs, YAML is far easier to read than JSON. Use our YAML/JSON Converter to round-trip in either direction. Comments are preserved on the YAML side; the JSON side strips them (because JSON doesn't allow comments).
Encode JSON for URLs and APIs
| Goal | Tool | Why |
|---|---|---|
| Pass JSON as a query string | URL Encoder | Escape { } [ ] " = |
| Embed in email / SMS | Base64 Encoder | Survive any text channel |
| Sign / verify integrity | Hash Generator | SHA-256 of canonical JSON |
| Inspect a JWT | JWT Decoder | Reveal header + payload claims |
Common Mistakes
| Mistake | Symptom | Fix |
|---|---|---|
| Inconsistent keys across objects | Empty cells in random rows | Normalise schema before export |
Emojis / accents become ? | Wrong CSV encoding | Save as UTF-8 with BOM for Excel |
| Phone numbers turn into scientific | Excel auto-types | Quote them ("+216...") or set column type |
| Dates reformatted | Excel locale | Use ISO 8601 strings, set column to text |
| Massive single-row CSV | You exported an object, not an array | Wrap in [ ] |
Tools
- 🔧 JSON to CSV Converter
- 🔧 JSON Formatter
- 🔧 YAML/JSON Converter
- 🔧 CSV Viewer
- 🔧 URL Encoder
- 🔧 Base64 Encoder
Frequently Asked Questions
How big a JSON file can I convert?
The converter handles 50+ MB inputs in modern browsers without issue. Beyond that, prefer streaming tools like jq or pandas on the command line.
Will my data be uploaded?
No. Conversion runs entirely in your browser. Open DevTools → Network tab and you'll see no requests carrying your input.
Why is my CSV opening as one column in Excel?
Locale mismatch. Save with semicolons or use Data → From Text/CSV in Excel and pick the delimiter manually.
How do I convert JSON to Excel directly?
Convert to CSV first, then File → Open in Excel. Or paste TSV (tab-delimited) directly into a sheet.
Can I keep the conversion in JSON but reformat it?
Yes — use the JSON Formatter for pretty-print, sort keys, or minify.
What about JSON to XML?
Less common today. If needed, run a small x2js snippet in DevTools or use a YAML intermediate plus an XML library.
References
🚀 Free ToolZilla tools used in this article
All client-side, no signup, no upload — open them in a new tab while you read:
- 🔧 JSON to CSV Converter — try it free in your browser.
- 🔧 JSON Formatter — try it free in your browser.
- 🔧 YAML / JSON Converter — try it free in your browser.
- 🔧 URL Encoder & Decoder — try it free in your browser.
- 🔧 Base64 Encoder & Decoder — try it free in your browser.
- 🔧 Hash Generator (MD5/SHA) — try it free in your browser.
- 🔧 JWT Decoder — try it free in your browser.
- 🔧 CSV Viewer — try it free in your browser.
- 🧰 Browse all 60+ free tools →
Converting JSON is a four-step ritual: validate, format, flatten, export. Pick the right delimiter for your locale, encode UTF-8 with BOM for Excel, and stringify nested values you don't need to flatten. Master these and you'll never write a one-off conversion script again.

