Log Image
Keep a self-contained HTML journal of every image you make and the exact settings behind it
- image_in
You've been there: ten variants deep, the prompt that made the good one is scrolling off your screen, and ComfyUI's built-in history is technically there but nobody wants to dig through it. Log Image is the "write this down for me" node. Drop it at the end of any branch, give it a title, and it appends a timestamped entry - the image, your caption, and a full dump of every node and every input value in the workflow - to a daily HTML file you can open in a browser.
It ships in moustafa-nasr/ComfyUI-SimpleLogger, a small pack whose whole pitch is "save your history as HTML so you can duplicate it later." That last part is a half-promise, and worth knowing up front: the workflow is saved as a human-readable HTML table, not a loadable JSON file. You can read exactly what the seed and sampler were and rebuild it by hand; you can't drag the file back into ComfyUI. For a visual log of "what did I generate and with what," that's fine. For exact reproducibility, ComfyUI's own workflow export is still the tool.
How it works
The node is an output node (nothing wires out of it), so it lives at the end of a branch and does its thing on every queue run. When it fires, it grabs the image tensor, downscales it to a quarter-size thumbnail, base64-encodes it as PNG, and writes it into the day's log file alongside a timestamp, your title, your description, and a table generated from the workflow's prompt data - every node ID, its class type, and its input values. The images are embedded directly in the HTML, so the file is fully self-contained. Open it weeks later on any machine and it just renders.
Because it appends to one file per day, log_YYYY-MM-DD.html grows all day long and becomes a browsable journal of your session. Everything the node needs - numpy, PIL, torch, base64 - is already part of ComfyUI, so there are no extra dependencies hiding in this pack.
The inputs that matter
Only a handful, and two of them do almost all the work:
image_in(IMAGE, required) - whatever image you want logged. Wire it from your VAE decode or any node's image output.title(STRING, defaultimage #) - shown as the heading on the log entry. Set it to something meaningful ("T2I-Adapter test, seed 42") and your log actually becomes searchable.description(STRING, multiline, defaultimage of something.) - free text under the title. The author clearly assumed you'd type here.custom_directory(STRING, optional) - leave it empty unless you want the file somewhere specific. If set, it can be absolute or relative to your ComfyUI folder.save_to_output(BOOLEAN, defaulttrue) - this is the trap. When true, logs go toComfyUI/output/YYYY-MM/log_YYYY-MM-DD.html. When false, they go toComfyUI/logs/log_YYYY-MM-DD.htmlinstead.
There are no outputs, and no models to download - the whole pack is a few hundred lines of Python.
Installing it
Easiest path is ComfyUI Manager: open Manager → Custom Node Manager, search for Logger, and install the one by moustafa-nasr. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/moustafa-nasr/ComfyUI-SimpleLogger
Restart ComfyUI and you'll find Log Image under the Logger category. No pip step, no requirements, no models - one less thing to go wrong in a category of installs that usually has plenty.
Where people get burned
The biggest gotcha is that the README tells you logs live in {ComfyUI folder}/Logs, but the shipped code writes them to output/YYYY-MM/ by default. If you search logs/ and find nothing, check under output/ - and remember save_to_output flips the destination. The other surprise is the thumbnail size: previews are quarter-resolution, so if you were hoping the HTML would double as a high-res archive, it won't. And because this is a tiny pack from a solo dev with effectively no community footprint, treat it as a convenience, not infrastructure - your source of truth for reproduction should still be saved workflow JSON.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_in | IMAGE | — | |
| title | STRING | image # | — |
| description | STRING | image of something. | — |
| custom_directoryopt | STRING | — | |
| save_to_outputopt | BOOLEAN | true | — |
Outputs (0)
No outputs