Base64Image Input Node
Feed ComfyUI an image without uploading a file
- IMAGE
This one isn't really built for clicking around in the ComfyUI editor - it's for when something else is talking to ComfyUI over the API and needs to hand it an image without going through the normal upload step. Instead of a file path, it takes a base64-encoded string and decodes it straight to pixels.
Why this exists
This pack backs A8R8, a separate canvas-based frontend by the same author (ramyma) that runs A1111, Forge, or ComfyUI as a backend and does painting, layers, and regional prompting from one browser UI. A8R8's canvas doesn't save what you've painted to ComfyUI's input folder before generating - it POSTs the pixel data as a base64 string embedded directly in the API call. Base64ImageInput is the receiving end of that: it decodes whatever base64 payload lands in its one field into a normal IMAGE tensor, same as LoadImage would give you from a file.
That's a genuinely useful pattern outside of A8R8 too. If you're calling a ComfyUI-compatible API directly - rather than clicking through the browser UI - and want to embed your input image straight in the workflow JSON payload, this node (and its Base64ImageOutput sibling) let you skip a separate upload round-trip entirely.
The one input, and the output
base64_image(STRING, default empty, single-line) - the raw base64 payload. The schema doesn't document whether it strips adata:image/png;base64,prefix for you, so don't assume it does - if you're pulling straight from a browser'scanvas.toDataURL(), strip that header yourself before it goes in.- Output:
IMAGE- a decoded image tensor. Wire it anywhere aLoadImageoutput would go: VAE Encode, a ControlNet preprocessor, an image-to-image chain.
Installing it
Search "A8R8 ComfyUI Nodes" in ComfyUI Manager, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/ramyma/A8R8_ComfyUI_nodes
Restart ComfyUI. No extra dependencies - decoding base64 to an image is stock Python (base64 + Pillow), both of which ComfyUI already needs, and there's nothing to download.
Common issues
Decode errors or a blank output. Almost always the string itself: a data:image/...;base64, prefix that didn't get stripped, whitespace or line breaks introduced by whatever copied it in, or a truncated paste. Validate the string is clean base64 before it hits this node.
It's awkward to use by hand in the editor. The field is a single-line STRING widget, and a real image easily runs to tens of thousands of characters of base64 - not something you're meant to type or comfortably eyeball. That's not an oversight, it's the point: this node is built to be filled programmatically by an API call, not edited by a human in the UI. If you're just testing a workflow visually, use a regular LoadImage node instead and swap this in once you're wiring up the actual API integration.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| base64_image | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |