Encode Character
Build the Character Once, Compile It for Two Model Families
- face
- face_2
- face_3
- body
- body_2
- body_3
- cloths
- cloths_2
- cloths_3
- voice
- char
The whole pitch of .char is that you build a character once and it works across image and video models. This is the build step: references in, character out.
You don't have to make characters in ComfyUI - Omnichar Studio does the same job with a UI, and a trained LoRA only ever arrives that way. But if your references are already in a ComfyUI folder, or you're generating them in the same graph, Encode Character saves the round trip.
What goes in
name and description are required. Take the description seriously, because it's the text every model reads and, if you later train an adapter, the thing the LoRA binds to. Write it once and keep it.
Then nine optional image inputs: face, face_2, face_3, body and its two siblings, cloths and its two. Identity comes from the face slots, build and proportions from the body slots, wardrobe from the cloths slots. Each input also accepts a batch, so three Load Image nodes and one batch of three both give you three references. Order is fixed - face, then body, then wardrobe - and the prompt's numbering follows that order downstream.
At least one image or it refuses, correctly: a character needs at least one reference image.
resolution is what the compiled sets are stored at, 512 by default. 0 means each model uses its own budget. Originals are always kept untouched, so re-encoding at a different resolution never destroys what you fed in.
What it does with them
It compiles reference sets for two architectures, flux2-klein and minimax-h3, each to its own rules. Klein's set is capped by area with dimensions snapped to a multiple of 16. H3's wants the short edge at 2048, a multiple of 32, and an aspect ratio within 4:1 - put an absurdly wide crop in and it tells you to crop closer to square rather than mangling it.
That compilation is the reason this format is interesting at all. Compiled sets mean the same character can be handed to a 4-step distilled image editor and a video model without you preparing references twice, in two different shapes, and wondering why the face looks different on one of them.
The output, and the step people forget
One output: char. It exists in memory only. Nothing is on disk until you wire it into Omnichar Save Character, give it a filename, and run. Do Encode → Save → Load once and you have your reusable .char in ComfyUI/models/characters/.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/omnichar/ComfyUI-Omnichar
cd ComfyUI-Omnichar
pip install -r requirements.txt
Restart ComfyUI, or install through ComfyUI Manager by searching Omnichar. The only dependency is omnichar-sdk; there are no checkpoints or model files to download. The pack has a ready-made workflow, workflows/character_encode.json, if you'd rather see the wiring than build it.
Getting a character that's actually worth encoding
The KB's guidance for character LoRA datasets applies directly here, because a compiled reference set is a smaller version of the same problem: 15–25 images, varied poses, lighting and angles, and a real mix of full-body and wardrobe shots rather than five selfies. This node's three-slot-per-role structure nudges you in that direction on purpose - face first because identity is carried there, body for build, cloths so the character has outfits instead of a face with a floating head.
If your results feel generic, it's usually the description being thin. "a woman" gives every model room to invent, and the reference images can only pull so hard against that. Name the age, hair, build, and the wardrobe you're actually expecting to see.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| name | STRING | Character | — |
| description | STRING | What the character looks like. Every model reads this, and a LoRA binds to it, so write it once and keep it. | |
| resolution | INT | 5120–4096 | What the compiled reference sets are stored at. 0 uses each model's own budget. Originals are always kept untouched. |
| faceopt | IMAGE | Face references. Identity comes from these. | |
| face_2opt | IMAGE | Face references. Identity comes from these. | |
| face_3opt | IMAGE | Face references. Identity comes from these. | |
| bodyopt | IMAGE | Full-body references, for build and proportions. | |
| body_2opt | IMAGE | Full-body references, for build and proportions. | |
| body_3opt | IMAGE | Full-body references, for build and proportions. | |
| clothsopt | IMAGE | Wardrobe references. | |
| cloths_2opt | IMAGE | Wardrobe references. | |
| cloths_3opt | IMAGE | Wardrobe references. | |
| voiceopt | AUDIO | Optional. About 30 seconds of the character speaking, no music. Only MiniMax H3 Reference to Video uses it. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| char | CHARACTER | — |