Invalid JSON is one of the most common causes of bugs in web applications. A single missing quote or trailing comma can crash your parser, break your API, and waste hours of debugging time. This guide covers everything you need to know about validating JSON.
What Does JSON Validation Mean?
JSON validation can mean two things:
- **Syntax validation** — checking that your JSON is well-formed according to the JSON specification
- **Schema validation** — checking that your JSON conforms to a specific structure (JSON Schema)
Syntax validation is the foundation. If your JSON has syntax errors, nothing else matters. Schema validation adds a layer of business logic on top.
Common JSON Syntax Errors
These are the errors that trip people up most often:
- Single quotes instead of double quotes around keys or string values
- Missing commas between items in an object or array
- Trailing commas after the last item
- Unquoted keys
- Using undefined, NaN, or Infinity as values
- Missing closing braces or brackets
- Control characters in strings that are not properly escaped
The tricky part is that many of these errors are valid JavaScript but not valid JSON. If you test your JSON in a JavaScript console, it might work — but a strict JSON parser will reject it.
Validating JSON in JavaScript
The simplest way to validate JSON in JavaScript is to try parsing it:
function isValidJSON(str) { try { JSON.parse(str); return true; } catch { return false; } }
JSON.parse throws a SyntaxError if the input is not valid JSON. Wrapping it in a try-catch block gives you a boolean result.
If you need the error details, catch the error object:
try { JSON.parse(jsonString); } catch (error) { console.error("Invalid JSON:", error.message); }
The error message usually tells you the character position where parsing failed, which helps you find the problem quickly.
Validating JSON in Python
Python's json module raises json.JSONDecodeError when it encounters invalid JSON:
import json
try: data = json.loads(json_string) print("Valid JSON") except json.JSONDecodeError as e: print(f"Invalid JSON at line {e.lineno}, column {e.colno}: {e.msg}")
The JSONDecodeError exception gives you the line number and column, making it easy to locate the error in large JSON files.
Validating JSON in Go
Go takes a different approach. The json.Valid function checks if a byte slice is valid JSON:
import "encoding/json"
valid := json.Valid([]byte(jsonString)) if !valid { // handle invalid JSON }
For more detailed error information, use json.Unmarshal and inspect the error.
Validating JSON Against a Schema
Syntax validation tells you if your JSON is well-formed. Schema validation tells you if it has the right structure. JSON Schema is the standard way to define that structure.
A JSON Schema can specify:
- Required fields
- Field types (string, number, boolean, etc.)
- Value constraints (minimum, maximum, pattern)
- Nested object structures
- Array item types and length limits
In JavaScript, the ajv library is the most popular JSON Schema validator. In Python, check out jsonschema.
Schema validation is essential when your API accepts user input or when you are processing data from external sources you do not control.
Using an Online JSON Validator
Online validators are the fastest way to check a piece of JSON. You paste your JSON, and the tool instantly tells you if it is valid and highlights any errors.
The JSONClean Validator does exactly this, entirely in your browser:
- Paste or type your JSON into the input area
- The validator checks syntax in real time
- If there is an error, it shows the exact location and a clear message
- If the JSON is valid, it formats and displays the parsed structure
No data is sent to any server. Everything happens in your browser.
Best Practices
- **Validate early** — check JSON at system boundaries (API input, file loads, message queues) before it enters your application logic
- **Use schema validation for APIs** — JSON Schema catches structural errors that syntax validation misses
- **Provide clear error messages** — when validation fails, tell the user exactly what is wrong and where
- **Validate in development and production** — do not skip validation in production for performance. The cost of invalid data far exceeds the cost of validation
- **Automate validation in CI** — add a step that validates any JSON files in your repository (config files, fixtures, test data) as part of your build pipeline
When to Validate
You should validate JSON whenever it crosses a trust boundary:
- When receiving data from an API client
- When reading a config file from disk
- When parsing data from a message queue
- When loading fixtures or seed data in tests
- When processing user-submitted JSON in a form
Skipping validation at these points is a common source of production bugs. The fix is always the same: validate before you trust.
Try It Free
Ready to validate your JSON? Paste it into our free JSON Validator — it checks syntax instantly and works entirely in your browser.