Nodes/ComfyUI-Ardenius/Ard Empty Latent Image
ComfyUI Node

Ard Empty Latent Image

An empty latent node with an extra dial you should almost never touch

By ArdeniusAI·Created 2 years ago·Updated 2 years ago· 5
Ard Empty Latent Image
    • LATENT
    width1024
    height1024
    batch_size1
    divx8

    Every text-to-image run in ComfyUI starts in the same place: an empty latent tensor that the sampler fills with your image. The built-in "Empty Latent Image" node makes one, and Ard Empty Latent Image is that node with one extra parameter, divx, bolted on. Everything else is identical - width, height, batch_size - and the single output is the LATENT you feed into a KSampler.

    Here's the mechanism, and it's worth understanding because it explains the whole pack's obsession with this "divx" thing. The latent isn't full-size pixels; the VAE compresses images 8× per side, so a 1024×1024 output is a 128×128 latent (4 channels deep). This node builds that tensor as torch.zeros([batch, 4, height // divx, width // divx]). With divx = 8 (the default), you get the standard, correct latent. Set divx to 16 and you'd build a latent half the size of what the model expects - and the sampler would happily run on it, producing something either shrunken or nonsense, because the model's VAE is trained for the 8× compression. So: leave divx at 8. The dial exists so this pack's "make everything divisible by a number" philosophy extends to latent creation, but for the standard case it is a footgun with no upside.

    What you actually set:

    • width / height - the output image size in pixels (16 to 8192, step 8). Note that unlike the core node's multiples, this one lets you enter any 8-stepped value and the divx logic handles the rest.
    • batch_size - how many images the latent holds at once. More than 1 means the sampler generates several images in a single run, which is memory-hungry; 1 is the sane default.

    Gotchas: this creates empty (all-zero) latents. For img2img you don't want an empty latent - you want the VAE-encoded version of your input image (via VAE Encode). An empty latent is only correct for pure text-to-image or for the pack's Control Box pattern where the box itself generates the latent for you. If you wire an empty latent into a low-denoise img2img pass expecting it to refine a picture, you'll get noise.

    Honest verdict: compared to the built-in Empty Latent Image this is a strict tie with a risk attached. The divx parameter is genuinely useful only if you're following the pack's "dimensions must be divisible by N" workflow and want the latent to respect the same rule - otherwise use the core node and save yourself the temptation. There's nothing wrong with it, it's just not an upgrade.

    Install is the standard pack route - ComfyUI Manager → search ComfyUI-Ardenius, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ArdeniusAI/ComfyUI-Ardenius
    

    then restart ComfyUI. Pack-wide notes: civitai and moviepy install with the pack (nothing to do with this node), and a stray import error at startup is the Save Image node wanting comfyui_controlnet_aux - the rest of the pack still loads.

    CategoryArdenius

    Inputs (4)

    NameTypeDefaultDescription
    widthINT102416–8192The width of the latent images in pixels.
    heightINT102416–8192The height of the latent images in pixels.
    batch_sizeINT11–4096The number of latent images in the batch.
    divxINT88–4096image dimensions divx.

    Outputs (1)

    NameTypeDescription
    LATENTLATENTThe empty latent image batch.