Nodes/ComfyUI-openpose-editor/Load Openpose JSON
ComfyUI Node

Load Openpose JSON

Reload and hand-edit a pose without re-running the estimator

By huchenlei·Created 3 years ago·Updated 2 years ago· 161
Load Openpose JSON
    • POSE_KEYPOINT
    json_str

    If you've ever asked "how do I load a pose from a JSON file instead of a flat PNG skeleton," this is the node - it's the top answer people find when they go looking for exactly that. And it's a real problem worth solving: a baked skeleton image is a dead end, you can't nudge an arm or fix a bent finger without redoing the whole pose. The JSON is the editable source. Load Openpose JSON is the bridge that takes that JSON back into your graph as a proper POSE_KEYPOINT object, ready to tweak or feed downstream.

    What it's for

    The normal way to get a pose is a DWPose/OpenPose estimator node (from comfyui_controlnet_aux) chewing on a reference image. That's great when you have a photo to extract from, but it's a one-shot process - run it once, get a skeleton, done. This pack exists for the second half of the workflow: you save that pose (or one exported from elsewhere) as JSON, and later reload it here to keep working on it - nudging a hand, fixing a bent knee, building a pose from scratch by hand-editing someone else's - without ever touching a source image again.

    The pack is a ComfyUI port of the author's own sd-webui-openpose-editor extension for Automatic1111/Forge, so this isn't someone's weekend hack of an idea they didn't originate - huchenlei built the original tool too. Worth knowing: this is the same person behind sd-forge-ic-light and the ComfyUI port of layerdiffuse, and their A1111 speed-up PRs got direct sign-off from comfyanonymous (ComfyUI's own creator) in the community threads. That's a credible pedigree for a small utility node.

    How it works

    Mechanically this node is simple, almost deceptively so: one multiline text widget, json_str, where you paste a pose JSON string, and it parses that into ComfyUI's POSE_KEYPOINT type - the structured body/face/hand keypoint format that OpenPose-family nodes speak. There's no model here, no inference, it's just a typed deserializer. All the actual editing muscle lives in the JS side the pack installs into ComfyUI's UI: once you've got the node in your graph, you open the visual pose editor (a modal overlay), drag joints around like the classic openpose editor tools, and hit "Send pose to ControlNet" to write your edits back and close the modal. The JSON widget is what makes that state persist and reload - save the workflow, and your edited pose comes back with it instead of evaporating.

    The one input, the one output

    • json_str (required, multiline string) - the pose data. In practice you're not typing this by hand; you're pasting output saved from an estimator node earlier in a workflow, or JSON exported from an editor session.
    • POSE_KEYPOINT (output) - the structured pose. Wire it into whatever else in your graph consumes that type - other pose tooling in comfyui_controlnet_aux, or a save/preview node if you just want to persist it. One thing to know up front: if you plug this straight into a generic text/preview node expecting readable output, you'll just see an opaque object, not pretty-printed JSON - that's normal, POSE_KEYPOINT is a structured type for nodes to consume, not a debug view.

    Installing it

    ComfyUI Manager: search "ComfyUI-openpose-editor" and install. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/huchenlei/ComfyUI-openpose-editor
    

    Restart ComfyUI. The README lists Fannovel16/comfyui_controlnet_aux as a hard requirement - install that too if you haven't (Manager search "ControlNet Auxiliary Preprocessors," or clone + pip install -r requirements.txt). You need it anyway: that's the pack with the DWPose/OpenPose estimator nodes that actually produce your first POSE_KEYPOINT JSON from an image. No model weights ship with this pack itself - it's pure Python + JS glue, nothing to download.

    Where people get tripped up

    Mismatched requirements is the big one - install this pack without comfyui_controlnet_aux and you've got half a workflow: nothing upstream can hand you a POSE_KEYPOINT to save in the first place. Get that installed first.

    It's also worth knowing this corner of the ecosystem has moved on a little: a newer pack, ComfyUI OpenPose Studio, showed up in 2026 explicitly pitched as a modern rebuild of "the old OpenPose Editor" - while staying compatible with this node's JSON format. This one is still the standard answer and still works, but if you find the editor UI feeling dated or fiddly, that's the alternative worth knowing about; your saved JSON isn't locked to either tool.

    Categoryopenpose

    Inputs (1)

    NameTypeDefaultDescription
    json_strSTRING

    Outputs (1)

    NameTypeDescription
    POSE_KEYPOINTPOSE_KEYPOINT