Nodes/ComfyUI/EmptySD3LatentImage
ComfyUI Node Runs on cloud

EmptySD3LatentImage

The right blank canvas for SD3 and Flux-family models

By Comfy-Org·Created 4 years ago·Updated about 7 hours ago· 130,493
EmptySD3LatentImage
    • LATENT
    width1024
    height1024
    batch_size1

    SD3 didn't just change the prompt encoder - it changed the latent itself. Where SD 1.5 and SDXL stuff an image into a 4-channel latent, the SD3-generation (and Flux, which adopted the same idea) uses a 16-channel latent. That's a fourfold richer representation, and it's why EmptySD3LatentImage exists as its own node instead of you just reusing the classic Empty Latent Image. It makes the empty 16-channel latent tensor that SD3, SD3.5, and the Flux family sample from.

    Three inputs:

    • width / height - default 1024×1024, step 16. Note the step: SD3-family models want resolutions divisible by 16, not the /8 that SD 1.5/SDXL use. 1024 is the native sweet spot; going 512 will give you visibly worse results.
    • batch_size - default 1, up to 4096, how many latents to make.

    Output is a LATENT: zeros of shape [batch, 16, height/8, width/8], plus the downscale_ratio_spacial: 8 metadata that tells the pipeline the latent is 8× smaller per side than the final image.

    Why not just use Empty Latent Image?

    Honest answer: for pure SD3/Flux generation, you often can - ComfyUI has a fix_empty_latent_channels step in the sampler that notices the model expects 16 channels and pads a 4-channel empty latent up to match. That's why so many Flux workflows float around using the plain node. But the dedicated node skips that adapt-and-pad entirely, and it's the one the official SD3 and Flux templates ship with. If you're building an SD3/Flux graph from a template and it contains this node, keep it - swapping in the generic one works, but it's doing unnecessary work and occasionally trips up on channel-count edge cases (the model's latent handling, img2img chains, reference-latent tricks).

    Also worth knowing: SD3's VAE is 16-channel and the model family has that whole three-text-encoder prompt stack (CLIP-L, CLIP-G, T5). The empty latent is the easy part of an SD3 workflow; the conditioning is where people actually struggle.

    The gotchas

    • Resolution discipline matters more here. SD3 and Flux were trained with strong resolution bias at 1024. The step-16 constraint is hard - off-grid values round or fail, and at 512 everything falls apart. If you want a different aspect ratio, change it in multiples of 16.
    • It's not a Flux-only node. Despite the name it's the empty-latent for the whole 16-channel DiT family - SD3, SD3.5, and the Flux lineage all use it. If you see it in a Flux template, that's correct, not a leftover.
    • Channel count is the compatibility wall. 16-channel latents from this node are not interchangeable with the 4-channel latents of SD 1.5/SDXL. Feed an SDXL model a 16-channel latent and you'll get noise or flat color - that's the "which VAE/which latent" trap made visible. The channel count is part of the model's contract, and crossing it silently breaks output.

    It's a boring node - zeros in, zeros out, nothing to tune - but it's the correct start for a whole generation of models, and knowing why it's separate from Empty Latent Image is the part that'll save you from a head-scratching evening.

    Categorymodel/latent/stable diffusion

    Inputs (3)

    NameTypeDefaultDescription
    widthINT102416–16384
    heightINT102416–16384
    batch_sizeINT11–4096

    Outputs (1)

    NameTypeDescription
    LATENTLATENT