Nodes/OpenPose Editor/OpenPose Editor
ComfyUI Node

OpenPose Editor

Pose Control Without a Reference Photo

By space-nuko·Created 3 years ago·Updated 2 years ago· 253
OpenPose Editor
    • IMAGE
    image

    OpenPose Editor is the rare ControlNet tool that works backwards, and that's exactly what makes it useful. Normally you feed ControlNet a reference photo and let a preprocessor like DWPose rip the pose skeleton out of it. This node skips the photo entirely: it hands you a stick figure on a canvas, you grab its joints and pose it by hand, and it hands you the skeleton map ControlNet wants. No reference image, no model file, no API - just you dragging little colored dots around.

    It's a port of the old fkunn1326/openpose-editor extension from A1111, rebuilt as a ComfyUI node with the whole editor living in the browser. That lineage matters: this is the "old OpenPose Editor" people still mean when they compare against newer tools, and its JSON format has become the informal standard - the 2026 successor OpenPose Studio advertises drop-in compatibility with it.

    What it's for

    Any workflow where you want a specific pose and don't have a photo of someone doing it. Hands hovering uselessly at the subject's sides? Pull them up, out, crossed, whatever. Want two characters in a conversation layout, or a specific action for a LoRA-training dataset? Draw it. It feeds the OpenPose conditioning type - the "body/hand/face pose skeleton" row in the ControlNet table - and it's most at home on SD 1.5-lineage bases (including Illustrious and Pony) where openpose ControlNets are mature. Worth knowing: pose ControlNets on the 2026 bases (Flux, Qwen, Z-Image) are patchier, and pose-from-reference has partly moved to edit models like AnyPose. On SD-family checkpoints this is still the direct route.

    How it works

    Click "open editor" on the node and a Fabric.js canvas panel opens - the library ships inside the pack, so nothing to download. Every person on the canvas is a group of the 18 standard COCO keypoints: nose, eyes, ears, shoulders, elbows, wrists, hips, knees, ankles, connected by colored bones. Drag a joint and the bones follow; drag the whole group to reposition a person; scale and rotate work too. Add Pose stacks more people, Remove deletes the selected one, Reset wipes the canvas. Ctrl+Z / Ctrl+Y undo and redo, and the width/height fields (64–4096, step 64) set the canvas resolution.

    Each edit does two things. It serializes the pose to JSON - width, height, keypoints - and stores it on the node as the savedPose property, so the pose travels inside your workflow file and survives reloads. Then it renders the skeleton onto a black background and uploads that PNG to ComfyUI's input folder as ComfyUI_OpenPose_<node_id>.png (overwriting each edit). The node then behaves exactly like a LoadImage pointing at that file.

    Inputs and outputs

    One input, one output, and you barely touch either. The required image field is a string holding the filename of the generated PNG - the editor writes it for you; it's disabled on the widget. The output is IMAGE, the skeleton map itself. Wire it into a DWPose or OpenPose preprocessor if you want it normalized, or straight into a ControlNet Apply node when your checkpoint takes pose maps directly. From there, the usual ControlNet knobs apply: keep strength around 0.8–1.0 on SD 1.5, and consider ending control early so the pose locks composition without freezing detail.

    Installing it

    The easy way is ComfyUI Manager: search "OpenPose Editor" and hit install. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/space-nuko/ComfyUI-OpenPose-Editor
    

    Restart ComfyUI. No pip requirements, no model downloads - the editor is pure frontend JavaScript that gets copied into ComfyUI's web/extensions folder on startup. That's also the one install gotcha: if the "open editor" button doesn't show up, hard-refresh the browser (or fully restart the backend) so the extension actually loads.

    Where people get burned

    The input folder clutter is the classic complaint - every pose you draw leaves a ComfyUI_OpenPose_*.png in ComfyUI/input, and they persist after you delete the node. Harmless, but sweep them out eventually. The bigger trap is sharing: the pose lives in the workflow JSON via savedPose, so anyone you hand the workflow to needs the pack installed or the node will fail. And remember the output is a conditioning image, not art - if the pose renders but your character ignores it, you've wired the skeleton somewhere the checkpoint isn't actually reading. Lower the strength before you blame the editor.

    Categoryimage

    Inputs (1)

    NameTypeDefaultDescription
    imageSTRING

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE