Example
Input (schema + data)
Schema:
{ "type": "object", "required": ["name", "age"], "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } } }
Data:
{ "name": "Ada", "age": -3 }Validation result
❌ 1 validation error - /age: must be >= 0 (got -3)
Note
Draft 2020-12 with format support (email, uri, date, ...). Error paths use JSON Pointer (`/a/b`).
Usage / FAQ
When to use
- Validate that an API response payload matches the defined schema
- Pre-check form input data against the backend schema
- Test a schema component from an OpenAPI / AsyncAPI definition in isolation
- Compare behavior across drafts 4 / 6 / 7 / 2019-09 / 2020-12
- Mirror ajv's validation results before shipping the schema
FAQ
- Q.Which JSON Schema draft is used?
- A.Draft 2020-12 by default. If the schema declares a `$schema`, that draft is honored (powered by ajv).
- Q.Are format checks (email, uri, date) enabled?
- A.Yes — ajv-formats provides the standard ones. The spec treats `format` as SHOULD-check; if you need strict validation, add explicit constraints.
- Q.What is `/a/b` in the error path?
- A.A JSON Pointer. `/a/b` points to `data.a.b`. Arrays use index segments: `/0`, `/1`, …
Fun facts
JSON Schema was first proposed in 2009 by Kris Zyp as an IETF Draft — a meta-schema for describing JSON data's structure, types, and constraints in JSON itself. As of 2024 it's still an IETF Internet Draft (the RFC process is in progress) — a 15-year 'draft' that's a fully living standard.
JSON Schema — OfficialThe naming changed midway — Draft 1 through 7 (numbers), then Draft 2019-09 and Draft 2020-12 (year-month). The renames signal intentional compatibility breaks. Draft 2020-12 is the current de facto standard for modern API tooling (OpenAPI 3.1 also uses it).
JSON Schema — SpecificationIn the Node.js ecosystem, ajv is famous as the fastest JSON Schema implementation — it pre-compiles a schema into a JavaScript function (`compile()` once, `validate()` forever), processing validations in tens of microseconds per call. It's the default dependency for Fastify and most OpenAPI tooling.
Ajv — JSON Validator
Related tools
- JSON Formatter / Validator
Format, validate, and minify JSON strings. Adjust indent and optionally sort keys. Runs entirely in your browser.
- String Case Converter
Convert strings between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case — all six cases shown side-by-side.
- Regex Tester
Test JavaScript regular expressions with live match results. Supports g/i/m/s/u/y flags and capture groups.
- Markdown Preview
Render Markdown to HTML side-by-side. Supports CommonMark + GFM (tables, fenced code, task lists). marked is lazy-loaded.
- HTML → Markdown
Convert HTML into Markdown. Headings, lists, links, code, tables, blockquotes. Uses the browser's DOMParser — accurate, 0 dependency.
- YAML ↔ JSON
Convert between YAML and JSON. Tolerates comments and multiline strings on the YAML side. yaml is lazy-loaded.
- Text Diff
Compare two texts and highlight added/removed lines, words, or characters.
- JSON Diff
Compare two JSON values, with optional key sorting and JSON-aware error messages.
- CSV ↔ JSON
Convert between CSV and JSON. Handles quoted fields, custom delimiters, and header rows.
- SQL Formatter
Format SQL queries with proper indentation and keyword casing. Supports PostgreSQL, MySQL, SQLite, and standard dialects.
- XML Formatter
Pretty-print or minify XML with attribute preservation. Handles SOAP, sitemaps, and config files.
- XML ↔ JSON
Convert between XML and JSON with attribute and element handling.
- Smart Paste
Paste any text and get tool recommendations — JSON, JWT, Base64, URL, UUID, Cron, and 9 more types auto-detected.
- Lorem Ipsum
Generate placeholder text in words, sentences, or paragraphs. Classic Lorem Ipsum or randomized.
- JSON Path
Query JSON with JSONPath expressions ($.store.book[*].author etc.) and inspect matches.
- JSON Schema Generator
Generate a JSON Schema (Draft 2020-12) from a sample JSON. Infer types, required fields, and nested structures automatically.
- HTML Formatter
Beautify or minify HTML with proper indentation, attribute alignment, and configurable wrap.
- CSS Formatter
Beautify or minify CSS with proper indentation. Configurable selector and property style.
- JavaScript Formatter
Beautify or minify JavaScript with brace style and indent options. Powered by js-beautify.
- TOML ↔ JSON
Convert between TOML (Tom's Obvious Minimal Language) and JSON. Used in Cargo.toml, pyproject.toml, etc.
- INI ↔ JSON
Convert INI configuration to JSON and back. Supports sections, comments (; or #), and key=value.
- JSON → TypeScript
Generate TypeScript interfaces from a JSON sample. Nested objects become separate interfaces.
- JS Object → JSON
Convert a JavaScript object literal (unquoted keys, single quotes, trailing commas, comments) into standard JSON. Lenient parser, strict output.
- Slug Generator
Convert text into a URL-safe slug. Configurable separator, lowercase, and accent stripping.
- ASCII Tree
Convert indented text or path list into a box-drawing tree (├── │ └──).
- Diff Patch
Generate a unified diff (-u) patch from two text inputs. Compatible with `git apply` / `patch -p0`.
- Mock Data
Generate fake JSON records — names, emails, UUIDs, dates, and more. 0 dependency.
- MongoDB Extended JSON
Convert MongoDB Extended JSON (EJSON) between Canonical and Relaxed forms, or strip BSON wrappers to plain JSON. Recognizes 16 wrapper types ($oid/$date/$numberLong/$numberDecimal/$binary/...).