How to use
Paste the old SDL in “Before (old schema)” and the new one in “After (new schema)”, or open a schema.graphql file with “Open file”. “Try a sample” also works.
To check a single schema, press “Check schema” (it reads the left pane). To compare two, press “Compare” (or Ctrl / ⌘ + Enter).
The check shows the list of types, the tree of types reachable from the roots, and issues with line numbers. The comparison shows the breaking change candidates and the safe changes.
Use “Copy Markdown” to paste a table into a pull request description, or “Save JSON” to keep the verdict, counts and changes.
What it does
Type list and tree from the roots
Reads type, interface, union, enum, input, scalar, schema and extend, and shows the types reachable from Query, Mutation and Subscription as a tree.
Issues by line number
Shows undefined types, duplicate names, missing interface fields, empty enums and output types used in input, each with its line number.
Breaking change candidates
Removed fields and types, newly required arguments, nullable-to-non-null changes and removed enum values are shown as candidates, apart from safe changes such as additions.
A reason on every row
Each row says which rule put it in its group. The rules are listed on the page, so the basis can be used in a review.
Runs only in your browser
The SDL is not sent anywhere and is analysed inside your browser. The tool never fetches a schema from a URL.
Use cases
- Check whether a schema.graphql change in a pull request breaks existing clients
- Find undefined types and duplicate names by line before running the code
- List the types reachable from Query and Mutation to get an overview of a schema
- Compare internal GraphQL schemas without sending them outside
Supported formats
Input
Output
Capability matrix
| Feature | Support | Notes |
|---|---|---|
| Reading SDL: type, interface, union, enum, input, scalar, schema and extend | Supported | — |
| Fields, arguments, types (with ! and [ ]), descriptions ("..." and """...""") and @deprecated | Supported | — |
| Tree of types reachable from Query, Mutation and Subscription | Supported | — |
| Issues: undefined types, duplicate names, missing interface fields, empty enums, output types in input | Supported | Not every rule in the specification is checked. These are the issues this tool reads |
| Comparing two schemas, sorting breaking change candidates and safe changes | Supported | These are candidates. Your API policy and actual usage are unknown, so general rules are used |
| Syntax that cannot be read | Partial | The line is shown by number and its definition is skipped. The result uses only the parts that could be read |
| Comparing directive definitions | Not supported | Not compared |
| Converting an introspection result (JSON) to SDL | Not supported | Not supported. Paste the SDL instead |
| Running or validating queries, connecting to a server | Not supported | No network access |
| Importing or fetching other files or URLs | Not supported | Not fetched. Shown as an unresolved reference |
| Settings that change the rules | Not supported | The rules can be read on the page, but no setting changes the groups |
| Offline use | Supported | Works without a connection once the page has loaded |
Limits & notes
- Up to 300,000 characters per SDL. Files up to 1 MB.
- The type tree goes to depth 12 and up to 2,000 entries. The rest is shown as omitted.
- The issue and change lists count every item, then show them on the screen.
- The verdict follows general rules. Each API may have its own policy.
Privacy & safety
SDL is analysed only inside your browser. Nothing is sent or stored, and closing the page discards it. Analytics only record that a run happened, with no content or counts.
FAQ
What is a breaking change in GraphQL?
Can I paste an introspection result (JSON)?
Can it fully validate a schema?
How is this different from the OpenAPI diff tool?
Where do I get the SDL?
Related tools
OpenAPI Studio — Viewer & Validator
Paste an OpenAPI 3.0 / 3.1 or Swagger 2.0 definition to browse endpoints by tag and schemas as trees, and to check it against the official schemas with line and column. It never calls the API or fetches external files, and nothing leaves your device.
Schema Codegen — JSON to Types & Schema
Paste sample JSON, a JSON Schema or an OpenAPI document to get type definitions in 10 formats. Put several samples in a row to infer optional keys and unions. Your data never leaves your device.
JSON Studio — Formatter & Validator
Paste JSON to format, minify or validate it instantly. Errors are shown with the exact line, column and cause, and comments or trailing commas can be auto-repaired. Your data never leaves your device.
AsyncAPI Check and Event API Diff
Paste AsyncAPI YAML or JSON to list its servers, channels, operations and messages, with issues such as unresolved $ref and unused components by line number. Paste an old and a new version to see candidates such as removed channels or operations, and removed or newly required payload properties. Nothing leaves your browser.
Protobuf .proto Check and Compatibility
Paste a .proto to list its messages, field numbers, types, labels, enums and rpcs, with issues such as duplicate or out-of-range numbers by line number. Paste an old and a new version to see changes that may break compatibility, such as a changed field number or type, apart from cautions and safe changes. Nothing leaves your browser.
Diff Tool — Text & Code Compare
Paste or drop two versions and see added and removed lines, plus the exact words that changed inside each line. Copy or save the result as a unified patch. Nothing leaves your browser.
Last updated: