ComfyUI Node

EXIF Viewer

The prompt is still in that PNG — this node drags it out

By Sigmoid99·Created 2 months ago·Updated 18 days ago· 0
EXIF Viewer
    • positive
    • negative
    positive
    negative

    Somewhere in your downloads folder there's a PNG you made three weeks ago, and it still knows exactly how it was made. ComfyUI embeds the whole generation - prompts, seed, sampler, every LoRA - into the file as text chunks, and A1111/Forge do the same with a flat parameters string. That's the whole trick of this ecosystem: the workflow lives in the image, not in a project file.

    ExifViewer is a drag-and-drop node that reads all of that back out. Drop an image onto its body and it fills in editable positive and negative prompts plus a summary of the settings. Its party trick is that it doesn't just speak ComfyUI. It reads PNG text chunks (tEXt/iTXt), A1111/Forge parameters blocks, flat-prompt dicts, JPEG and WebP EXIF UserComment tags, NovelAI's Comment chunk, and even NovelAI's "stealth pnginfo" - where the prompt is compressed and hidden in the least-significant bits of the actual pixels, so it survives image hosts that strip text chunks. For a little utility node that's a genuinely absurd amount of parser.

    How it works

    Here's the part that surprises people: the Python node does almost nothing. ExifViewer takes positive and negative strings and returns them straight back - return (positive, negative). All the real work happens in your browser, in web/exif_viewer.js, the moment you drag a file onto the node. It walks the file format, finds whichever metadata dialect is in there, and runs the right parser:

    • For a ComfyUI PNG, it reads the prompt graph JSON and walks the node graph to find the sampler's positive and negative conditioning, tracing the text back through whatever nodes feed it. When the graph is too weird to trace, it falls back to keyword scoring - negative-hint words like "low quality", "blurry", "bad hands" versus quality tags like "masterpiece".
    • For A1111/Forge/Reforge, it parses the parameters string (and the JPEG/WebP UserComment EXIF field where that string ends up after export).
    • For NovelAI, it handles both the plain JSON Comment chunk and the stealth pnginfo steganography described above.

    Nothing leaves your machine, no API key, no internet, no model download. The author's README notes this was built "with a lot of help from ChatGPT & Claude," and honestly, you can feel the scope - this thing has more edge cases handled than most commercial tools.

    The inputs and outputs that matter

    The info_schema is deceptively simple: two required inputs, positive and negative (both multiline strings), and two outputs, also named positive and negative (both STRING). The node hides the stock input widgets and replaces them with its own big textareas, which are editable - its prompt guess is never final, and for weird workflows you'll want to fix it by hand.

    Wire the positive output into whatever eats a prompt string - a CLIPTextEncode, a concat node, a save-with-metadata node. Both outputs carry whatever text is in the boxes at execution time, and since it's an output node it always executes.

    Installing it

    From the ComfyUI Manager UI, search for comfyui-custom-node-sig and hit install. Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Sigmoid99/comfyui-custom-node-sig
    

    Restart ComfyUI. There's no requirements.txt in the pack and no model files - the node is browser-side JavaScript plus a two-line pass-through, so nothing extra to pip install.

    Where people get burned

    • Drag onto the node, not the canvas. Dropping a PNG anywhere else on the canvas tells ComfyUI "load this as a workflow." Drop it on the ExifViewer body specifically.
    • Re-encoded images have nothing to read. If the image passed through Reddit, Discord's inline preview, a screenshot, or a JPEG conversion, the metadata is gone - mechanically gone, not hidden. The node will tell you it found no generation info, and no parser fixes that. Only the original file works.
    • Complex workflows can confuse it. The author's own README warns "errors may occur in some complex ComfyUI workflows." Multiple samplers, heavily custom text nodes, bypassed branches - the graph-walker has to guess which text is positive and which is negative. When it guesses wrong, just edit the boxes; that's why they're editable.
    • Stealth-pnginfo images must be the original PNG - the prompt is in the pixels, so any re-encode kills it the same way.

    It's a niche tool, and its zero-impression comfy.icu page reflects that. But if you collect prompts from other people's images the way some people collect recipes, this is the one I'd reach for - one drop and you've got the prompt, not a graph rebuild.

    Categoryutils

    Inputs (2)

    NameTypeDefaultDescription
    positiveSTRING
    negativeSTRING

    Outputs (2)

    NameTypeDescription
    positiveSTRING
    negativeSTRING