Skip to main content
← Journal·AI InfluencersOct 7, 2026·12 min read

ComfyUI Consistent Character Workflow: Copy-and-Adapt Templates (2026)

ComfyUI consistent character workflow templates: IP-Adapter, PuLID and a face detailer chain, plus a no-LoRA FLUX.2 klein route, with where each one fails.

A

Founder of IImagined.ai

Quick answer

A ComfyUI consistent character workflow injects identity from a reference (IP-Adapter or PuLID on SDXL, or native reference input on FLUX.2 klein), then repairs small faces with a face detailer pass that reuses the same identity source. Each template below lists its nodes, the settings to start from and where it breaks.

A ComfyUI consistent character workflow has two halves: an identity source that conditions every generation (IP-Adapter, PuLID, a LoRA, or FLUX.2 klein's native reference input) and a face detailer pass that re-renders small faces with that same identity. Below are three copy-and-adapt node templates for those jobs plus a no-custom-node FLUX.2 route, each with the settings to start from and the place it fails.

Nodes, settings and licenses checked October 2026 against the ComfyUI_IPAdapter_plus, PuLID_ComfyUI, PuLID and Impact Pack repositories, Impact Pack's detailer reference, the IP-Adapter-FaceID model card, InsightFace, and ComfyUI's FLUX.2 klein guide and Flux2ImageNode docs.

This is the ComfyUI build sheet. If you are still deciding between ComfyUI, Midjourney, Nano Banana or a hosted model, read our consistent character AI guide first; it compares every method. Come back here when you have picked ComfyUI and need the graph.

What you will have at the end

One approved hero image, a saved identity graph you reuse for every post, a detailer pass that holds the face in wide shots, and a set of approved angle views that doubles as a character sheet and a LoRA dataset.

Pre-flight
  • ComfyUI updated to a current release; IPAdapter plus says it always needs the latest ComfyUI
  • ComfyUI-Manager installed for custom nodes
  • A base model chosen: SDXL for templates A and B, FLUX.2 klein for the native route
  • A sharp, front-facing hero image of a fictional character, face fully visible
  • A fixed identity block for the prompt: age range, hair, eyes, one or two signature details
  • License checked for commercial work: InsightFace-based face models are research only

Which template fits your build

TemplateBase modelNeedsLicense noteWhere it fails
A. IP-AdapterSD1.5, SDXLIPAdapter plus nodes, CLIP vision encoderApache 2.0 (plain models); FaceID: research onlyMaintenance-only repo; FaceID needs InsightFace plus a paired LoRA
B. PuLIDSDXL (cubiq); FLUX.1 dev (community nodes)PuLID model, EVA CLIP, InsightFace antelopev2InsightFace models research only; FLUX.1 dev licenseSensitive to reference quality; lower fidelity on some male faces (FLUX)
C. Face detailer chainAnyImpact Pack plus Impact Subpack detectorFollows your base modelSkips large faces unless forced; generic face if run without identity
Native FLUX.2 klein editFLUX.2 klein 4B or 9BNone beyond core ComfyUI4B Apache 2.0; 9B non-commercialUp to 4 references; quality depends on the reference set
The shape every template shares
  1. 01
    Hero image

    Sharp, front-facing, approved once

  2. 02
    Identity source

    IP-Adapter, PuLID, LoRA or native reference

  3. 03
    Base generation

    Identity block plus scene prompt

  4. 04
    Face detailer

    Same identity source, moderate denoise

  5. 05
    Review

    Compare against the hero at full size

Template A: IP-Adapter face reference (SDXL)

IP-Adapter conditions the generation on an image; the IPAdapter plus README calls it a one-image LoRA. For a face, the Plus Face model on a cropped face works without InsightFace. The chain:

Load Checkpoint (SDXL) -> IPAdapter Unified Loader (preset: PLUS FACE (portraits)) -> IPAdapter Advanced  [image: hero face crop | weight: 0.8 | weight_type: adjust for prompt adherence] -> KSampler  [positive: identity block + scene | fixed seed while testing] -> VAE Decode -> (Template C detailer) -> Save Image
  • Models. The unified loader only finds files named exactly as the README lists them: the ViT-H CLIP vision encoder in models/clip_vision and ip-adapter-plus-face_sdxl_vit-h.safetensors in models/ipadapter.
  • Starting settings. The README suggests lowering weight to at least 0.8 and raising steps, and changing the weight type in IPAdapter Advanced for more prompt adherence.
  • Where it fails. The repository has been maintenance-only since April 14, 2025. FaceID variants need InsightFace installed plus a specific paired LoRA, and the FaceID model card says those models are for research, not commercial use, and do not achieve perfect ID consistency.

Template B: PuLID identity injection

PuLID injects an identity embedding taken from the hero face. PuLID_ComfyUI is the native SDXL implementation; PuLID-FLUX runs through community node packs listed by the PuLID authors.

Load Checkpoint (SDXL) -> Load PuLID Model (ip-adapter_pulid_sdxl_fp16 in models/pulid) + Load InsightFace (PuLID): antelopev2  + Load Eva Clip (PuLID): EVA02-CLIP-L-14-336 -> Apply PuLID  [image: hero | method: fidelity | weight: 1.0 default] -> KSampler  [try sgm_uniform scheduler] -> VAE Decode -> (Template C) -> Save Image
  • Settings that matter. The method parameter: fidelity sits closer to the reference, style gives the checkpoint more freedom. On the Advanced node, lower fidelity values give higher resemblance.
  • On FLUX. The authors' PuLID-FLUX notes suggest starting ID insertion at timestep 4 for realistic images (lower it if similarity is weak) and 0 to 1 for stylised ones.
  • Where it fails. The README says reference quality is very important (use a clean, sharp picture) and that quality degraded on checkpoints other than the one it was built around. The FLUX version notes lower ID fidelity for some male inputs and falls under the FLUX.1 dev license. The cubiq repo is maintenance-only since April 14, 2025, and the InsightFace models it needs are research-only.

Template C: the face detailer chain

Identity methods hold close-ups well; in full-body shots the face covers too few pixels and drifts. A detailer detects the face, crops it, re-renders it larger and pastes it back. Impact Pack's FaceDetailer is the standard node; its detector provider for YOLO models lives in the separate Impact Subpack since version 8.0.

Base image (from Template A, B, a LoRA or the native route) -> UltralyticsDetectorProvider (face bbox model, Impact Subpack) -> FaceDetailer  [same model + LoRA/IP-Adapter/PuLID | identity block prompt | guide_size: 512 default | denoise: moderate | noise_mask: on] -> Save Image
  • guide_size. Per the detailer reference, faces smaller than guide_size are enlarged to it; faces already larger are skipped as not needing detail, unless force_inpaint is on. Raise guide_size for more face detail.
  • noise_mask. Generally recommended on, per the same reference.
  • Where it fails. Run it without your identity source and it draws a generic face at higher resolution, which reads as drift. Impact Pack has also changed detailer node structure between versions, so an old saved workflow can error after an update.

ComfyUI consistent character without LoRA: the native FLUX.2 route

In 2026 the simplest no-LoRA graph needs no custom nodes. ComfyUI's FLUX.2 klein guide ships image-edit workflows in the built-in Workflow Templates, with multi-reference composition and iterative edits listed as supported. It reports the 4B base model at about 9.2GB of VRAM, and Black Forest Labs licenses klein 4B under Apache 2.0.

  1. Open Workflow Templates and load the FLUX.2 [klein] 4B Image Edit Base workflow.
  2. Put the hero image in the first LoadImage node.
  3. Prompt by position: "the woman in image 1, [identity block], now sits at a cafe window, overcast light".
  4. Approve outputs and add the best angle views as extra references for later scenes.
  5. Finish wide shots with Template C.

If you would rather not run the model locally, the built-in Flux2ImageNode sends the job to Black Forest Labs' FLUX.2 [pro] or [max] API with up to eight reference images, resized so the total does not exceed 2048 x 2048 pixels. Our Flux consistent character guide covers prompt word order and the edit chain for poses in detail.

ComfyUI character sheet workflow

A character sheet is the set of approved angles that every later image is checked against. Build it from the hero, one angle at a time, in whichever template you chose:

Character sheet in ComfyUI
  1. 1
    Lock the hero

    Approve one front-facing image; never regenerate it later.

  2. 2
    One angle per run

    Three-quarter left and right, profile, back, full body; same identity prompt.

  3. 3
    Fix the seed per angle

    So reruns change only the setting you are testing.

  4. 4
    Detailer on full-body views

    Template C with the same identity source.

  5. 5
    Review against the hero

    Reject any view where eyes, nose, jaw or hairline moved.

  6. 6
    Save as a set

    These views become references and LoRA training images.

Prompting for all angles in one grid image is quicker, but faces in small panels drift for the same crop-scale reason the detailer exists. Generating each view separately at full size costs more runs and gives a sheet you can trust. For exact poses per angle, add an OpenPose ControlNet; our ControlNet guide covers the setup.

Which template to start with

  • Commercial persona, no custom nodes wanted: the native FLUX.2 klein 4B route plus Template C. Apache 2.0 model, built-in template, nothing to keep patched.
  • Existing SDXL setup and checkpoints you like: Template A with the plain Plus Face model, then Template C. Avoid the FaceID variants if the work is commercial.
  • Research or personal projects that need the strongest identity from one photo: Template B, within the InsightFace and FLUX.1 dev terms.
  • Already have a character LoRA: skip A and B, load the LoRA in the base pass and in Template C.

Save the graph as your template

Once a graph produces faces you approve, freeze it. Save the workflow file with a name that records the base model and identity method, keep the hero image and reference views in a fixed input folder, and change only the scene prompt and seed from post to post. Group the identity nodes so nobody edits them by accident. When you change anything inside the identity group (weight, model, detailer settings), save it as a new version and re-run your character sheet angles through it before posting with it. That habit turns a one-off graph into a template a whole team can run, and it makes drift traceable to a specific change.

Troubleshooting the graph

Diagnose by where the drift shows
Some images
Identity source too weak or hero image poor: fix the hero, then raise weight
Detailer missing or running without identity: add Template C with the same source
Every image
Prompt competing with the reference: strip face words beyond the identity block
guide_size skipping some faces, or a detector missing small faces
Close-ups drift
Only wide shots drift
  • Red nodes after an update. Custom node packs lag ComfyUI releases. Update through ComfyUI-Manager, and for production keep a pinned copy of the ComfyUI version your graph was built on. Our ComfyUI workflow library guide covers safe sources and setup for shared workflows.
  • Pasted-on or oversaturated face. Weight too high; step it down in 0.1 increments.
  • The face drifts in a way none of this explains. Work through the seven causes in our AI face consistency guide, one variable at a time.

When a template stops being enough

Reference templates are the fastest start and the right tool for a new persona. Once you post daily, a LoRA trained on your approved sheet and best outputs holds the face across more angles and lighting than a single reference can, and Template C still runs on top of it. Our character LoRA dataset guide shows how to turn the sheet into training data. The AI Influencers program covers the full ComfyUI persona stack, from hero image to trained LoRA to video.

ComfyUI consistent character: FAQ

What is the best ComfyUI consistent character workflow?

It depends on the base model and whether the work is commercial. For SDXL, an IP-Adapter or PuLID graph followed by a face detailer pass is the classic stack. For FLUX.2, ComfyUI's built-in klein image-edit template takes reference images with no custom nodes. For strict likeness at volume, train a LoRA and keep the detailer pass on top.

How do I keep a character consistent in ComfyUI without a LoRA?

Use a reference-image method. IP-Adapter Plus Face conditions on a face crop of your hero image, PuLID injects an identity embedding, and FLUX.2 klein's image-edit workflow reads reference images natively. Keep one identity block in the prompt, fix the seed while testing, and add a face detailer pass for wide shots where the face is small.

Are IP-Adapter and PuLID still maintained for ComfyUI?

Both cubiq repositories, ComfyUI_IPAdapter_plus and PuLID_ComfyUI, were set to maintenance-only mode on April 14, 2025; the author may merge crucial fixes but plans no consistent work. They still run, but a ComfyUI update can break them. Pin a working ComfyUI version for production graphs, or move new work to native FLUX.2 nodes.

Can I use PuLID or IP-Adapter FaceID for a commercial AI influencer?

Check the face models first. Both rely on InsightFace models, and InsightFace says its pretrained models are for non-commercial research only; the IP-Adapter-FaceID model card says the same of its models. The plain IP-Adapter models on h94's Hugging Face page are Apache 2.0, and FLUX.2 klein 4B is Apache 2.0, which makes them cleaner commercial bases.

How do I make a character sheet in ComfyUI?

Generate one approved hero image, then produce each angle (front, three-quarter, profile, back, full body) as a separate edit from that hero with the same identity prompt, and review each against it. Generating every angle in one image is faster but tends to drift across panels. Save the approved views; they become your reference set and the start of a LoRA dataset.

Why does the face detailer change my character's face?

Because it re-renders the face. If the detailer runs without your LoRA, reference or identity prompt, it draws a plausible generic face at higher resolution. Run it with the same identity source as the main pass and a moderate denoise. Note that Impact Pack's detailer skips faces already larger than guide_size unless force_inpaint is on.

All Access · all four programs · $99/mo

One graph, one face. Every post.

AI Influencers, included in All Access, covers ComfyUI identity graphs, detailer passes, LoRA training and video, with the other three programs, live coaching and the private community in one subscription.

Start All Access — $99/mo →30-day money-back guarantee
Free · no signup

Build your identity block free

Write the fixed identity block your graph will reuse, then share your character sheet in the free Telegram for feedback.

About the author

Written by Anyro, Founder of IImagined.ai. IImagined.ai is a founder-led education platform teaching Instagram growth, AI influencers, digital products, and AI automation.

Results vary; no income is guaranteed.

All-Access subscription

Every program. Member benefits.
One subscription.

Use all four premium programs with weekly live coaching, a private community, and the resource vault.

Confirm current lessons, downloadable resources and member-benefit arrangements before purchasing.

  • All 4 premium programs plus free Futures Trading
  • Weekly live coaching calls
  • Private community access
  • Resource vault and templates
  • 30-day money-back guarantee, cancel anytime
$99/ month
$99 for the first month · $702 to buy all four standalone
Start All-AccessOr browse standalone programs
30-day money-back guarantee · $99/month · cancel anytime