GGUF Quant Validator ✅
The two-second 'is this download actually fine?' check
- is_valid
- report
A truncated download or a botched conversion doesn't usually fail where it happens. It fails three nodes downstream, in the confusing way - black output, garbage latents, a model that loads but clearly isn't right. This node is the fast pre-flight: it opens a .gguf file, dequantizes a sample of its tensors, and checks for the things that actually indicate a broken file - NaN/Inf values, all-zero tensors, zero-element tensors, or tensors that won't dequantize at all. Out comes a clean is_valid boolean and a report, before you've committed to a load.
How it works
The clever bit is which tensors it samples. Rather than just checking the first N in the file - which is where a truncated download would still look perfectly healthy - it spreads its sample evenly through the whole file. Corruption from an interrupted download tends to hit the tail, so a fair spread is what catches it. Each sampled tensor is dequantized with the gguf package's own code and run through finite-value and all-zero checks.
Be clear-eyed about what it isn't, though: it doesn't verify a checksum against a known-good hash - this pack has no registry of expected hashes - so it's a structural and numerical sanity check of the file's own internal consistency, not proof the file matches whatever its source claims it is. A file can pass this and still be the wrong model. What it reliably catches is a file that's broken, and that's the expensive failure to avoid.
Inputs and outputs
gguf_name- dropdown of.gguffiles across the shared GGUF model folders (diffusion_models,unet,unet_gguf,clip,clip_gguf,vae,checkpoints), withpath_overridefor files anywhere else.sample_size- how many tensors to spot-check, default 25, up to 500. 25 is plenty for a health check; raise it if you're paranoid about a specific file.
Outputs: is_valid (a real BOOLEAN) and report (a string detailing what was sampled, the quant-type mix, and any problems found). Because is_valid is a boolean, you can wire it into the pack's own workflow-gating nodes - an Any Switch or Conditional Gate - to stop a bad file from ever reaching a sampler. That's where this node earns its keep in a serious workflow.
Installing
It's one of the six GGUF nodes inside OmniNodes, TensorVizion's all-purpose pack, and it needs the pack's one GGUF dependency:
cd ComfyUI/custom_nodes/
git clone https://github.com/TensorVizion/OmniNodes
cd OmniNodes && pip install -r requirements.txt # adds gguf
Restart ComfyUI. Via ComfyUI Manager, search "OmniNodes" - then still run pip install gguf, since it isn't bundled with ComfyUI and the node returns a clear "install gguf" error if it's missing. Find it under TensorVizion/GGUF.
When to actually run it
Two honest use cases: right after downloading a big model file over a flaky connection (this is the cheapest insurance you'll buy), and right after converting your own .gguf with the pack's GGUF Checkpoint Converter to confirm the output is sane. If you downloaded over a solid connection and the file's checksum already matched the page you got it from, you can skip it - but it costs one double-click, and the alternative is debugging a black image at the end of a long queue.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| gguf_name | COMBO | 1 options: <none found in model folders — use path_override> | |
| sample_size | INT | 251–500 | — |
| path_overrideopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| is_valid | BOOLEAN | — |
| report | STRING | — |