Nodes/Artfat Resolution/Artfat Resolution
ComfyUI Node

Artfat Resolution

Artfat Resolution computes the whole chain

By artfat-creator·Created 29 days ago·Updated 28 days ago· 1
Artfat Resolution
    • width
    • height
    • mid_width
    • mid_height
    • final_width
    • final_height
    • latent
    • info
    size2:3 portrait · 512×768
    base512
    ratio_w2
    ratio_h3
    manual_w1200
    manual_h400
    multiple32
    upscale_11.00
    upscale_21.00
    batch_size1
    latent_typeSD3 / Flux / Krea 2 (16ch)

    The most annoying part of a low-base + upscale workflow isn't the upscaling - it's the bookkeeping. Generate small at a clean resolution, upscale to a mid size, upscale again to a final size, and somewhere along the way you're typing the same numbers into three different nodes and hoping they agree. Artfat Resolution is a tiny node that does that math for you: you pick one size and two upscale factors, and it hands you the entire chain as outputs - base, mid, final - plus a ready empty latent and a text readout you can wire straight into your filename.

    It's built for the Krea 2 / Selfism "low-base + hi-res fix" crowd, where you deliberately generate short (512–640 on the short side) and then grow it in two passes. That pattern exists for a reason: models fall apart above their native resolution - duplicate anatomy, tiling, that soft smeary look - and the fix is to generate small and upscale with a low-denoise second pass. This node makes the "which size is my second pass actually going to be" question visible before you spend the VRAM on a guess.

    How it works

    The size dropdown is the whole interface. Three ways in:

    • Preset size - eight ready options (2:3 portrait · 512×768, 1:1 square · 640×640, 16:9 wide · 832×480, etc.). Beginner-friendly and usually enough.
    • Custom ratio - set base (the short side) plus ratio_w/ratio_h. Want a 3:1 banner at a 512 short side? ratio_w=3, ratio_h=1.
    • Manual W×H - type exact manual_w/manual_h. This is the one mode where nothing gets snapped; the README is emphatic that exact stays exact.

    Then upscale_1 and upscale_2 are decimal multipliers - 1.0 means off, a true passthrough that doesn't even snap. Everything passes through a multiple snap (8/16/32/64), so the numbers that come out are actually usable downstream. There's a latent_type dropdown (16ch for SD3/Flux/Krea 2, 4ch for SD1.5/SDXL) and a batch_size for the latent.

    The outputs are the story: width, height, mid_width, mid_height, final_width, final_height (all INT), an info string like 512x768 -> 960x1472 -> 1920x2944, and a latent output that's a ready empty LATENT at base size - so it replaces your EmptyLatentImage entirely. The node even draws the base → mid → final chain live on its face as you drag the widgets, which is a small touch that saves real time when you're tuning a banner ratio.

    The inputs that actually matter

    For 90% of use: size and upscale_1/upscale_2. Wire the width/height INTs into your KSampler's empty latent (or just use the built-in latent output - it's already the right size and channel count). Wire info into a text node for the filename. The thing to actually think about is latent_type: get it wrong and you're feeding a 16-channel latent into a 4-channel model, which errors out the instant you try to sample. Flux, SD3, Qwen and Krea 2 are all 16ch; classic SD1.5/SDXL are 4ch.

    Install

    Two ways, both painless - there are no model downloads and no extra Python dependencies (it only uses torch, which ComfyUI already ships):

    ComfyUI-Manager: Custom Nodes Manager → Install via Git URL → paste https://github.com/artfat-creator/ComfyUI-Artfat-Resolution.

    Manual clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/artfat-creator/ComfyUI-Artfat-Resolution.git
    

    Then restart ComfyUI. A browser refresh isn't enough - the node registers on server start. It shows up under the artfat category.

    Gotchas

    • Manual mode won't save you from the VAE. Exact dimensions that aren't a multiple of 8 can choke the VAE decode (latents are 8x smaller per side). If you're going fully manual, keep manual_w/manual_h sane multiples - the node won't do it for you.
    • multiple of 8 is tempting but risky for Krea 2 / Qwen-based models; the author's own tooltip flags 16/32 as the safe ones.
    • You can't downscale with this thing - upscale_1/upscale_2 floor at 1.0. It's a resolution planner, not a resizer.
    • It's a tiny node from a small author, so don't expect a big support community. For this one you probably won't need it - the whole thing is one dropdown and two multipliers.
    Categoryartfat

    Inputs (11)

    NameTypeDefaultDescription
    sizeCOMBO2:3 portrait · 512×768Ready size, or 'Custom ratio' (uses ratio_w/h + base), or 'Manual W×H' (exact).
    baseINT512128–8192Short side of the BASE gen. Used ONLY in 'Custom ratio' mode.
    ratio_wINT21–100Aspect width — 'Custom ratio' mode only (e.g. 3 for a 3:1 banner).
    ratio_hINT31–100Aspect height — 'Custom ratio' mode only (e.g. 1 for a 3:1 banner).
    manual_wINT120064–16384Exact width — 'Manual W×H' mode only. NOT snapped (kept exact).
    manual_hINT40064–16384Exact height — 'Manual W×H' mode only. NOT snapped (kept exact).
    multipleCOMBO32Snap base+upscaled sides to a multiple. 16/32 safe for Krea 2 / Qwen. Ignored for the exact side in Manual mode.
    upscale_1FLOAT1.001–81st upscale stage. 1.0 = off (passthrough, exact).
    upscale_2FLOAT1.001–82nd upscale stage (applied on top of stage 1). 1.0 = off.
    batch_sizeINT11–64Batch size for the LATENT output.
    latent_typeCOMBOSD3 / Flux / Krea 2 (16ch)Channels for the empty LATENT. Krea 2 / Flux / SD3 = 16ch; classic SD = 4ch.

    Outputs (8)

    NameTypeDescription
    widthINT
    heightINT
    mid_widthINT
    mid_heightINT
    final_widthINT
    final_heightINT
    latentLATENT
    infoSTRING