Runs in your browser

What actually changed between these two models?

A checksum says two files differ. It cannot tell a lossless recompression from a rig that quietly lost three finger joints, and only one of those takes your avatar off the screen. Drop a .glb on each side and get the change set: geometry, materials, textures, skeletons, and clips, with renames and moves detected the way git detects them.

Before
After
No files handy?
Both models render here Overlay the after on top of the before, wipe between them, or set them side by side.
Load two models Drop a file on each side, paste two URLs, or pick one of the example pairs above. The comparison runs on your machine.

How it decides

Renames, not churn

Objects are matched by name, then by content hash, then by similarity, the same three-tier strategy git uses for file renames. An exporter that renumbers Mesh.001 reads as a rename, not as a rewrite.

Tolerant on noise, strict on edits

Vertex data is compared at a quantum of 1e-4 units, so the float drift a re-export or a Draco round trip introduces does not register while a genuine edit does.

Severity you can gate on

none, cosmetic, minor, major, breaking. Breaking means something a consumer references by name is gone: a clip, a joint, a mesh. That is the failure that renders fine and never moves.

Same engine everywhere

This page, the glb-diff CLI, and the free API all run @axis/glb-diff, so a verdict in CI can never disagree with what you see here.