X-WIDE Image Sender 图像发送器
Hand an image across your graph without the noodle
- images
- images
There's a point in every big ComfyUI graph where you're dragging one wire from the far-left column to the far-right column, across forty other nodes, and you can no longer tell what connects to what. The X-WIDE Image Sender is one answer to that: park it next to the image, park its partner somewhere else, and the picture travels between them without a wire. People also use the pair to get the finished image into a second ComfyUI tab - including one on another monitor - since both ends talk over the running server rather than over the graph.
What it actually is
The original Image Sender / Image Receiver nodes come from ltdrdata's Impact Pack, the detect-crop-refine pack that owns FaceDetailer and a big chunk of the ecosystem's utility nodes. X-WIDE's pack is a standalone re-wrap of that pair: same protocol, same widget layout, GPL-3.0, no Impact Pack required. The author's framing is blunt - UI polish (bilingual labels) plus bug fixes, no new features. Because the wire format matches, an X-WIDE Sender can feed an Impact Pack Receiver and vice versa, and both packs can live in the same install.
How the handoff works
This is not a link, it's a message. XWIDE_ImageSender subclasses ComfyUI's own PreviewImage, so it saves the incoming image into ComfyUI/temp/ under filename_prefix (ImgSender by default) and stamps the usual metadata chunks into that PNG. Then it fires an img-send event carrying your link_id and the file it just wrote.
The front end catches that event and walks the graph for every Image Receiver whose link_id matches; each one gets the new filename written into its dropdown as an annotated path - ImgSender_00003_.png [temp] - plus an instant preview. One sender, several receivers with the same id, is legal and does exactly what you'd expect.
The trap nobody warns beginners about: the receiver reads the file it was holding when you pressed Queue. A queue is a static snapshot of your widget values, so the send lands for the next run. The pair is a handoff between runs, not a live wire inside one.
It's also an output node, so it always executes even with nothing downstream needing it - same category as Preview Image. That's what makes it work, and why it writes a PNG on every run whether you wanted one or not.
Inputs and outputs
Three inputs, and honestly you set one of them.
images- the IMAGE to send. The only thing you wire.filename_prefix- defaultImgSender. Change it if two senders share a canvas and you want their files told apart.link_id- default0. The pairing number, and the only bit of config that matters.
The output is images (IMAGE) - the same picture, passed straight through, so the node can sit inline in a chain as a no-op that happens to broadcast. You can also right-click → Convert link_id to input and drive it from a Primitive or ImpactInt; once converted it counts as connected.
Install
ComfyUI Manager, searching the pack title X-WIDE Image Latent Sender / Receiver, or by git URL. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/XWIDE/comfyui-x-wide-image-latent-sender-receiver
Restart ComfyUI and hard-refresh the browser (Ctrl + F5) - the front-end does the receiving, so a stale page means nothing appears to work. Nothing to download: the dependency list is empty, and the node only touches the torch/numpy/Pillow and front-end API already in ComfyUI. Heads-up: the repo was renamed in October 2026 and the older comfyui-x-wide-image-sender-receiver URL now just redirects, which is why you'll see two slightly different names in the wild.
Where people get burned
Both halves must be in the same session. The event travels over the running ComfyUI server, so a Sender in one workflow tab can feed a Receiver in another tab on the same machine - real, and slightly magical - but not a second machine.
link_id 0 is the default for everything. Two pairs on one canvas, both on 0, and every receiver gets every image. Give each pair its own id the moment you add a second one.
Temp is scratch. ComfyUI/temp/ is cleaned on restart, so the file this node sends is gone next session, leaving the receiver pointing at nothing. Re-send once and move on. If you want an image to live inside the workflow, this isn't the tool - use Save Image / Load Image.
Nothing arrived? Check the sender ran (look at its preview), check the ids match, check your browser isn't cached. The pipes are this simple precisely so the problem has nowhere else to hide.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | 要发送的图像。 / Images to send. | |
| filename_prefix | STRING | ImgSender | 保存到临时目录时用的文件名前缀。 / Filename prefix used in the temp folder. |
| link_id | INT | 00–9223372036854776000 | 配对编号:和 Image Receiver 的 link_id 相同才会发过去。 / Pairing id: only the Receiver with the same link_id receives this image. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |