JSON (JavaScript Object Notation) has become the default data interchange format for web APIs, configuration files, and just about everything in between. It’s simple enough to read at a glance, but messy JSON can turn a quick debugging session into a frustrating scavenger hunt.
This guide covers what you need to know about formatting and validating JSON — whether you’re dealing with a minified API response or tracking down a syntax error in a config file.
What JSON actually is
JSON is a text-based format for representing structured data. It’s built on two structures: objects (key-value pairs wrapped in curly braces) and arrays (ordered lists wrapped in square brackets). Values can be strings, numbers, booleans, null, objects, or arrays.
That’s it. No comments, no trailing commas, no single quotes. The spec is intentionally small, which is both its greatest strength and the source of most formatting headaches.
Common formatting issues
If you work with JSON regularly, you’ve hit these problems:
- Trailing commas — JavaScript allows them; JSON does not. A comma after the last item in an object or array will break parsing.
- Single quotes — JSON requires double quotes around keys and string values.
'name'is invalid;"name"is correct. - Unquoted keys — Unlike JavaScript objects, JSON keys must always be quoted strings.
- Missing commas — Easy to miss when editing JSON by hand, especially in deeply nested structures.
- Encoding issues — Special characters, Unicode escapes, and newlines inside strings need proper escaping.
How to format JSON
Formatting (or “pretty-printing”) JSON means adding consistent indentation and line breaks so the structure is visually clear. Most formatters use 2 or 4 spaces per indentation level.
If you’re in a terminal, jq . is the classic one-liner. Pipe any JSON through it and you get formatted output with syntax highlighting. In Python, json.tool does the same: python -m json.tool input.json.
For quick one-off formatting without leaving the browser, our JSON Formatter handles it instantly. Paste your JSON, get formatted output. Everything runs client-side — your data stays on your machine.
Validation: catching errors before they bite
A JSON formatter will often catch syntax errors as a side effect, but dedicated validation gives you specific error messages with line numbers. When you’re staring at a 500-line config file, knowing that the error is “unexpected token at line 247, column 18” saves real time.
Common validation checks include:
- Syntax correctness (matching braces, proper quoting, valid value types)
- Schema validation (does the JSON match an expected structure?)
- Duplicate key detection (valid JSON technically allows duplicate keys, but they cause unpredictable behavior)
Our JSON Validator parses your input and reports exactly where and what the problem is, with clear error messages instead of cryptic stack traces.
Practical tips
Use a formatter in your editor. Most editors can format JSON on save or via a keyboard shortcut. Set this up once and you’ll never manually fix indentation again.
Validate before debugging. If an API response isn’t parsing correctly, validate the raw JSON first. Half the time the issue is a syntax error in the response, not a bug in your parsing code.
Minify for production, format for humans. Minified JSON saves bandwidth in API responses. Formatted JSON is what you want in config files, test fixtures, and anywhere a human needs to read it.
Watch out for large numbers. JSON doesn’t distinguish between integers and floats. JavaScript’s Number type loses precision beyond 2^53. If you’re working with large IDs (like Twitter snowflake IDs), they should be strings.
JSON’s simplicity is what makes it work everywhere. A good formatter and validator keep that simplicity from becoming a source of bugs.