Schema + semantic validation
A2UI Validator
Validate A2UI v0.9.1 JSON or JSONL before it reaches your renderer.
Your validation report appears here
Paste A2UI JSON or load the broken sample, then validate against the v0.9.1 schema and surface graph rules.
A2UI validation explained
What is an A2UI validator?
An A2UI validator checks agent-generated UI messages before a renderer consumes them. It confirms that the JSON or JSONL is valid, matches the expected A2UI message schema and catalog, and keeps surface and component relationships consistent.
This browser tool follows the A2UI v0.9.1 message model and the official Basic Catalog snapshot. It combines schema checks with deterministic lifecycle and component-graph rules, then returns stable error codes and repair guidance you can copy into an issue, pull request, or agent retry.
Deterministic checks
What this A2UI JSON validator checks
Validation runs in three stages so syntax, protocol, and graph failures do not get collapsed into one generic JSON error.
JSON and message stream
Parses one object, an array, or JSONL; reports the broken line when syntax fails; and rejects missing, mixed, or unsupported versions.
Official A2UI schema
Checks server-to-client envelopes, common types, required properties, value types, and Basic Catalog components against the pinned v0.9.1 snapshot.
Surface and component graph
Finds create-before-use violations, duplicate component IDs, missing roots, unknown references, cycles, and unreachable orphan components.
Runnable input formats
A2UI JSONL validation examples
Each non-empty JSONL line is one A2UI message. The first example creates a surface and defines a reachable root; the second has a wrong Text value and an unknown child reference.
Valid A2UI v0.9.1 JSONL
Valid{"version":"v0.9.1","createSurface":{"surfaceId":"checkout","catalogId":"https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"}}
{"version":"v0.9.1","updateComponents":{"surfaceId":"checkout","components":[{"id":"root","component":"Column","children":["title"]},{"id":"title","component":"Text","text":"Review order"}]}}Invalid A2UI v0.9.1 JSONL
2+ issues{"version":"v0.9.1","createSurface":{"surfaceId":"checkout","catalogId":"https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"}}
{"version":"v0.9.1","updateComponents":{"surfaceId":"checkout","components":[{"id":"root","component":"Column","children":["missing"]},{"id":"title","component":"Text","text":42}]}}To verify the invalid case, use Load broken sample in the live workbench above. It produces real schema and graph issues rather than a static demonstration result.
Actionable results
Common A2UI validation errors
The report keeps stable top-level codes while showing a precise location and a suggested correction for each issue.
INVALID_JSON_OR_JSONLThe input cannot be parsed
Fix the reported JSON line or column. For JSONL, keep exactly one complete JSON object on every non-empty line.
SCHEMA_MISMATCHThe message does not match v0.9.1
Check the JSON Pointer, required property, expected type, and Basic Catalog component definition shown in the report.
INVALID_SURFACE_OR_COMPONENT_GRAPHThe message stream is structurally inconsistent
Create the surface before updating it, define a reachable root, and remove duplicate, unknown, cyclic, or orphan references.
How it works
Use one JSON object, an array of messages, or one object per JSONL line.
A same-origin Web Worker runs the pinned schema and graph checks without uploading the payload.
Review every issue and copy a safe result summary without including the original input.
FAQ
Does this support A2UI v1.0?
Not in this release. It validates exact v0.9.1 messages so a different or mixed version can never pass silently.
Does my payload leave the browser?
No. Parsing, Schema validation, and surface graph checks run in a same-origin Web Worker. Raw payloads are not uploaded or stored.
What semantic errors are checked?
Surface lifecycle, duplicate component IDs, missing root, unknown structural references, cycles, and orphan components.
How is this different from a generic JSON validator?
A generic validator can confirm JSON syntax. This tool also checks the pinned A2UI v0.9.1 envelope and Basic Catalog schemas, then inspects surface and component relationships.
Can I use a custom catalog?
Not in this release. The validator is pinned to the official v0.9.1 Basic Catalog so results remain deterministic.
Can I run this in CI?
The current tool is browser-only. Use the CI interest button after a result to help determine whether a future API or build integration should be created.