Magic Hour: AI Image Upscaler
Magic Hour: AI Image Upscaler
- image
- image
- image_paths
- credits_charged
Local upscaling is not a gap in this ecosystem - it's one of its deepest areas. ESRGAN-family models, 4x-UltraSharp, the tile-based workflows, SUPIR for when you want it to invent plausible detail, SeedVR2 for video. The KB's upscaling doc runs to hundreds of lines on this and the community has strong opinions about all of it.
So the AI Image Upscaler has to earn its place, and it does it with one thing: mode. Four values - balanced, creative, preserve, pro - where creative is the Magnific-style behaviour people have wanted since Magnific started charging for it. SUPIR was the local answer to that and it landed as a 5GB SDXL-derived monster that wants real VRAM and a lot of patience. Here it's a dropdown.
That's the honest pitch. Not "upscaling" - you can do that free, today, well. "Upscaling that adds detail instead of just smoothing", without a second GPU.
How it works
Your image is written to a temp PNG and uploaded, along with scale_factor - 2x or 4x, stripped to a number before it's sent - and a style blob containing mode, plus prompt if you typed one. The remote model re-renders at the larger size, and the result lands in ComfyUI/output/magic_hour/.
prompt is only sent when it's non-empty, and it's the field people ignore. In creative mode especially, a prompt is doing real work: it tells the model what the detail it's inventing should look like. "Film grain, fine fabric texture, shallow depth of field" gets you a different, better result than leaving it blank. In preserve mode a prompt is mostly noise and you should leave it empty.
The four modes, as you'll actually experience them: preserve refuses to invent - it's the one for archival material, product shots, or anything where a wrong detail is a real problem. balanced is the default and the sane middle. creative adds detail aggressively, which means it also adds details that weren't there - great for illustration and stylised work, dangerous for faces and text. pro is the top tier and the one that costs.
Inputs and outputs
| field | what it is |
| --- | --- |
| image (required) | the source. Frame zero only, as with every image input in this pack |
| scale_factor (required) | 2x (default) or 4x |
| mode (required) | balanced, creative, preserve, pro |
| prompt (optional) | detail guidance; only sent when non-empty, most useful with creative |
Outputs: image (IMAGE), image_paths (STRING, saved path(s)), credits_charged (INT).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/magichourhq/comfyui-magic-hour
pip install -r comfyui-magic-hour/requirements.txt
Restart, look under Magic Hour. Dependency: magic-hour>=0.87.1 - no ESRGAN models to download, no 5GB SUPIR checkpoint, no tile workflow. ComfyUI Manager users can search "Magic Hour".
export MAGIC_HOUR_API_KEY=your_key_here
before launching ComfyUI, or a bare key in comfyui-magic-hour/api_key.txt. Keys aren't widgets because widget values are serialised into the workflow JSON and would ship with your graph.
When to pay and when not to
Don't pay for a clean 2x of a good render. A local 4x-UltraSharp pass does that in seconds, for free, and won't hallucinate an extra earring. If your source is already sharp, an AI-upscale model is mostly a way to spend credits.
Do pay when the source is soft, small, compressed, or AI-generated and you want detail added rather than edges sharpened. creative at 4x on a 512px generation is where this node looks like magic, and where the local alternatives either can't compete (plain ESRGAN) or demand hardware you don't have (SUPIR).
Try preserve first on anything with text or faces. You'll know within one image whether creative is too much.
Where it goes wrong
Creative mode inventing faces. The known failure of every Magnific-style upscaler: at high creativity, eyes and teeth get reinterpreted. On portraits, that means a stranger. Check the face at 100%.
Text turning to mush or nonsense. Same mechanism, different victim. Product labels, signage, watermarks - all of it is detail the model will happily re-imagine.
4x is not four times the cost. It's often more, and the node's credits_charged output is how you find out for your account. Run 2x first.
Batch in, one out. The pack takes frame zero of any incoming batch.
The web app's reputation isn't the API's. Magic Hour's consumer site is a thrifty free tier with watermarks; this is the metered developer surface, per call, no watermark. Judge it on credits_charged, not on what a free web account gives you.
Bottom line: keep a local upscaler as your default and reach for this one when you want detail invented and can't run SUPIR. That's a narrower use case than the node's name suggests, and it's the one that justifies the credits.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| scale_factor | COMBO | 2x | 2 options: 2x, 4x |
| mode | COMBO | balanced | 4 options: balanced, creative, preserve, pro |
| promptopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_paths | STRING | — |
| credits_charged | INT | — |