Blender says the bind worked. It says that either way.
You select the mesh and the armature, press Automatic Weights, and Blenderreports success. On an ordinary humanoid it has just left four bones out ofnineteen with no weight at all — both hands and both feet, every single time.On a coarser mesh, six. On a real production model it reported success havingbound not one vertex out of eleven thousand seven hundred and sixty three.
Nothing in the interface tells you. You find out when you animate.
What it finds, and how it proves each one
A weight counter can tell you a group is empty. It cannot tell you a bonemoves nothing, because the weight may sit on a group the modifier never reads.So BindProof does not count — it measures.
Bones that move nothing
Each suspect bone is turned 35 degrees and the moved vertices are counted:zero. Printed right beside it, a bone that does carry weight —385 vertices, up to 102.9 mm. The zero is only worth somethingbecause the other number is there to show the measurement works.
Vertices bound to nothing
The rig is posed and the vertex is shown standing still while its mesh walksaway: 0.00 mm against 460.39 mm. If the mesh has nowhere to goin this frame range, BindProof says nothing rather than printing "0.00 against0.00" — an empty proof is worse than no proof.
A bind that did not happen at all
Reported on its own, not as a count of vertices. Eleven thousand unboundvertices is not a patchy skin; it is an operation that silently did nothing, andthe two need different words.
More influences than your engine will read
Unity, Unreal and Godot take four influences per vertex and drop the restwithout a word on import. BindProof counts them and works out from the skinningmaths how far the worst vertex will move when that happens — so you know whetherit matters on this mesh before you find out in the engine.
Weights that do not add up to one
Blender normalises on the fly for its own armature modifier, so you willnever see it in the viewport — and Blender's own Automatic Weights leaves mostof a mesh that way: 1325 vertices out of 1932 on a measured character. Saidplainly, so you know it is normal inside Blender. It stops being normal onexport, where the skin shrinks towards the rig or blows away from it, andBindProof tells you by how many millimetres.
Weights on a bone that has Deform switched off
The group exists, the modifier does not read it. From the outside it looksbound. It is a hole.
It does not cry wolf
A weight counter finds problems that are not there. A bone with no weightsof its own still moves the mesh if its children carry weight, or if a Mirrormodifier builds the other half — so those bones are named separately, notaccused. A character made of a body, gloves and eyes on one rig is read as onecharacter: a bone is only called empty when it carries no weight on any ofthem. A mesh bound by envelopes is not called unbound, because weights are notwhat moves it.
And where the measurement itself cannot work — the armature is in RestPosition, or it is a control rig whose bones are driven by constraints — itsays so and judges nothing. The zero it prints always sits next to a numberthat is not zero.
It does not write to your weights
Not one of these is fixed. There is a shelf of add-ons that write weights,including our own — and a tool that fixes cannot be the witness that the fixworked. BindProof reads the bind you already have, whoever made it: Blender'sbinder, Voxel Heat, an imported FBX, your studio's own pipeline.
A fingerprint that includes the weights themselves and the whole pose istaken before and after every check and compared, and the panel prints the resulteach time — not only when something went wrong.
Tested
108 checks on each of Blender 4.2.9, 5.1 and 5.2, zero problems, plus tendeliberate sabotages of the product itself to prove the tests can fail — all tenturn the suite red, including ones that treat a zero weight as a bind, that stoptelling deforming bones from ordinary vertex groups, and that look for thearmature through parenting instead of through the modifier.
Silence is tested as hard as noise: on a fully bound mesh it reportsnothing.
Requires
Blender 4.2 or newer. No internet connection, no external libraries, nothingwritten to your file system.
And now it fixes what the engine would drop
Unity, Unreal and Godot read four influences per vertex and silently discardthe rest, so a character can deform one way in Blender and another way in thegame. BindProof already measured how far apart those two are. Now one buttonkeeps the four heaviest influences, makes the weights add up to one, andmeasures again.
The proof is not "the warning went away". It is that the prediction and theresult agree: BindProof said a vertex would sit 893.9 mm out of place in theengine, the repair ran, and the skin in Blender moved by 893.9 mm — adifference of 0.0001 mm. What you see is now what ships.
Unbound vertices and empty bones are deliberately left alone. Which boneshould own a vertex is your decision; guessing "the nearest one" is how an earends up sewn to a shoulder. BindProof names them and shows you where they are.
Whole deliveries, not one file at a time
- Check a folder. Point it at a delivery and every .blend inside is checked, each in its own background Blender. The scene you have open is not touched — not opened over, not saved, not changed. A file that hangs or crashes takes only its own process down; the other thirty-nine still get checked.
- A report you can send. One self-contained page: verdict first, one sentence a lead can read, then the numbers, then every finding with its address. No internet, no fonts to load, no dependencies — it opens in six months on a machine with no network, which is exactly when someone asks what you delivered.
- Runs without a person. A single command from your pipeline writes the report and returns a code: clean, something blocking, or could not be checked. Those are three different codes on purpose — a check that did not run has not passed, and a gate that treats them the same is worse than no gate at all.
- Remembers last time. Save today's numbers as a baseline and a later run tells you what moved, in which direction, and which findings are new. A measurement that went up is not automatically bad: each product says which way is worse for its own numbers.
- One verdict for the whole delivery. If you own more than one of these tools, one run puts every check you have over every file and answers the only question that matters before you send it: can this go out? Each file is opened once and all the checks see the same state of it.