Nodes/ComfyUI-GU_Nodepack/GU Resolution Select
ComfyUI Node

GU Resolution Select

A resolution picker that knows about video, Midjourney, and portrait mode

By alexguryev·Created 4 months ago·Updated 23 days ago· 2
GU Resolution Select
    • W
    • H
    width1024
    height1024
    portraitfalse

    GU Resolution Select is a small QoL node that gives you a long list of preset resolutions - image and video sizes, including Midjourney's - and emits clean width/height integers. You pick a preset or type your own, flip a portrait toggle if you want it tall instead of wide, and the node outputs W and H you can wire into Empty Latent Image or your video model's resolution inputs.

    Nothing about it is fancy, which is exactly why it's nice to have. The unglamorous problem it solves: remembering that 1216x704 is the LTX sweet spot, or what the Wan-friendly sizes are, or that Midjourney's square is 1024x1024 - every time you start a workflow.

    What it does

    • width / height - the resolution, from presets or typed manually (256 to 3840, stepping by 64).
    • portrait - the one toggle that matters. The preset list only contains landscape formats, so this swaps width and height on output. The README's warning is worth quoting: the swap is applied to manual entries too, with no sanity check - so set it and you get height x width, whether that makes sense or not.

    Outputs: W and H, both INTs.

    Mechanically it's a two-line function - return height, width if portrait, else width, height. All the interesting parts live in the frontend: the preset list is implemented in the pack's JavaScript (jsnodes.js), which is why the node's Python side is so boring.

    Why you'd reach for it

    It's a formatting-convenience node, and it earns its place two ways. First, it centralizes "which resolutions do the models I use actually want" in one dropdown - the GU pack is built around video as much as images, so the preset list leans that way (LTX/WAN-style sizes alongside SDXL and Midjourney classics). Second, because it outputs two separate integers rather than a bundled latent or string, it slots into any node that takes W and H inputs without conversion. You can even wire the same node to a canvas size, a video frame count, and a label node at once - one decision, many consumers. That's the "value node" pattern from the KB's plumbing essay: one source, many wires, zero drift.

    Install

    ComfyUI Manager → search "GU Nodepack" → install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/alexguryev/ComfyUI-GU_Nodepack
    cd ComfyUI-GU_Nodepack
    pip install -r requirements.txt
    

    No model downloads. Deps: psutil, requests, gu-funclib>=1.9.0. Windows-tested, single-user design.

    The traps

    The portrait toggle is the whole gotcha. Because it swaps with no validation, the order of operations is: pick your preset (or type values), then set portrait - setting it first and then changing the preset will swap whatever's there and you'll wonder why you're generating 512x1024 when you picked a landscape size. And the 64-step constraint means oddball sizes need to fit the grid or you'll be typing values that snap. It's a picker, not a validator - for model-specific resolution rules (like LTX/WAN frame-count requirements), pair it with GU Set Frames Video and check the model's own docs.

    CategoryGU_Nodepack

    Inputs (3)

    NameTypeDefaultDescription
    widthINT1024256–3840
    heightINT1024256–3840
    portraitBOOLEANfalseSwap width and height values = set orientation to 'Portrait' (default is 'Landscape')

    Outputs (2)

    NameTypeDescription
    WINT
    HINT