Neatbo.

Check a GraphQL document against a local schema

Prepare an actual SDL or introspection snapshot, validate every operation, and hand off exact originals with full diagnostics.

Prepare the two distinct inputs

Place the complete query, mutation or subscription document in the first box. If it comes from React gql tags, copy only the GraphQL text. JavaScript source and HTTP query envelopes are outside this input format.

Choose SDL for a schema document, or introspection JSON for a downloaded __schema object or data.__schema response. The schema snapshot should describe the API version you intend to use; this tool does not obtain it from an endpoint.

  • Keep the operation document when selecting a schema file: only the second input is replaced.
  • A filename ending in .json does not override the chosen format.
  • Remove an endpoint errors response and obtain the actual complete schema before checking operation semantics.

Read the result in the right order

Check schemaValid first. When it is false, documentValid is null because the supplied schema cannot support a semantic document check. Syntax, schema type and introspection structure failures still have a complete downloadable diagnostic report.

When schemaValid is true, documentValid states whether the entire document passed the standard rules. Multiple named operations are checked together; an invalid unused-looking operation does not disappear by choosing an operationName. Review every fragment error and diagnostic.

Diagnostic columns use UTF-16 units. An emoji takes two column units; CRLF advances one line. An introspection default value may have an error without an original JSON coordinate because its decoded GraphQL literal is a separate source. No raw JSON position is invented.

Whole-document check
Schema: type Query{x:Int}
Document: query A{x} query B{missing}
Result: schemaValid=true, documentValid=false; unknown field in B

Keep a complete, bounded handoff

Download schema-original.graphql (or schema-original.json), document-original.graphql and validation-report.json. Compare both source SHA256 values with the intended originals, inspect counts and preserve the explicit schema format. The report copy is complete even when its on-screen preview stops at 4,000 codepoints.

A capacity or encoding refusal, timeout or cancellation creates no report. Correct the input or reduce the work, then rerun. A fresh Worker is created for each run; its 10-second deadline includes startup and cannot be extended by a synchronous validation loop.

Finally, exercise the intended operation with real variable values and the relevant API authorization. Static checks do not invoke custom scalar coercion, resolvers or server extensions, and they do not validate the eventual response.

Handoff artifacts
ArtifactPurpose
Schema originalExact effective local schema bytes and identity
Document originalExact entire operation document; every definition was considered
Validation reportComplete native diagnostics, source hashes, stages and observed work counts

References

Tools in this category

Expand a tool to see its steps, options and supported formats, then open its workspace.

GraphQL document validatorCheck a whole GraphQL document against local SDL or introspection JSON and download complete static diagnostics with exact originals.

Check every operation and fragment against a schema you already have. Review source locations and retain both originals with the full validation report.

Steps

  1. Paste the whole GraphQL operation document in the first box.
  2. Choose the schema format and paste local SDL or introspection JSON, or select one schema file.
  3. Run the static check and inspect schemaValid, documentValid and every diagnostic location.
  4. Download both exact originals and validation-report.json; then test execution in the intended API environment.

Available options

Local schema format
GraphQL SDL · Introspection JSON

Select the format explicitly; a selected file replaces only the schema text.

Capabilities and limits

  • Paste a whole operation document up to 1 MiB and a schema up to 2 MiB as UTF-8. Or select one schema file up to 2 MiB: it replaces only the schema box; your operation document stays in place. Choose SDL or introspection explicitly. Original filename labels allow 512 UTF-8 bytes.
  • Only standard static rules from GraphQL.js 17.0.2 run. All operations and fragments are checked together; no operationName selection, React/JavaScript extraction, endpoint request, custom validation rule, resolver or scalar coercion. A passing result does not establish that a query can execute or a response is valid.
  • Schema syntax/type errors and operation syntax/semantic errors produce complete diagnostic reports. Schema errors leave documentValid null. Locations use one-based lines and UTF-16 columns; CRLF is one line break. Structural introspection errors without original-source coordinates have no invented location.
  • Use fatal UTF-8 decoding and paired Unicode scalar values. One leading BOM is accepted and retained in original bytes and SHA256. Introspection JSON must be strict: decoded duplicate keys, ambiguous __schema plus data.__schema, or an errors member produce schema diagnostics. Escaped unpaired surrogates are refused atomically.
  • Introspection metadata numbers must be finite IEEE 754 values; integer-valued numbers must lie within ±9,007,199,254,740,991. No overwritten duplicate array names in types, fields, arguments, enum values or directives. Extra envelope metadata is ignored semantically and its keys are listed; originals remain exact.
  • SDL allows 100,000 syntax tokens and 100,000 AST nodes; the operation document allows 50,000 of each. Both allow 64 nested braces, brackets or parentheses; acyclic fragment chains allow 64 definitions. Tokens exclude comments, commas and whitespace. AST counts include Document and Name nodes, excluding location links.
  • Introspection JSON allows 128 object/array levels and 100,000 tree nodes, including property and key nodes. Reachable non-__ schema types allow 2,000 including injected scalars. Embedded introspection default values share the schema token/AST budgets and 64-level limit; they are parsed as GraphQL const values.
  • Allow at most 1,000 complete diagnostics and a 1 MiB UTF-8 report. If another diagnostic or byte would exceed these limits, no partial report is published. The two separate originals allow up to 3 MiB together. A disposable Worker has an automatic 10-second deadline; cancellation, timeout, capacity or encoding refusal returns no output.
  • The screen previews 4,000 Unicode codepoints of the report. Copy and downloads retain the complete report. GraphQL Float literal 1e400 and arbitrary custom-scalar literals can pass standard static rules; this tool performs no runtime numeric or custom-scalar coercion. Inputs stay in this browser.
Open GraphQL document validator →