Nodes/ComfyUI-InstantID/📷ID ControlNet Loader
ComfyUI Node

📷ID ControlNet Loader

Loading InstantID's IdentityNet, from a local path only

By ZHO-ZHO-ZHO·Created 3 years ago·Updated 2 years ago· 1,444
📷ID ControlNet Loader
    • controlnet
    controlnet_pathenter your path

    Small node, but it's loading the single piece of InstantID that separates it from a plain identity adapter. This loads IdentityNet - the ControlNet-shaped module that keeps your generated face's structure locked to the reference photo's actual geometry, not just its general vibe. Without it, InstantID would just be another IP-Adapter FaceID.

    How it works

    IdentityNet is trained to condition on five facial landmarks (eyes, nose, mouth positions), the same way a regular ControlNet conditions on a Canny edge map or a depth map - except here the "edge map" is a sparse set of facial keypoints extracted from your reference photo. This node's only job is to load those weights from disk and hand them off; the actual conditioning happens later, inside InstantID Generation.

    The input and output that matter

    One field: controlnet_path, a plain string pointing at the folder containing IdentityNet's config.json and diffusion_pytorch_model.safetensors. There's no picker, no auto-download, no dropdown - you type the path yourself, and the default placeholder text ("enter your path") is a reminder, not a working value.

    The output is typed MODEL, named controlnet - worth flagging because that's not ComfyUI's usual CONTROLNET type. It doesn't wire into a standard ControlNet Apply node; it wires into the controlnet input on ID Base Model Loader from hub or ID Base Model Loader locally, where it gets baked directly into the assembled InstantID pipeline object rather than applied as a separate conditioning step.

    Installing it

    This node ships with the rest of the pack - search ComfyUI Manager for ComfyUI-InstantID, or manually: cd ComfyUI/custom_nodes && git clone https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID.git, cd in, pip install -r requirements.txt, restart.

    The model itself is a separate, manual download - download config.json and diffusion_pytorch_model.safetensors from InstantX/InstantID/ControlNetModel on HuggingFace, and put them somewhere sensible, like ComfyUI/custom_nodes/ComfyUI-InstantID/checkpoints/controlnet - that's the README's own suggested layout. Point controlnet_path at that folder, not at either file individually.

    Common issues

    "Enter your path" left unchanged. The most common first-run mistake - the default value looks like it might be a valid placeholder path and isn't. If nothing downstream produces a pipe, check this field first.

    Path points at the file instead of the folder. This loader expects the directory containing both config.json and the safetensors file, not a path to one specific file. Getting that one level wrong is an easy, silent mistake.

    Only config.json or only the safetensors file downloaded. Both are required - HuggingFace's file browser makes it easy to grab one and miss the other. Double-check both landed in the same folder before troubleshooting anything further downstream.

    Output type confusion. If you're coming from a different InstantID implementation (there's more than one wrapper around this same model), don't expect this controlnet output to plug into a generic ControlNet node - it's specific to this pack's own pipeline-assembly nodes.

    Category📷InstantID

    Inputs (1)

    NameTypeDefaultDescription
    controlnet_pathSTRINGenter your path

    Outputs (1)

    NameTypeDescription
    controlnetMODEL