Load Image with Password Prompt
Load an image and read its prompt — if you know the password
- image
- prompt
Most image loaders are boring. This one isn't: it loads an image and reads the generation prompt stored inside it, but that prompt is scrambled with a password. Feed it the right password and you get the original text back alongside the image. Feed it the wrong one and you get an empty string and no drama.
The reason to care is that ComfyUI's normal metadata is an open book. By default your prompt, settings, and whole workflow ride along in the PNG's text chunks, and anyone with a text editor can read them. The pack's companion node, Save Image with Password Prompt, writes the prompt into the file in a form that only decrypts with the key you chose. This node is the read side of that pair: pick the file, type the password, and it hands you back both the pixels and the prompt.
How it works
The encryption is a simple XOR cipher plus Base64: each byte of the prompt is XORed against the repeating bytes of your password string, then Base64-encoded so it survives being stashed in image metadata. On the read side, this node pulls the metadata - the prompt text chunk in a PNG, or the ImageDescription EXIF tag (0x010E) in a JPEG - Base64-decodes it, XORs it back with your password, and returns the result. The key detail: if the password is wrong, the decode just produces garbage, and the node returns an empty string rather than raising an error. Silent, not loud.
Inputs and outputs
image_file(enum) - pick from the files in yourComfyUI/inputfolder. It's a standard upload-style selector, so you can drop a new file straight in.password(STRING) - the same password used when saving. Get it wrong and you get""out.image(IMAGE) - the loaded image, RGB, ready for img2img, VAE encode, or whatever you'd do with any loader.prompt(STRING) - the decrypted prompt text, or empty if the password didn't match.
The wiring pattern that makes sense: image into your img2img or refinement chain, prompt into a Show Text/Preview Text node or straight back into a text encoder if you want to continue from where the original generation left off. It's a genuinely nice way to iterate on your own password-protected generations without digging through metadata.
Installing it
Part of ComfyUI Fictiverse Nodes - install the pack, not a single node:
- ComfyUI Manager → search ComfyUI Fictiverse Nodes → Install, restart.
- Or:
cd ComfyUI/custom_nodes && git clone https://github.com/Fictiverse/ComfyUI_Fictiverseand restart.
No extra Python dependencies, no models to download. It's a small single-author utility pack.
Common issues
Two things bite people. First, the password. This is a reversible scramble, not real security - someone determined could brute-force a short password, and the pack's own README is upfront that everything in it is free to copy and reuse. Treat it as "keep casual snoopers out of your prompt history," not "protect state secrets." Second, it only round-trips with the pack's own Save Image with Password Prompt node. Save the same image with the built-in Save Image and you'll just get the standard readable metadata back - this loader will return an empty prompt because there's nothing encrypted to find.
One more recurring snag with the pack generally: shared workflows on Reddit use Fictiverse nodes, and if you load one without the pack installed you'll see ModuleNotFoundError: No module named 'custom_nodes.ComfyUI_Fictiverse'. That's the install missing - clone it, restart, reload the workflow.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image_file | COMBO | 1 options: example.png | |
| password | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| prompt | STRING | — |