~/tools / Structured Output Schema Checker
Structured Output Schema Checker — Check a JSON Schema against OpenAI, Anthropic and Gemini limits
Check a JSON Schema against the documented limits of structured outputs from OpenAI, Anthropic and Gemini. See which keywords are rejected, ignored or undocumented before you send the schema to the API. Nothing leaves your browser.
Rules checked against each vendor's documentation on 2026-10-23.
Not checked: nesting depth, the limit on long enums, and anything the vendors do not document. Vendors change these rules, so confirm against the current documentation.
Everything runs in your browser. The schema is not uploaded.
AI APIs can force a model's reply to follow a JSON Schema, but each vendor accepts only part of JSON Schema, and the parts differ. A schema that works with one vendor can be rejected by another, or accepted while some of its rules are quietly dropped. This tool reads your schema and checks it against what each vendor's documentation says: required rules such as additionalProperties set to false, keywords that are not supported, keywords that are accepted but not enforced, and published size limits. Findings are sorted into three kinds so you can tell a documented error from a keyword the documentation simply does not list. The rules were checked against the vendors' documentation on the date shown below the tool.
Use Cases
- Checking a schema before you send it as a structured output request, so you do not find out from a 400 error
- Finding which keywords you must move out of the schema and into your own validation code
- Comparing what OpenAI, Anthropic and Gemini each accept for the same schema
Usage
- Paste the JSON Schema you plan to send, or load the example.
- Read the result for each vendor. Not accepted means the documentation says the schema will fail or must change. Ignored means the keyword is accepted but not enforced. Not documented means the keyword is missing from the vendor's list of supported keywords.
- Fix what is marked Not accepted, and check the rest by running a real request.
FAQ
Does a clean result mean the API will accept my schema?
No. The tool checks the rules that the vendors document. It does not call any API, and the documentation does not cover everything, so a schema can still be rejected. Treat a clean result as 'no known problem' and test with a real request.
What do Not accepted, Ignored and Not documented mean?
Not accepted: the documentation says the keyword is unsupported or a rule must be followed, for example additionalProperties must be false. Ignored: the documentation says the keyword is accepted but not enforced, so the model can break it. Not documented: the keyword is not on the vendor's list of supported keywords, so it may be rejected or ignored and the documentation does not say which.
Why does OpenAI require every property to be required?
In strict mode OpenAI requires all properties to be listed in required and additionalProperties to be false. To make a field optional, the documentation says to use a union with null, for example a type of ["string", "null"].
My schema uses minimum, maxLength or similar. What should I do?
Anthropic does not support numerical constraints or string length limits, and Gemini does not enforce length limits. Remove them from the schema, describe the limit in the description field, and check the value yourself after the reply arrives. The JSON Schema Validator tool can run that check.
Does this tool check recursion?
Yes, for Anthropic, whose documentation lists recursive schemas as unsupported. OpenAI and Gemini document recursive schemas, so they are not flagged.
What is not checked?
Nesting depth, the limit on long enums, and anything the vendors do not document. The tool also does not know about newer models or features added after the check date, so confirm against the current documentation when it matters.
Is my schema sent to a server?
No. The check runs in your browser.