JSON Validator

Validate JSON syntax instantly โ€” get line numbers, column positions, and plain-English error messages.

Runs entirely in your browser. Your JSON never leaves your device.
Processing โ€” Validateโ€ฆ
Input
Virtualized view โ€” large input is read-only. Only visible lines are rendered.
Output
Virtualized view โ€” only visible lines are rendered for performance.
Paste JSON to begin

How to use

Keyboard shortcuts
  1. Paste your JSON Type, paste, or drag and drop a JSON file into the input editor.
  2. Choose an action Switch between Format, Validate, Minify, and Lint using the tabs above.
  3. Copy the result Click Copy or use Ctrl+Shift+C to copy the output to your clipboard.
  • Run active action โ€” Ctrl+Enter
  • Format โ€” Ctrl+Shift+F
  • Validate โ€” Ctrl+Shift+V (editor focus)
  • Minify โ€” Ctrl+Shift+M
  • Lint โ€” Ctrl+Shift+L
  • Copy output โ€” Ctrl+Shift+C
  • Clear input โ€” Ctrl+Shift+K

Lint rule explainers

LINT_DUPLICATE_KEY

Two properties in the same object use the same key. Most parsers keep the later value, which can hide bugs in copied API payloads and config files.

LINT_TRAILING_COMMA

Trailing commas are common in JavaScript and JSON5, but strict JSON rejects them. Remove the comma before the closing brace or bracket.

LINT_LINE_COMMENT

JSON does not support // comments. If you need comments, switch to a JSONC or JSON5-compatible parser instead of strict JSON.

LINT_BLOCK_COMMENT

Block comments are not valid JSON. Remove them or convert the file to a format that explicitly supports comments.

LINT_SINGLE_QUOTED_STRING

Strict JSON requires double-quoted strings and keys. Single-quoted strings usually mean the input is JSON5 or a JavaScript object literal.

LINT_UNQUOTED_KEY

Object keys must be quoted in JSON. Unquoted keys are allowed in JavaScript object literals and JSON5, but not in RFC 8259 JSON.

LINT_BOM

A byte-order mark at the start of the file can confuse downstream tools. Removing it is a safe normalization step.

LINT_CONTROL_CHAR_IN_STRING

Unescaped control characters inside strings can break parsing and transport. Escape them explicitly or remove them.

LINT_EMPTY_INPUT

Empty input does not contain JSON to check. Paste a payload, config, or response body before running lint.

LINT_LOOKS_LIKE_JSON5

This advisory groups comment, quote, and trailing-comma patterns that suggest the input is JSON5-like rather than strict JSON.

Runs entirely in your browser. Your JSON never leaves your device. Last updated: 2026-05-03 About ToolMatic
What does "Unexpected token" mean?

It means the parser found a character that doesn't belong at that position in JSON. Common causes: trailing commas, single quotes instead of double quotes, unquoted keys, or comments. The error shows the exact line and column, and the offending line is highlighted in the input editor.

What is the difference between Validate and Lint?

Validate checks if your JSON is syntactically correct according to the JSON specification and reports the first error. Lint goes deeper โ€” it finds issues like duplicate keys, trailing commas, comments, and other patterns even in otherwise parseable input.

What is the difference between strict JSON and JSON5?

Strict JSON (RFC 8259) requires double-quoted keys and strings, no comments, and no trailing commas. JSON5 is a superset that allows single quotes, comments, trailing commas, and more. This validator checks against strict JSON.

Does it check JSON Schema?

No โ€” this tool validates JSON syntax, not structure. JSON Schema validation (checking that values match a schema definition) will be available as a separate tool.

Does it report all errors at once?

The Validator reports the first parse error with full context (line, column, excerpt, hint). For multiple findings like duplicate keys or style issues, switch to the Lint tab.

Is my JSON sent to a server?

No. Validation runs entirely in your browser. Your JSON never leaves your device. You can verify this by opening your browser's network tab.