Nodes/ComfyUI_RandomPerson/Random Person: Body
ComfyUI Node

Random Person: Body

Body variety, from 'lanky' to 'dad bod', without the guesswork.

By bradsec·Created 2 months ago·Updated 2 months ago· 5
Random Person: Body
    • full_body_description
    • sex
    • body_type
    • shoulders
    • chest
    • bust
    • seed
    seed0
    randomizetrue
    sexrandom
    body_type_moderandom
    body_type_allow_list
    body_type_fixed(none)
    shoulders_modeoff
    shoulders_allow_list
    shoulders_fixed(none)
    chest_modeoff
    chest_allow_list
    chest_fixed(none)
    bust_size_modeoff
    bust_size_allow_list
    bust_size_fixed(none)
    bust_shape_modeoff
    bust_shape_allow_list
    bust_shape_fixed(none)
    extra_attributes

    Every diffusion model has a default body, and it's the same one for everyone: lean, generic, forgettable. Random Person: Body is the segment node from ComfyUI_RandomPerson that breaks that habit - body type, shoulders, chest, and bust, rolled per-seed into a clean comma-separated fragment you can drop straight into a prompt. It's the part of the pack that makes a crowd read as people rather than mannequins.

    It shares its engine with the other segment nodes (Identity, Face, Hair, Style) and the all-in-one node. Use it alone for body variety, or concatenate it with the sibling nodes for a full person - same sex on each, and the fragments compose without conflict.

    What it generates

    • body type - the headliner, 24 options: athletic, average, barrel chested, compact, curvy, dad bod, full figured, heavyset, hourglass, lanky, pear, petite, stocky, slim, and more. The description builder appends "build" to the body type, so you get "muscular build" or "hourglass build" in the final text.
    • shoulders - broad, narrow, sloping, square, soft… (defaults off)
    • chest - broad, barrel, muscular, flat, none (defaults off)
    • bust size - petite through extra large (defaults off)
    • bust shape - round, teardrop, natural, wide-set (defaults off)

    Note what's defaulted off here: only body_type rolls on random out of the box. Shoulders, chest, and the bust controls start at off, so a base description is just "muscular build" until you switch the rest on. The bust controls are also effectively female-only - the male bust list is a single none entry with an empty description, so males never get a bust phrase. The node combines size and shape into one natural descriptor ("a full, round bust") using the right a/an article, which is a small touch that keeps the output prompt-ready.

    The inputs that matter

    Standard pack pattern: _mode (random/allow_list/fixed/off), _allow_list (comma-separated subset, unknown values kept literally), and _fixed (a dropdown value for fixed mode). So body_type_allow_list: athletic, slim, average biases the pool, or body_type_fixed: hourglass locks the frame while shoulders and chest still roll. extra_attributes appends free text verbatim.

    seed plus randomize is the pack norm: randomize on (default) gives a fresh body every run and ignores the seed; off reproduces the same body from the same seed.

    Outputs and wiring

    • full_body_description - the assembled fragment, e.g. muscular build, broad shoulders, barrel chest or just hourglass build
    • sex - resolved sex, for keeping sibling nodes in sync
    • body_type, shoulders, chest, bust - each trait on its own pin for routing
    • seed - INT

    Wire full_body_description into a CLIP Text Encode's text input, or a string concat node next to the other segments. For a full cast, leave randomize on and batch - you'll get a genuinely varied lineup instead of five variations of one physique.

    Install and gotchas

    ComfyUI Manager: search ComfyUI_RandomPerson, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/bradsec/ComfyUI_RandomPerson
    

    Under Add Node → Random Person. No pip dependencies, Python 3.10+, works on old and new ComfyUI (V1 and V3 API both registered).

    The recurring gotcha: a bare body_type only gives "X build" - if you expected shoulders and chest to appear, check their modes, because they default to off. And remember the segment nodes each roll their own sex when it's set to random; composing a full person from several segments means setting the same concrete sex on each, or you'll occasionally get a male build under a female face.

    CategoryRandom Person

    Inputs (19)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000Seed for reproducibility. With randomize off, the same seed reproduces the same person.
    randomizeBOOLEANtrueOn: pick a new random person every run, ignoring the seed widget. Off: use the seed.
    sexCOMBOrandomrandom, male, or female. male/female filter the sex-specific dropdowns in the UI.
    body_type_modeCOMBOrandomHow this attribute is chosen: random (any), allow_list (subset you list), fixed (the dropdown value), off (omit it).
    body_type_allow_listSTRINGComma-separated values used when mode=allow_list. Unknown values are added as literal descriptors.
    body_type_fixedCOMBO(none)Exact value used when mode=fixed. (none) falls back to random.
    shoulders_modeCOMBOoffHow this attribute is chosen: random (any), allow_list (subset you list), fixed (the dropdown value), off (omit it).
    shoulders_allow_listSTRINGComma-separated values used when mode=allow_list. Unknown values are added as literal descriptors.
    shoulders_fixedCOMBO(none)Exact value used when mode=fixed. (none) falls back to random.
    chest_modeCOMBOoffHow this attribute is chosen: random (any), allow_list (subset you list), fixed (the dropdown value), off (omit it).
    chest_allow_listSTRINGComma-separated values used when mode=allow_list. Unknown values are added as literal descriptors.
    chest_fixedCOMBO(none)Exact value used when mode=fixed. (none) falls back to random.
    bust_size_modeCOMBOoffHow this attribute is chosen: random (any), allow_list (subset you list), fixed (the dropdown value), off (omit it).
    bust_size_allow_listSTRINGComma-separated values used when mode=allow_list. Unknown values are added as literal descriptors.
    bust_size_fixedCOMBO(none)Exact value used when mode=fixed. (none) falls back to random.
    bust_shape_modeCOMBOoffHow this attribute is chosen: random (any), allow_list (subset you list), fixed (the dropdown value), off (omit it).
    bust_shape_allow_listSTRINGComma-separated values used when mode=allow_list. Unknown values are added as literal descriptors.
    bust_shape_fixedCOMBO(none)Exact value used when mode=fixed. (none) falls back to random.
    extra_attributesSTRINGFree text appended to the description as-is, comma-separated. Pose, setting, props, extra detail, etc.

    Outputs (7)

    NameTypeDescription
    full_body_descriptionSTRING
    sexSTRING
    body_typeSTRING
    shouldersSTRING
    chestSTRING
    bustSTRING
    seedINT