WaveSpeedAI Image Upscaler
The hosted AI upscaler that needs zero VRAM
- client
- upscaled_image
Upscaling has a reputation for being the most confusing corner of this hobby, and it's mostly earned: the word covers everything from instant pixel interpolation to full generative restoration, and people argue past each other about which is "real." This node sidesteps the whole local toolbox - no ESRGAN model downloads, no tile sizes, no VRAM budget - by sending your image to WaveSpeed AI's upscaler and bringing back the result. It's the "more detail" kind of upscaling (generative, adds plausible detail), not the "more pixels" kind, and understanding that is the entire game.
What it is
A hosted image upscaler: in goes an image_url, out comes an IMAGE tensor at your chosen target_resolution - 2k, 4k, or 8k. The model is WaveSpeed's, and the one setting that defines its behavior is creativity, a float from -2 to 2. Lower values stay faithful to the source; higher values add more invented detail, at the cost of changing the image. The tooltip says it plainly: "higher values add more detail but may alter the image."
How it works
You connect the client from the WaveSpeedAI Client node, and the node POSTs {image, target_resolution, creativity, output_format} to the upscaler endpoint. The result is returned as a URL and then downloaded back to your machine as an IMAGE tensor - so like the other image nodes in this pack, generation happens remotely but the download happens on your box. Keep enable_sync_mode on (default) and it blocks until the upscaled image is in your graph.
The inputs that matter
- target_resolution - 2k, 4k, or 8k. Bigger is not automatically better: an upscaler can't invent detail from a soft source, and 8k of blur is still blur.
- creativity - the dial that matters. Start at 0. Go negative if the model is changing things you wanted kept; go positive if the output looks flat. People who get burned here almost always turned this up first.
- output_format - jpeg, png, or webp. PNG if you need a lossless round-trip.
- enable_sync_mode - default on; turn off for batch work.
Output name is upscaled_image, type IMAGE.
Install & setup
Same pack, same steps:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
or ComfyUI Manager → "razv-wavespeed" → Install, then restart. API key from wavespeed.ai in config.ini / the Client node / WAVESPEED_API_KEY. Deps: requests, pillow, numpy<2.0.0, torch.
Common issues
- Upscaled image looks smeared - you asked a generative upscaler to fix something that was already sharp; it re-rendered. Lower creativity, or if your source is already clean and just small, you wanted a plain pixel upscaler (free, instant, local) instead of this node.
- "No output received" - unreachable source URL, or the task timed out.
- 401 - key problem.
Be honest about your use case. If your image is clean and just needs to be bigger, a free local 4x ESRGAN is the right answer and this node is overkill. If the source is soft or damaged and you want detail rebuilt into it, this hosted upscaler is a perfectly good way to get it without a local SUPIR install. The creativity slider is the whole difference between those outcomes.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| image_url | STRING | URL of the image to upscale (connect from Upload Image node) | |
| target_resolution | COMBO | 4k | Target resolution for upscaling |
| creativity | FLOAT | 0.0-2–2 | Enhancement level (-2 to 2). Higher values add more detail but may alter the image |
| output_format | COMBO | jpeg | Output image format |
| enable_sync_mode | BOOLEAN | true | Wait for upscaling to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| upscaled_image | IMAGE | — |