JSON tools
Choose a JSON Schema Validator for Your Draft and Runtime
Evaluate JSON Schema validators using your schema dialect, valid and invalid fixtures, error paths and deployment constraints.
Start with the schema dialect and execution environment
The best validator for a project is one that correctly supports its schema dialect and fits where validation runs. A browser form, a Java service and a command-line build check have different integration requirements. Read the schema's $schema declaration and identify the runtime before comparing interfaces or benchmark headlines.
The JSON Schema tooling directory lists implementations and supported dialects without endorsing a universal winner. Use it to find candidates, then verify the chosen implementation's own documentation. For example, Ajv's dialect documentation describes distinct support and configuration considerations; a package name alone does not establish that every schema version works under one default setup.
Evaluate candidates against a small contract
For an illustrative order line, require a string SKU and an integer quantity from one through twenty. Reject unexpected properties. This draft-07 schema is intentionally small enough to understand independently, so a failed fixture points to a specific rule rather than an opaque application-wide contract.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"sku": { "type": "string", "minLength": 1 },
"quantity": { "type": "integer", "minimum": 1, "maximum": 20 }
},
"required": ["sku", "quantity"],
"additionalProperties": false
}
The object {"sku":"part-7","quantity":2} should pass. Remove quantity, replace it with the string "2", use zero, use twenty-one or add an unexpected debug property; each should fail for the stated contract. Keep an empty SKU case too. A validator that parses these documents but never applies the rules is only demonstrating JSON syntax handling.
Inspect errors and data mutation
Check whether the error output identifies the failing instance location and rule clearly enough for the application to use. A missing property and an out-of-range quantity should not both collapse into an unexplained false result when a form needs actionable feedback. Avoid displaying raw submitted secrets merely to make a diagnostic message detailed.
Record configuration that can change data, such as coercing strings into numbers, adding defaults or removing unexpected properties. Those behaviors may be useful when deliberately chosen, but they change what the test means. A string quantity should fail the strict fixture above unless the application explicitly chose a coercing preprocessing contract.
Test reference resolution with a controlled local schema collection. Decide whether external references may be fetched at runtime, preloaded or rejected. A system that works only while it can download a remote dependency can behave differently during an outage or in an isolated deployment.
If the production schema uses formats or extension keywords, add explicit failing examples for those features. A validator accepting an invalid example because the relevant plugin was never loaded is not equivalent to the fully configured implementation you intended to evaluate.
Measure the workload you actually deploy
Separate schema preparation from repeated instance validation when the implementation has those phases. Use representative valid and invalid payloads, nesting and record counts. Retain runtime version, validator version and options with the measurement. A timing copied from a different machine and schema family cannot establish the fastest option for this service.
Include maintainability in the decision: supported runtime versions, licensing, release activity, documented limitations and the team's ability to interpret failures. Pin the selected dependency through the project's normal dependency process and rerun the fixture pack when upgrading it.
Keep inference and JSON-LD checks separate
The local JSON Schema Generator From JSON can produce a draft-07 starting schema from a sample. It cannot infer your business limits or prove that a validator enforces them. The site's Schema Validator page checks JSON-LD structured data and is a different task; it is not a general instance-against-schema validation engine.
Use the candidate validator to execute the passing and failing fixtures, then add the application's real boundary cases. Keep the selection record tied to those observations so a later dependency or dialect change triggers a deliberate compatibility review.


