WaveSpeedAI Preview ⚡
The WaveSpeedAI Preview is a URL-to-tensor bridge wearing a preview's name
- input_url
- image
- video
"Preview" undersells it
The name makes this node sound like a glorified image viewer, but that's the least of what it does. The WaveSpeedAI Preview is the bridge that makes the whole WaveSpeed pack usable. When your WaveSpeedAI Predictor finishes a task, it hands you a URL - not an IMAGE tensor, not a VIDEO tensor, a URL string. You can't connect a URL into Save Image or VHS or anything else native. This node takes that URL and turns it into a real tensor your workflow can chew on.
In practice it's the node you put right after every WaveSpeed Predictor, the way you'd slot a VHS decoder after a video loader. Predictor → Preview → the rest of your graph.
How it works
Feed it anything and it figures out the type itself. The node checks the URL's file extension first, then falls back to the server's content-type header, and routes accordingly:
- Image URLs → downloads and decodes into an IMAGE tensor.
- Video URLs → fetches into a VIDEO tensor.
- A list of image URLs → shows them as a gallery in the UI and converts the whole set to a tensor.
- 3D model URLs (.glb) → displayed in the UI only. Deliberately no tensor conversion, per an explicit comment in the source - a 3D task's preview images shouldn't masquerade as a normal image batch.
- Audio or plain text → shown in the UI; there's no tensor output for those, so nothing to wire onward.
Because it's also flagged as an output node, whatever it receives shows up in the UI at the same time - which is where the "preview" in the name actually comes from.
The one input and the outputs
Just one field: input_url, typed ANY, with the tooltip "Connect output from WaveSpeed AI Generate node." Connect the Predictor's output_url here, or honestly any URL you happen to have - it doesn't care where the link came from, and it needs no API key to do its job.
It returns two outputs, image (IMAGE) and video (VIDEO). Both will be null for the types that don't convert, which is normal - check which one lit up rather than hunting for a bug. Wire the image output into Save Image, or the video output into whatever video node your workflow uses.
Installing it
Both WaveSpeed nodes ship in the same pack, so you get them together:
cd ComfyUI/custom_nodes
git clone https://github.com/WaveSpeedAI/wavespeed-comfyui.git
Or search "WaveSpeed AI - Universal Generation" in ComfyUI Manager and restart. One wrinkle worth knowing: the pack's __init__.py auto-installs opencv-python, scipy, av, and pydantic into your ComfyUI Python environment on startup if they're missing, and requirements.txt also lists torchaudio and pillow. The Preview node itself is lightweight - it just fetches and decodes URLs - but you're installing the whole pack, dependencies and all. First launch is also slow while the plugin pulls down the model catalog for the Predictor, so don't panic if the first open takes a couple of minutes.
Where people get burned
- Trying to use 3D, audio, or text outputs as tensors - they don't convert. Only image and video URLs produce tensor outputs, and the node is honest about it.
- Assuming it needs the API key - it doesn't. If the Preview node works but the Predictor errors with "No API key configured," that's a Predictor config issue, not a Preview one.
- No internet - the conversion requires fetching the remote file. Offline, the node returns nothing.
- Forgetting it's URL-based - the node doesn't cache the media locally, so every conversion re-downloads. Fine for one-off previews; if you're iterating hard, save the tensor early with a native Save node.
For a node that sounds like a footnote, it's quietly the piece that makes the whole "600+ hosted models inside ComfyUI" trick work. Learn it once and every WaveSpeed workflow you touch will make sense.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| input_url | * | Connect output from WaveSpeed AI Generate node |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| video | VIDEO | — |