ComfyUI Node

Size Canvas

The two-dimensional size slider ComfyUI's size inputs are missing

By A1rCHAN·Created 11 months ago·Updated 6 months ago· 5
Size Canvas
    • width
    • height
    presetSquire 1024x1024
    width1024
    height1024

    Every ComfyUI user hits the same little annoyance: your canvas size is two numbers - width and height - and stock ComfyUI hands you two separate number boxes for them. Change one, then the other, then back because you overshot. Size Canvas from the A1RWorkshop pack collapses that into a single 2D slider: one square you drag, and width and height move together. If you resize latents more than once a day, it's one of those "why doesn't this already exist" moments.

    It comes from a small personal pack by A1rCHAN (the repo's own description: "A comfyui custom node package used by myself"). That means no marketing bloat and also no community support net - it's a handful of stars and a couple of forks, and nothing on the Reddit corpus mentions it. You're an early adopter by definition.

    How it works

    The Python half is honest about being a helper: it takes preset, width, and height and hands back width and height as INTs. The preset is a dropdown of 14 baked-in resolutions - Squire 512/768/1024, Portrait and Landscape variants, 16:9 at 1920x1080 and 1280x720, 9:16, 4:3, 3:4 - plus Custom. When a preset is picked, its dimensions win outright and the sliders are ignored; set it to Custom and your slider values pass straight through.

    The real work happens in the frontend. The extension replaces the two one-dimensional sliders with a single 2D drag widget in a "Canvas Size" panel. Drag within the square and both dimensions update live, and the node's width/height outputs follow. Right-click the node and you'll find Canvas Setting, which opens a dialog for changing the slider's min, max, and step. The README's English is a little scrambled there ("they are not customizable, but the value range which I provide is enough") but the shipped JS clearly reads and applies your min/max/step - defaults are 128 to 4096 in steps of 128.

    The inputs and outputs that matter

    • preset - the resolution dropdown. This is the one that will trip you up: anything other than Custom overrides your slider drags.
    • width, height - INT sliders, 128–4096, step 128 by default.
    • Outputs: width (INT), height (INT). Wire these into an Empty Latent Image's width and height inputs - convert those widgets to inputs first, or drop this node's outputs straight onto the sockets.

    Installing it

    The pack isn't on the official ComfyUI Registry yet (the README says it will be "when it done"), so ComfyUI Manager may not find it. The reliable route is a manual clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/A1rCHAN/ComfyUI_A1rSpace
    

    Restart ComfyUI and the node shows up under A1R Workshop → Config Pads. No Python dependencies - requirements.txt is empty - and no model files to download. The catch is the opposite direction: this pack is written against ComfyUI's newer V3 node API (comfy_api.latest) and tuned for the Nodes 2.0 frontend, so it needs a recent ComfyUI. On an old install the import fails and the whole pack won't load.

    Common issues

    The big one is behavioral, not a crash: pick a preset, drag the slider, and wonder why nothing changed - the preset is winning. Set it to Custom before you start dragging. Also remember the default 4096 ceiling; if you want bigger canvases, open Canvas Setting and raise the max. And because this is a frontend-heavy node from a one-person WIP pack, if something renders oddly on the legacy (pre-Nodes 2.0) canvas, that's the known trade-off - the author optimizes for the new UI and only promises basic compatibility with the old one. Nobody's written up a bug report yet, because nobody's using it yet. Treat it as a nice-to-have, not the load-bearing part of your workflow.

    CategoryA1R Workshop/Config Pads

    Inputs (3)

    NameTypeDefaultDescription
    presetCOMBOSquire 1024x102415 options: Custom, Squire 512x512, Squire 768x768, Squire 1024x1024, Portrait 512x768, Portrait 768x1024, +9
    widthINT1024128–4096
    heightINT1024128–4096

    Outputs (2)

    NameTypeDescription
    widthINT
    heightINT