TL;DR: JSON formatting (aka "pretty-printing") adds indentation and line breaks so you can actually read your data. Use JSON.stringify(data, null, 2) in JavaScript, or just paste it into an online formatter and call it a day.
We've All Been There
Picture this: it's 11 PM, you're debugging an API response, and what you're staring at looks like someone smashed their keyboard and accidentally produced valid JSON. One enormous line, no spaces, no breathing room. Just a wall of curly braces, colons, and commas stretching into infinity.
That, my friend, is minified JSON. And while computers love it, humans absolutely do not.
JSON formatting (also called "pretty-printing" or "beautifying") is the simple act of adding indentation and line breaks so the structure of your data pops out visually. It's not just about making things look nice โ it's a practical necessity when you're debugging API responses, reviewing config files, or trying to explain data structures to your team.
Wait, What Even Is JSON?
JSON stands for JavaScript Object Notation. Don't let the "JavaScript" part scare you โ it's used by basically every programming language now. Think of it as a universal way to package data into a format that both humans and machines can understand.
JSON is built on just two structures:
- Objects โ Collections of key/value pairs wrapped in curly braces
{}(like a dictionary or a labeled filing cabinet) - Arrays โ Ordered lists wrapped in square brackets
[](like a numbered to-do list)
Values can be strings (in double quotes), numbers, booleans (true/false), null, objects, or arrays. That's literally the entire language. You could learn the full spec during a coffee break.
Dev Joke: JSON and XML walked into a bar. JSON said, "I'll have a beer." XML said, "<order><drink>beer</drink></order>". The bartender served JSON first because it was less verbose.
Minified vs. Formatted: See the Difference
Here's a real-world example. Imagine you get this back from an API:
{"users":[{"id":1,"name":"Alice","roles":["admin","editor"],"settings":{"theme":"dark","notifications":true}},{"id":2,"name":"Bob","roles":["viewer"],"settings":{"theme":"light","notifications":false}}]}
Can you quickly tell me what Bob's notification setting is? Didn't think so. Now check out the same data, formatted:
{
"users": [
{
"id": 1,
"name": "Alice",
"roles": ["admin", "editor"],
"settings": {
"theme": "dark",
"notifications": true
}
},
{
"id": 2,
"name": "Bob",
"roles": ["viewer"],
"settings": {
"theme": "light",
"notifications": false
}
}
]
}
Boom. You can instantly see there's a users array with two people, each with nested roles and settings. Bob's notifications? false. Took you two seconds.
How to Format JSON in Code
If you're a developer, you've got formatting built right into your language. In JavaScript, it's a one-liner:
// Parse the string into an object
const data = JSON.parse(minifiedString);
// Re-serialize with 2-space indentation
const pretty = JSON.stringify(data, null, 2);
// Want 4 spaces? Tabs? You do you.
const fourSpaces = JSON.stringify(data, null, 4);
const tabs = JSON.stringify(data, null, '\t');
That third argument to JSON.stringify() is the magic number โ it tells JavaScript how many spaces to use per indentation level. The second argument (null here) is a "replacer" that lets you filter values. Most of the time, you just pass null to include everything.
Pro Tip: The most popular indentation in the JavaScript world is 2 spaces. Python folks tend to prefer 4 spaces. There's no "right" answer โ just pick one and be consistent across your project.
Format JSON from Your Terminal
Don't want to leave the command line? You don't have to:
# Using Python (you probably already have it)
echo '{"a":1,"b":2}' | python3 -m json.tool
# Using jq (the Swiss Army knife of JSON)
echo '{"a":1,"b":2}' | jq .
# Format a file and save the result
jq . messy.json > clean.json
If you haven't met jq yet, you're in for a treat. It's a command-line tool that not only formats JSON but lets you query and transform it too. Highly recommended.
Format JSON in Your Editor
Most editors can format JSON with a keyboard shortcut:
- VS Code โ Open a
.jsonfile, hitShift+Alt+F(Windows/Linux) orShift+Option+F(Mac). Done. - JetBrains IDEs โ
Ctrl+Alt+LorCmd+Option+Lon Mac. - Vim โ Type
:%!python3 -m json.tooland feel like a wizard.
When Should You Minify Instead?
Here's the thing โ all those pretty spaces and line breaks add up. A formatted JSON file can be 2-3x larger than its minified version. That's fine when you're reading it, but for production use (API responses, config sent to browsers, data in databases), minified is the way to go:
- Less bandwidth = faster page loads
- Less storage = lower costs
- Slightly faster parsing (fewer characters to chew through)
Remember: Format for humans, minify for machines. If a person needs to read it, make it pretty. If only code touches it, keep it compact.
Common JSON Traps to Watch Out For
Even seasoned devs trip on these:
- Trailing commas โ JavaScript allows them, JSON does NOT. That sneaky comma after the last item will break everything.
- Single quotes โ JSON demands double quotes. Always. No exceptions.
- Comments โ Standard JSON has no comments. If you need comments, look into JSONC or JSON5.
// BROKEN: trailing comma + single quotes
{'fruits': ['apple', 'banana',]}
// FIXED: double quotes, no trailing comma
{"fruits": ["apple", "banana"]}
Quick Best Practices
- Pick an indentation style and stick with it across your project.
- Validate before committing โ a broken JSON config can take down a deployment faster than you'd believe.
- Sort your keys where order doesn't matter (like
package.jsondependencies). It reduces merge conflicts. - Use descriptive key names โ prefer
"firstName"over"fn". Minification handles the compression; you handle the readability.
Try It Yourself
Paste your minified or messy JSON into our free online formatter. It'll instantly beautify your data with proper indentation, validate the syntax, and highlight any errors.
Open JSON Formatter →