JSON Schema Validator
Validate JSON against a JSON Schema (draft 2020-12, 2019-09, 07, 06, 04) with local $ref, formats, oneOf and if/then/else, and an error list.
Formats were checked (email, hostname, ipv4, ipv6, date, time, date-time, duration, uri, uri-reference, uuid, regex, json-pointer); other format names are ignored.
A JSON Schema describes what valid data looks like — required fields, types, number ranges, string patterns, allowed values. Paste a schema and a JSON document to see whether the data conforms and, if not, every place it fails, with the JSON Pointer to the bad value and the schema rule that rejected it. It supports drafts 2020-12, 2019-09, 07, 06 and 04, and everything runs in your browser.
How to use this tool
- Paste the schema in the first box.
- Paste the JSON data in the second box.
- Leave the draft on Detect, or pick one if the schema has no $schema.
- Decide whether format (email, date, uuid…) should be enforced.
- Read the verdict and the error table.
Formula
error = instance path (where in the data) + keyword (which rule) + message + schema path (where in the schema)
Supported keywords: type, enum, const, the number limits and multipleOf, minLength, maxLength, pattern, format, items, prefixItems, additionalItems, contains with minContains/maxContains, minItems, maxItems, uniqueItems, properties, patternProperties, additionalProperties, propertyNames, required, min/maxProperties, dependentRequired, dependentSchemas, dependencies, allOf, anyOf, oneOf, not, if/then/else, $ref with $defs/definitions, $id and $anchor. unevaluatedProperties and unevaluatedItems are not checked, $dynamicRef and $recursiveRef are resolved like a plain $ref (enough for most schemas, but not for extension patterns that rely on dynamic scope), and remote $refs — including the official meta-schemas — are not fetched.
Example
With the sample User schema, change "age" to -1 and add "nickname": "A". The result is Invalid with 2 errors: /age: must be >= 0 (schema path #/properties/age/minimum) and (root): must NOT have additional property 'nickname', because the schema sets additionalProperties to false.
Frequently asked questions
Which draft should I use?
Whatever your $schema says. Without one this tool uses 2020-12. Older drafts differ in details: in draft-07 and earlier a $ref replaces its sibling keywords, and tuple arrays use items as a list instead of prefixItems.
Why does an invalid email pass?
In the standard, format is an annotation unless the validator is told to assert it. Tick "Check format" to enforce it, as most API validators do.
Can I use a $ref to another file or URL?
Only references inside the pasted schema are resolved, including ones to a sub-schema with its own $id. Paste the other definitions into $defs and point $ref at them.
Are 1 and 1.0 different?
No. JSON Schema compares numbers by value, so [1, 1.0] fails uniqueItems and 1.0 counts as an integer.
Sources
Last updated:
Page address with these inputs: https://kakao.mobile/tools/json-schema-validator/
Cite or embed this tool
kakaoCalc. (2026, November 8). JSON Schema Validator. https://kakao.mobile/tools/json-schema-validator/
“JSON Schema Validator.” kakaoCalc, 8 Nov. 2026, kakao.mobile/tools/json-schema-validator/.
Paste this code into your page. The widget runs in your visitors' browsers, shows no ads and keeps a link back to this page. Embedding terms