The 30-second path, click by click
You searched a shorthand query, so here is the shorthand answer, with every click named. Step one: scroll to the converter at the top of this page. You will see two boxes side by side. The left one is labelled Input JSON, and its placeholder reads Paste raw JSON data here or drag and drop a .json file. Click inside it and paste your JSON with Ctrl+V or Cmd+V.
Step two is not a click at all, because Auto Convert is switched on by default. The moment you paste, the right-hand box, labelled Output CSV, fills with the converted result, and the status badge above the left box switches from Ready to Valid (N rows), where N is your row count. If you ever switch Auto Convert off, the Convert to CSV button in the settings bar does the same job on demand.
Step three: click Download .csv in the top-right corner of the Output CSV box. The file downloads immediately, named data-export-YYYY-MM-DD.csv with today date, as plain UTF-8 text. Open it in Excel, Google Sheets, or any text editor. There is no sign-up, no upload, and no waiting room: the conversion happens on your own machine, inside this browser tab.
That is the whole path, and it is the right one for a one-off conversion. The rest of this guide exists for the three moments where people get stuck: not knowing what counts as pasteable JSON, not trusting the output, and hitting the red Invalid JSON badge. Each one has a short, concrete fix below.
What to paste: four shapes that all work
The converter accepts more shapes than most people expect, and knowing them saves a round of reformatting. The most common shape is an array of objects: a list wrapped in square brackets, where each item is one row. Paste that and each object becomes one row, with the header row taken from the union of every key found anywhere in the data.
The second shape is a single object, with no square brackets at all. Paste one object and you get a one-row CSV: the keys become the header row and the values become the single data row. The third shape is the wrapped API response, where the array sits under a key, like {"users": [...]}. The converter finds the first top-level array of objects and converts that, so you can paste the raw API response without unwrapping it by hand.
The fourth shape is JSON Lines, also called NDJSON: one JSON object per line, with no commas or outer brackets. Paste that and each line becomes one row. And if you paste a bare array of plain values, like ["apple", "banana", "cherry"], you get two columns, index and value, numbered from one. All five shapes below were run through the real converter engine before this guide was published, so the outputs are exact.
The worked example below is the wrapped shape, because it is the one that confuses people most: two users, each with a nested address object and a tags list. With the default settings, the address flattens into address.city and address.zip, and the tags list joins into one cell with a semicolon and a space.
{
"users": [
{ "id": 1, "name": "Ana", "address": { "city": "Lima", "zip": "15001" }, "tags": ["new", "vip"] },
{ "id": 2, "name": "Ken", "address": { "city": "Osaka", "zip": "530-0001" }, "tags": ["new"] }
]
}
# Output CSV, default settings (verified):
# id,name,address.city,address.zip,tags
# 1,Ana,Lima,15001,new; vip
# 2,Ken,Osaka,530-0001,newThe 10-second check before you download
Before you click Download .csv, spend ten seconds on four checks. They catch every common surprise while the fix is still one click away. First, read the status badge: it should say Valid (N rows), with N equal to the number of records you pasted. If N is one and you pasted fifty records, the converter saw one object, not fifty, and you probably pasted a wrapped response with an unexpected shape.
Second, read the header row in the Output CSV box. It should name the columns you expect. A column named address when you expected address.city means Flatten Nested Objects is off, which is covered in the settings section below. Third, read one nested cell: if a list you expected to see as new; vip shows as JSON text with doubled quotes, flattening is off too.
Fourth, glance at the output stats under the CSV box: rows, columns, file size, and conversion time. Rows and columns should match your mental picture of the data, and the conversion time for ordinary files is a few milliseconds, so a large number there means an unusually large file, not a slow tool. The output opens in Table View by default, which is the easiest view for these checks; Raw CSV shows the same data as plain text, exactly as it will appear in the downloaded file.
If all four checks pass, download. If one fails, the fix is in the settings or in the JSON itself, and both are covered next. The habit to build is this one: check first, download second. It takes ten seconds and it is the difference between a CSV that opens correctly on the first try and one you convert twice.
Setting 1: Flatten Nested Objects
The settings bar above the two boxes holds three toggles and a delimiter dropdown, and all three toggles start switched on. The first toggle, Flatten Nested Objects, is the one that changes the result most. Switched on, nested objects become dot-notation columns: address becomes address.city and address.zip, and each value lands in a real column you can sort and filter.
Switched off, nested values stay exactly as they are: the address object lands in a single address cell as JSON text, and the tags list lands in a single tags cell as a JSON array. The doubled quotes you see in that output are not corruption; they are CSV escaping doing its job, because a cell containing quotes must double them and wrap the whole cell in quotes. The data is intact, but it is not a table you can filter, which is why flattening stays on for nearly every conversion.
The same file with flattening off is shown below so you can recognize the difference on sight. If your CSV ever comes out full of {"city": ...} text, this toggle is the cause, and switching it back on is the whole fix. Our guide to flattening JSON to CSV documents the toggle cell by cell, including the edge cases where leaving it off is the right call.
# Output CSV, flattening off (verified):
# id,name,address,tags
# 1,Ana,"{""city"":""Lima"",""zip"":""15001""}","[""new"",""vip""]"
# 2,Ken,"{""city"":""Osaka"",""zip"":""530-0001""}","[""new""]"Setting 2: Delimiter
The Delimiter dropdown chooses the character between columns: Comma (,), Semicolon (;), Tab, or Pipe (|). Comma is the default, and it is the right choice unless your spreadsheet expects something else. Change it only when you have a reason, because the delimiter is the setting most likely to produce a CSV that looks broken in the next program.
The classic symptom is a file that opens in Excel as a single tall column: every row is there, but all the values are crammed into column A. That means the file delimiter and the delimiter Excel expects do not match. The fix is to re-download with Delimiter set to Comma, or to open the file through Excel Data, From Text/CSV, where you can pick the delimiter explicitly instead of letting Excel guess.
One subtlety is worth knowing. When you switch to Semicolon, any cell that itself contains a semicolon gets wrapped in quotes automatically, so the file stays parseable. The tags cell new; vip becomes "new; vip" in the semicolon version below. That quoting is correct CSV, and every spreadsheet reads it back as the single value new; vip. Do not strip the quotes by hand; they are load-bearing.
# Output CSV, semicolon delimiter (verified):
# id;name;address.city;address.zip;tags
# 1;Ana;Lima;15001;"new; vip"
# 2;Ken;Osaka;530-0001;newSetting 3: Include Headers
The third toggle, Include Headers, controls whether the first row of the CSV names the columns. Leave it on, which is the default, and the first row reads id,name,address.city,address.zip,tags. Switch it off and the same file returns just the two data rows, with no header row at all: 1,Ana,Lima,15001,new; vip and then 2,Ken,Osaka,530-0001,new.
Headers off is a niche setting, and it exists for one situation: appending to an existing CSV that already has a header row. If you paste a second batch of records into a file that already names its columns, a second header row in the middle would corrupt it, so you convert the new batch without headers and append the bare rows. For every other situation, keep headers on: a CSV without a header row is a table with no column names, and the next person to open it has to guess what each column means.
The fourth control in the settings bar is not a toggle but the Convert to CSV button, and it matters only when Auto Convert is off. With Auto Convert on, which is the default, the output updates as you type. With it off, nothing converts until you press the button. If you ever paste JSON and the output stays empty, check Auto Convert first: it is the most common reason for a blank right-hand box, and the fix is one click.
When the badge says Invalid JSON
If the JSON you paste is not valid JSON, the status badge turns red and reads Invalid JSON, and a red error line appears under the input box carrying the parser exact message. For example, pasting {bad json produces the message Expected property name or '}' in JSON at position 1 (line 1 column 2). Pasting nothing at all produces Input is empty. Please paste or upload JSON data. The message tells you where the problem is, so read it before you retype anything.
Three mistakes cause nearly every Invalid JSON badge. The first is a trailing comma: a comma after the last item in an object or array, like {"id": 1,}. JSON forbids it, even though JavaScript allows it, so delete the comma. The second is single quotes around keys or strings: JSON requires double quotes, so {'id': 1} is invalid and {"id": 1} is valid. The third is a missing closing bracket: an object opened with { and never closed, or an array opened with [ and never closed. Count the openers and closers, and the gap usually shows itself.
A fourth cause is invisible: smart quotes. If you copied the JSON from a web page, a document, or a chat message, the straight double quotes may have been replaced with curly ones, which JSON does not accept. The fix is to retype the quotes by hand in the input box, or to paste through a plain-text editor first. Once the JSON is valid, the badge flips to Valid (N rows) and the CSV appears, with no other step needed.
One more escape hatch: the input toolbar has a Format button that prettifies valid JSON into indented form, which makes a large file much easier to read and debug. It only works on valid JSON, so if the badge says Invalid JSON, fix the error first and then format. And if the file came from somewhere else, try the Upload File button or drag and drop: a .json or .txt file dropped straight into the input box converts the same way as pasted text.
If you would rather not use this page
This guide is deliberately about one path: this page converter. But it is not the only path, and two situations call for a different one. If the conversion has to repeat — the same export every morning, or a conversion inside software you ship — a script beats a browser tab, and our guides to the three reliable methods and the five ways to convert cover Python, jq, Power Query, and library calls, all tested on the same file.
If you already live in VS Code and the JSON is a file you are editing there, converting inside the editor keeps you in context, and our VS Code guide walks through the extension, terminal, and one-keypress routes. For everything else — one file, once, right now — the path at the top of this guide is the fastest one, and it is the one this page was built for.
And if you have used this page before and only came back to check one detail, the checklist is: paste, check the badge says Valid (N rows), check the header row, download. Everything else on the page is there for the day you need it, not for today.
Related guides
- How Can I Convert a JSON File to a CSV File Online? (2026 Guide)
- What Is a JSON to CSV Converter Online Tool? How to Pick a Good One (2026 Guide)
- How to Flatten JSON to CSV: What the Toggle Actually Does (2026 Guide)
- JSON to CSV Converter Download: What You Should Actually Download (2026 Guide)
- Convert Large JSON to CSV Online Free: How Big Is Too Big? (2026 Guide)
- What Is a JSON and CSV File? A Beginner's Guide to Both Formats (2026 Guide)
- What Does Flattening a JSON Mean? The Term Explained (2026 Guide)
- What Is JSON to CSV Online? The 3 Words Explained (2026 Guide)
- What Is JSON to CSV Converter Online? Anatomy of the Tool (2026 Guide)
- Convert JSON to CSV Locally: Keep the File on Your Machine (2026 Guide)
- What Are Ways to Convert JSON to CSV Locally? 6 Methods, Compared (2026 Guide)
- Why Your CSV Opens in One Column in Excel, and How to Fix It (2026 Guide)
- Why Your CSV Shows Weird Characters in Excel, and How to Fix the Encoding (2026 Guide)
- Why Excel Drops the Leading Zeros From Your CSV Codes, and How to Keep Them (2026 Guide)
- Why Excel Changes Your CSV Dates, and How to Keep Them (2026 Guide)
- Why Saving Your CSV in Excel Changes It, and How to Keep the Original Safe (2026 Guide)
- Why Excel Won't Open Your Big CSV File, and What to Do Instead (2026 Guide)
Frequently asked questions
How do I convert JSON to CSV online for free?
Open this page, paste your JSON into the Input JSON box, and click Download .csv. The converter is free with no sign-up, no file limit on ordinary files, and no watermark on the output. The conversion runs entirely in your browser, so nothing is uploaded and nothing is charged.
How to json to csv online without installing anything?
Use the converter on this page: it is a website, not a program, so there is nothing to download or install. Paste the JSON, check the badge says Valid (N rows), and download the CSV. It works in any modern browser on desktop or mobile, and the only thing that leaves your device is nothing at all, because the conversion happens locally.
Can I convert a JSON file to CSV online, not just pasted text?
Yes. Click Upload File in the input toolbar and pick a .json or .txt file, or drag the file straight into the Input JSON box. For JSON hosted at a public URL, click Fetch URL and enter the address: the page loads the JSON from that endpoint into the input box, and from there the conversion is identical to pasted text.
Why does my downloaded CSV open as one column in Excel?
The file delimiter and the delimiter Excel expects do not match. Re-download with Delimiter set to Comma, which is the default, or open the file through Excel Data, From Text/CSV, where you can pick the delimiter explicitly instead of letting Excel guess. If you converted with Semicolon on purpose, Excel needs to be told to expect semicolons, or it will show the whole row in column A.
Why is my CSV full of {"city": ...} text?
Flatten Nested Objects is switched off. With it off, nested objects and lists stay as JSON text inside single cells, which is intact data but not a sortable table. Switch the toggle back on and the nested values become real columns like address.city, with lists joined into one cell. The doubled quotes in the flattened-off output are correct CSV escaping, not corruption.
Is it safe to convert JSON to CSV online?
With this converter, yes: it runs entirely in your browser, so the JSON never leaves your machine and is never sent to a server. There is no account, no upload, and no copy kept anywhere. That is not true of every online converter, so the question is worth asking of any tool: if it uploads your file to a server, the operator of that server can see your data.
What if my JSON file is too big for a browser tab?
A browser tab handles ordinary files comfortably, but for files in the tens of megabytes and up, switch to a tool that streams: jq with the --stream flag processes the file record by record instead of loading it all, or a chunked Python script that reads and writes in batches. Splitting a huge file into smaller ones and converting each part also works, and it keeps the browser path available.
Your JSON is 30 seconds from a CSV
Paste it into the converter on this page: nested objects flatten to dot-notation columns, lists join into clean cells, and the download is plain UTF-8. Free, no sign-up, runs entirely in your browser.
Open the JSON to CSV converter