Nodes/AusBoss/Resolution Master πŸ†Ž
ComfyUI Node

Resolution Master πŸ†Ž

Stop retyping 832Γ—1216 and let the canvas pick its own shape

By ausbossΒ·Created 2 months agoΒ·Updated about 22 hours agoΒ· 2
Resolution Master πŸ†Ž
    • width
    • height
    • latent
    β—„width1024β–Ί
    β—„height1024β–Ί
    β—„latent16chβ–Ί
    β—„batch_size1β–Ί

    Every workflow you've ever downloaded starts the same way: an Empty Latent node with two numbers in it, and a fight about whether 832Γ—1216 is the SDXL ratio you wanted or the one that gives the horse two heads. Resolution Master πŸ†Ž collapses that into one card - you pick a shape by eye, and it hands you a width, a height, and an empty latent of that exact size.

    It's plumbing, not pixels - the same category of tool as rgthree's seed node or a Primitive. Which is exactly why it survives model churn: a canvas picker doesn't care whether you're sampling Flux, SDXL, or whatever shipped last month.

    How it works

    The node face is a live stage. Drag a side and one dimension changes; drag the corner and both scale. There's an orientation toggle on the left that stays independent of the ratio you pick - including while square is selected, which is the detail that makes it usable, because half the time you're on a square ratio and still thinking "portrait-ish next". Ratio chips give you the shape, and a size ladder offers on-grid rungs up for the current ratio. Gesture snapping keeps the readout on VAE-friendly multiples as you drag.

    Two behaviours are worth internalising, because they're both deliberate:

    • Typed width and height are never re-snapped. If you type 1000, you get 1000, even though 1000 isn't a multiple of 8.
    • The latent output still rounds down to complete downsample cells, matching what the core EmptyLatentImage nodes do. So there's a legal, useful gap between "the integer I asked for" and "the tensor the model sees."

    The spec calls the latch down to three families, and the source is blunt that these are architecture facts rather than model-card marketing:

    | latent | Channels / downsample | Built for | |---|---|---| | 16ch (default) | 16ch, 8Γ— | SD3, Flux 1, Krea 2, Qwen Image, Z-Image | | 4ch | 4ch, 8Γ— | SD 1.5, SDXL | | 128ch | 128ch, 16Γ— | Flux 2 (Klein) |

    The inputs that matter

    You'll touch two of them. width and height are the whole point - scrub, drag, or type, 64 to 8192, step 8. latent and batch_size live behind the panel's gear and you'll set them once per workflow.

    On the output side: width and height as INTs, and latent as a ready-to-sample LATENT. Wire latent straight into your sampler's latent input and delete the Empty Latent node. Wire the two integers into whatever needs to agree with the canvas - a Save Image naming chip, a Math Expression for tile counts, or a video model's own latent builder. That last one is the one people get wrong: this is an image latent, so for video you take the width and height and construct the model's own audio/video latent yourself.

    Why bother with the wire instead of typing the same 1024 in five places? That's the oldest lesson in the plumbing layer - one source, many consumers. Change the canvas, everything downstream follows. Type it in five widgets and the first time you forget one you get a silent mismatch that looks like a sampler bug.

    Installing it

    ComfyUI Manager β†’ Install Custom Nodes β†’ search AusBoss, or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ausboss/ComfyUI-AusBoss.git
    

    Restart ComfyUI, and hard-refresh the browser with Ctrl+Shift+R after any update - frontend changes in this pack don't show up on a soft refresh. The pack declares ComfyUI 0.27.1 as its floor. There are no model downloads, no pip extras, and no network calls for this one.

    Where people get burned

    Picking the wrong latent family is the loud failure. A 4ch latent handed to a 16-channel model errors at the sampler, and it looks like a broken model rather than a wrong dropdown. The gear is one click away and easy to never open.

    Off-grid sizes are quieter. Typed dimensions are preserved but the latent rounds down, so a 1000Γ—1000 canvas samples at 992Γ—992 - and your saved file and your masks are working from a number the model never rendered. Stay on multiples of 8 if the latent goes downstream, 64 if the model is picky. And no canvas picker saves you from generating far above a model's native resolution: that failure mode is duplicated anatomy and tiling.

    Last thing: the panel is the face, but every execution input is an ordinary widget underneath. That means API runs and headless queues work off the saved values, no editor required. Your orientation and snap preferences ride along in the workflow JSON.

    CategoryπŸ†Ž AusBoss/Utility

    Inputs (4)

    NameTypeDefaultDescription
    widthINT102464–8192Output width in pixels. Set from the panel; typed values are never re-snapped.
    heightINT102464–8192Output height in pixels. Set from the panel; typed values are never re-snapped.
    latentoptCOMBO16chLatent family for the LATENT output. 16ch: SD3, Flux 1, Krea 2, Qwen Image, Z-Image. 4ch: SD 1.5 and SDXL. 128ch: Flux 2 (Klein). Set from the panel's gear.
    batch_sizeoptINT11–64How many latents to make. Set from the panel's gear.

    Outputs (3)

    NameTypeDescription
    widthINTThe picked width in pixels.
    heightINTThe picked height in pixels.
    latentLATENTAn empty latent of this size in the chosen family β€” wire it straight into the sampler in place of an Empty*LatentImage node.