The official validator, in your browser
This is not a reimplementation. It runs the Khronos glTF-Validator — the same engine behind the official online validator and the export checks built into several DCC tools — compiled to JavaScript and executed locally on your machine.
That distinction matters when you are the one telling a supplier their export is broken. "The official Khronos validator reports ACCESSOR_INDEX_OOB at /meshes/3/primitives/0/indices" is a conversation that ends quickly. "Some website said it looked wrong" is not.
Reading the severities
The validator reports four levels, and they are not equally alarming.
Errors mean the file violates the glTF 2.0 specification. A permissive viewer may still open it — three.js in particular is forgiving — but you have no guarantee any other implementation will. Fix these.
Warnings flag things that are legal but almost certainly unintended: an accessor whose declared min/max do not match its data, a texture with no image, a node with an identity transform and no children.
Information and hints are advisory. UNUSED_OBJECT and NODE_EMPTY show up in plenty of perfectly good production assets — an exporter left a helper node behind, nothing more. A clean file with nine hints is a clean file.
Validating a .gltf with external files
A .gltf is a JSON document that points at separate .bin buffers and image files. If you validate the JSON on its own, every one of those references reports as a missing resource and the report is useless.
Add the companion files in the second picker and they will be resolved properly. Anything still missing is listed explicitly — which is itself a genuine finding, because a .gltf shipped without its .bin is a broken delivery.
Common findings and what they mean
ACCESSOR_INDEX_OOB— an index buffer references a vertex that does not exist. Almost always a broken exporter or a truncated file.ACCESSOR_MIN_MISMATCH/ACCESSOR_MAX_MISMATCH— the declared bounds disagree with the actual data. Breaks frustum culling and any consumer that trusts the header.MESH_PRIMITIVE_NO_POSITION— a primitive with no vertex positions. Nothing can render it.UNSUPPORTED_EXTENSION— the file uses an extension the validator does not know. Not necessarily wrong, but worth checking against your target engine.MESH_PRIMITIVE_TANGENT_WITHOUT_NORMAL— tangents with no normals, which is meaningless.UNUSED_OBJECT— something is defined and never referenced. Harmless, but it is dead weight in the file.
The asset summary
Beyond the issue list, the validator reports the numbers that matter for performance: draw calls, total vertices and triangles, maximum UV sets, and maximum bone influences per vertex. That last one is worth watching — many mobile pipelines cap at four influences, and a model authored with eight will deform incorrectly rather than fail loudly.
Privacy
The validator runs as JavaScript in your browser. No file, buffer or texture is uploaded, which makes it safe for client work and unreleased assets.
Tiny Online Tools







