tuliq
Runs in your browser

JSON Schema Validator

Validate JSON data against a JSON Schema (Draft 7 and later), live as you type. Every violation is reported at once, not just the first one, with its exact path and a human-readable reason — a missing required field, a type mismatch, a value outside a declared range, or an unexpected property when additionalProperties is false. Paste both schema and data directly, or upload a .json file for either side, using ajv, the most widely-used JSON Schema validator. Runs entirely client-side — nothing is uploaded.

✓ Valid — the data satisfies the schema.

About this tool

This tool validates JSON data against a JSON Schema, live as you type. JSON Schema is a vocabulary for describing the shape JSON data must take — required fields, types, numeric ranges, string patterns, and structural rules like additionalProperties: false to reject unexpected fields. Validation reports every violation at once rather than stopping at the first one, with each issue's exact location (an empty path means the root document itself; /age means the age field) and a human-readable reason. It runs entirely client-side using ajv, the most widely-used JSON Schema validator, supporting Draft 7 and later — nothing you paste or upload is ever sent anywhere.

What you can do

  • Validate JSON data against a JSON Schema (Draft 7 and later) instantly
  • Every violation listed with its exact path and reason, not just pass/fail
  • Paste both directly, or upload a .json file for either side
  • Nothing is uploaded — validation runs locally in your browser

How to use

Step 1

Add your schema and data

Paste each directly, or upload a .json file for either one.

Step 2

Validation runs live

Every keystroke re-validates — no submit button needed.

Step 3

Read the results

A clear valid/invalid verdict, with every violation's exact path and reason listed when it fails.

Example

This schema:

Schema

{
  "type": "object",
  "properties": {
    "name": { "type": "string" }
  },
  "required": ["name"]
}

Data

{ "age": 30 }

reports one issue against that data: a required property "name" at the root path — the age field itself isn't restricted by this schema, since only name is declared.

How your data is handled

This tool is labeled 🟢 Browser: your schema and data are validated directly in your browser using the ajv library — nothing is uploaded to a server, and nothing about it is retained once you leave the page.

Frequently asked questions

What versions of JSON Schema are supported?+

Draft 7 and later (2019-09, 2020-12) — the keywords this tool exercises most (type, properties, required, additionalProperties, minimum/maximum, enum, pattern) are consistent across all of them.

What does an empty path ("/") on an issue mean?+

It means the violation is against the document as a whole rather than one field — most commonly a missing required property, since the property that's missing has no path of its own to point to.

Why does it say my schema itself is invalid?+

The schema failed to compile — usually a genuinely malformed keyword (a type value that isn't a recognized JSON Schema type, or a $ref that doesn't resolve) rather than a problem with your data.

Can I upload files instead of pasting?+

Yes — each panel (schema and data) has its own file picker accepting a .json file.

Is my data uploaded anywhere?+

No — both your schema and your data are validated directly in your browser using the ajv library. Nothing here ever leaves your device.

Related tools