JSON Lint

Lint JSON for common issues โ€” duplicate keys, trailing commas, comments, single quotes, and more.

Runs entirely in your browser. Your JSON never leaves your device.
Processing โ€” Lintโ€ฆ
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 rules does JSON Lint check?

Duplicate keys, trailing commas, line comments (//), block comments (/* */), single-quoted strings, unquoted keys, byte-order mark (BOM), unescaped control characters, and empty input. It also detects JSON5-like patterns and offers to convert to strict JSON.

What does LINT_DUPLICATE_KEY mean?

Two or more properties in the same object have the same key name. JSON parsers silently pick one (usually the last), which often masks bugs. The linter shows the locations of all occurrences.

Are trailing commas allowed in JSON?

No. Strict JSON (RFC 8259) does not allow trailing commas. JSON5 does. If your input has trailing commas, JSON Lint will flag them and offer to remove them via "Convert to strict JSON."

Are comments allowed in JSON?

No. Strict JSON does not support // or /* */ comments. They are allowed in JSON5, JSONC (used by VS Code), and JavaScript object literals. JSON Lint flags them and can strip them.

What is JSON5?

JSON5 is a superset of JSON that allows comments, trailing commas, single-quoted strings, unquoted keys, and more. It is not supported by standard JSON parsers. JSON Lint detects JSON5 patterns and offers a one-click conversion to strict JSON.

"Convert to strict JSON" โ€” what does it change?

It produces a copy with: BOM stripped, comments removed, trailing commas removed, single-quoted strings re-quoted with double quotes, unquoted keys quoted, and the result re-run through Lint to confirm zero residual findings. Your original input is never modified โ€” the converted copy appears in the output pane.