ComfyUI Node

Encode Character

Build the Character Once, Compile It for Two Model Families

By omnichar·Created 22 days ago·Updated 15 days ago· 96
Encode Character
  • face
  • face_2
  • face_3
  • body
  • body_2
  • body_3
  • cloths
  • cloths_2
  • cloths_3
  • voice
  • char
◄nameCharacter►
◄description►
◄resolution512►

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.

CategoryOmnichar

Inputs (13)

NameTypeDefaultDescription
nameSTRINGCharacter—
descriptionSTRINGWhat the character looks like. Every model reads this, and a LoRA binds to it, so write it once and keep it.
resolutionINT5120–4096What the compiled reference sets are stored at. 0 uses each model's own budget. Originals are always kept untouched.
faceoptIMAGEFace references. Identity comes from these.
face_2optIMAGEFace references. Identity comes from these.
face_3optIMAGEFace references. Identity comes from these.
bodyoptIMAGEFull-body references, for build and proportions.
body_2optIMAGEFull-body references, for build and proportions.
body_3optIMAGEFull-body references, for build and proportions.
clothsoptIMAGEWardrobe references.
cloths_2optIMAGEWardrobe references.
cloths_3optIMAGEWardrobe references.
voiceoptAUDIOOptional. About 30 seconds of the character speaking, no music. Only MiniMax H3 Reference to Video uses it.

Outputs (1)

NameTypeDescription
charCHARACTER—