Watch: build and check a schema
No sound. Each step is captioned on screen and also written out in the guide below.
AI Tools
Paste an example of the JSON you want back. Get a schema that OpenAI, Claude, or Gemini accepts for structured output, then check a model's reply against it.
Builds as you type. A whole AI reply or almost-JSON works too. Give arrays several items to show which fields are optional.
Your schema will appear here.
Paste sample JSON to build its schema.
| Where | Note |
|---|
Paste any schema, or use the one you built. It's also checked against each provider's rules.
Paste a schema and a reply to check them.
| Path | Problem |
|---|
No sound. Each step is captioned on screen and also written out in the guide below.
Use JSON shaped like the answer you want. In arrays, a field missing from some items becomes optional.
The schema follows that provider's documented rules, and anything it would reject is flagged.
Switch to Validate and paste what the model returned to see every field that doesn't fit.
[{"id": 1, "note": "gift"}, {"id": 2}]
OpenAI: "note": {"type": ["string", "null"]}, required: ["id", "note"]
Claude: "note": {"type": "string"}, required: ["id"]OpenAI strict mode needs every field listed as required, so optional fields accept null instead. Claude and Gemini leave them out of required.
As of 30 September 2026, from each provider's documentation:
"additionalProperties": false on every object, and every property in required. It allows up to 5,000 properties and 10 levels of nesting, and doesn't support allOf, not, or if/then/else. (OpenAI docs)"additionalProperties": false, and doesn't support recursion, number or length bounds, or minItems above 1. One request may have at most 24 optional fields and 16 fields with several types. (Claude docs)OpenAI strict mode requires every property to be listed in required. To keep a field optional, its type also allows null, and the model sends null when it has no value.
No. One sample can't show the real limits, and several providers reject those keywords. Add enums and descriptions by hand where they matter; descriptions help the model most.
Types, required and extra properties, enums, formats, number and length bounds, patterns, arrays, anyOf/oneOf/allOf, and local $refs. Anything it doesn't check is listed, so a pass never hides a skipped rule.
No. Samples are often real customer data, so everything runs in your browser and nothing is uploaded, saved, or put in share links.