JSONProbe

JSON Schema Validator

Check data against a schema — paste it or point at a URL. Supports the keywords people actually use; the ones that are missing are listed here rather than silently ignored.

Input empty
Drop a.json file here — read locally, never uploaded
Result

          

Ctrl / Cmd + Enter formats as well.

This is a subset of draft-07, implemented on purpose and declared in full below. It will tell you whether your data matches the shape you described. It will not behave like Ajv: no $ref, no allOf/anyOf/oneOf, no format assertions.

The reason to use a page like this instead of Ajv is not capability. It is that the data never leaves the tab — which matters exactly when the payload is a customer record you should not be pasting into a web service. If you need the full vocabulary, run a real validator in your build.

Implemented

KeywordBehaviour
typestring, number, integer, object, array, boolean, null, or a list of them
requiredmissing properties reported by path
properties / additionalProperties nested objects; false rejects undeclared keys
itemssingle schema applied to every element
enum / constvalue equality against the list or constant
minimum / maximum / exclusiveMinimum / exclusiveMaximumnumeric bounds, draft-07 numeric form
minLength / maxLength / pattern string length and regular expression
minItems / maxItems / uniqueItems array length and element uniqueness
true / false as a schema accept everything / reject everything

Errors are reported as paths — user.address.zip, not a line number — so you can map each one to the field it belongs to.

Not implemented, and what that means for you

Nothing here guesses. A keyword this page does not implement is not reported as satisfied; it is simply absent from the table above.

Fetching a schema from a URL

The schema box accepts an http(s) URL instead of a document, which is how you point at a published schema. It will fail more often than you expect, for one reason: the remote host has to send Access-Control-Allow-Origin. Most raw-file hosts do not, and a browser will block the response even though the file is public and loads fine in a tab.

The tool retries three times with a growing delay — a transient failure on a CDN is common enough to be worth it — and then tells you to paste the schema instead. That is the correct fix, not a workaround: pasting also means the fetch never carried your data anywhere, because only the schema URL leaves the tab.

Nothing about your data is sent when you fetch a schema. The request is for the schema document, and the response is the only thing read.

Frequently asked questions

Which JSON Schema draft does this support?

A subset of draft-07. Keywords that draft defines and this page does not implement are listed in the section above; treat anything in that list as unchecked.

Can I give it a URL instead of pasting the schema?

Yes — an http(s) URL in the schema box is fetched, retried up to three times, and used. It only works if the host sends CORS headers, which most file hosts do not.

Does validating send my data anywhere?

No. The only outbound request on this page is the optional schema fetch, and that request contains the schema URL and nothing else. Validation itself runs in the tab.

I used "format": "email" and an invalid address passed. Why?

format is not asserted here, which matches draft-07's default behaviour. If you need format checking, use a validator that opts into it and say so in your schema documentation — several validators disagree about format, so a schema that relies on it is not portable.

What does additionalProperties: false reject?

Any key not listed in properties (and not matched by patternProperties, which this page does not implement). It is the strictest useful setting for API payloads, and the one most likely to break when a producer adds a field — which is arguably the point.

Related tools