ZC Image Batch Audit
The preflight checklist your ComfyUI output folder never had
- html_report
- json_report
- image_count
- finding_count
ZC Image Batch Audit is the node you add right before you publish a batch of generated images and find out, too late, that three of them are corrupt, two are pixel-for-pixel duplicates, and one came out 512×512 when you needed 1024. It doesn't generate anything - it's a quality gate. Point it at a subfolder of your ComfyUI output directory, queue it, and it writes a local HTML proof sheet plus a JSON report listing every image with its dimensions, size, hash, and anything that looks wrong. It was extracted from a real publishing workflow, and it shows: the feature list reads like the specific things that bite you on release day, not a general-purpose "batch manager."
The name is slightly misleading in the best way. There's no "audit" API being called, no upload, no key. Everything runs locally with a single dependency (Pillow). It's the kind of tiny utility node the ecosystem is full of - plumbing, not pixels - and if you batch-generate for Civitai, a portfolio, or a comic project, it's the one you'll reach for.
How it works
Under the hood it's a scan plus a report renderer. The node resolves your subfolder relative to ComfyUI's configured output directory (the same one folder_paths.get_output_directory() returns), checks the path can't escape that root (a ../ attempt raises an error), then walks PNG, JPEG, WebP, and GIF files - recursively if you want. For each image it records dimensions, format, color mode, byte size, and a SHA-256 hash. Then it flags three things: unreadable/corrupt files, exact byte duplicates (files whose hashes match), and any image under your minimum size.
The HTML report embeds reduced-size PNG thumbnails, so it stays readable offline and doubles as a visual proof sheet. Each card links back to the original file, but the links are relative - keep the report next to the image folder and the links work; move the HTML alone and they won't. Note what it doesn't claim: duplicate detection is exact-hash only. Two visually identical images that were recompressed differently won't be flagged, so use it as a preflight, not a substitute for eyeballing your own output.
The inputs that matter
There are only five, and you'll touch maybe three:
subfolder- the folder to scan, relative to ComfyUI's output directory. Empty string scans the output root itself.recursive- defaults to true; flip off for flat folders.min_width/min_height- the real "publishing" controls.0disables the check, so for a Civitai-style preflight set both to your required resolution. Any image narrower or shorter gets flagged.thumbnail_width- how big the embedded previews are. Leave it at 180 unless you're auditing very few files.
It's an output node, so you wire nothing out of it, but it does return four values if you ever want them: html_report and json_report (the paths it wrote), plus image_count and finding_count. One nice touch for automation: the node re-runs every time you queue, because files in the output folder can change without a workflow edit. That's deliberate, and it means your preflight is never stale.
Installing it
ComfyUI Manager is the easy route - search for ZC Image Batch Audit (the pack title is ZC-image-batch-audit) and install. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lucaszhouc/ZC-image-batch-audit.git
cd ZC-image-batch-audit
python -m pip install -r requirements.txt
Restart ComfyUI and you'll find ZC → quality → ZC Image Batch Audit. The whole dependency footprint is Pillow>=10,<13 - no torch, no model files, nothing heavy. There's also a standalone CLI (pipx install . gives you image-batch-audit) with a --fail-on-findings flag that returns exit code 2 when problems exist, handy as a CI gate.
Gotchas
The report lives at output/<subfolder>/_audit/image-audit.html - don't go hunting at the folder root. The HTML contains embedded thumbnails and filenames, so if the batch is private, skim it before sharing the file. And remember the exact-duplicate caveat: it's SHA-256 matching, not perceptual similarity. Corrupt images don't crash the run - they get flagged and the batch continues - which is more than you can say for a lot of image tools. For a brand-new pack with zero community signal yet, the code is clean, tested, and MIT-licensed; the author's contact email is in the README if you hit something. The honest verdict: it's small, it's boring, and that's exactly why it's worth having on your publishing workflow.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| subfolder | STRING | — | |
| recursive | BOOLEAN | true | — |
| min_width | INT | 00–65536 | — |
| min_height | INT | 00–65536 | — |
| thumbnail_width | INT | 18040–1024 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| html_report | STRING | — |
| json_report | STRING | — |
| image_count | INT | — |
| finding_count | INT | — |