NewUnified .char models are now supported in ComfyUI
COMPARE/compare/char-vs-pulid-instantid-ip-adapter

PuLID, InstantID and IP-Adapter vs .char: which to use for consistent characters

Use PuLID, InstantID or IP-Adapter if you want full control over each node in a ComfyUI graph and work with one model family. Use .char if you want one node with a saved identity that you do not rewire for each graph, and that also works outside ComfyUI.

TL;DR

ROWPuLID / InstantID / IP-Adapter.char
Training neededNo per-character trainingNone on FLUX.2 and H3 R2V. An adapter trained once on Krea 2 and other H3 nodes
Photos required1 or more1 to 2
Models supportedModel-specificFLUX.2, Krea 2, FLUX.1, Z-Image Turbo, MiniMax H3, LTX-2.5, plus Nano Banana Pro and H3 R2V via fal
Portable fileNo, set up per graphYes, one .char file
Face / body / wardrobe / voiceFace, mainly, and no voiceFace, body, wardrobe and an optional voice clip
Runs locallyYes, in ComfyUIYes, in the OmniChar app and ComfyUI, or hosted on OmniChar Cloud
Open sourceYesYes, GPL-3.0
CostFree on your own GPUFree to run locally. OmniChar Cloud uses credits
Drift measurementNoneContinuity score out of 100 on every take

What each one is

THE ALTERNATIVE

PuLID / InstantID / IP-Adapter

They are ComfyUI methods that bring a face or look from reference images into a graph. Each one is wired into the graph by hand, and each is specific to certain models, so changing models means rewiring the graph. InstantID is in maintenance mode.

OMNICHAR

.char

A .char is one portable file that holds reference photos, an identity fingerprint, a locked description, an optional trained adapter and an optional voice clip. It works in the OmniChar app, the ComfyUI node and OmniChar Cloud. FLUX.2 and H3 R2V use the references directly; Krea 2 and other H3 nodes use an adapter trained once. Every take gets a continuity score out of 100.

Strengths

Where PuLID / InstantID / IP-Adapter wins

  • Full control over each node and weight in the graph
  • Uses plain reference images, with nothing to build first

Where .char wins

  • One node instead of rewiring each graph
  • The identity is saved once and reused
  • Works outside ComfyUI too, in the OmniChar app and OmniChar Cloud
  • Scores every take out of 100 for drift

When to use which

Use PuLID, InstantID or IP-Adapter ifyou maintain a tuned graph for one model and want to adjust each weight by hand.
Use .char ifyou rebuild graphs for different models, or hand the same character to someone working in the OmniChar app or Cloud.

Questions

Is InstantID still maintained?

InstantID is in maintenance mode.

Do I need to rewire my graph for each model?

With PuLID, InstantID or IP-Adapter, each graph is wired by hand and the setup is model-specific. The .char node is one node with a saved identity.

Can I use .char outside ComfyUI?

Yes. The same .char works in the OmniChar app and OmniChar Cloud.

Which models does the node support?

FLUX.2, Krea 2, FLUX.1, Z-Image Turbo, MiniMax H3 and LTX-2.5, plus hosted models via fal.

Build a character once and use it in the OmniChar app, ComfyUI and OmniChar Cloud