Compare models
Essence 2 renders a photoreal person; Expression 2 renders any character.
A bitHuman model turns speech audio into a lip-synced talking video of your avatar, live (how it works). Pick by subject: a real person, Essence 2; anything else, Expression 2. The same agent works on every platform that runs its model; on your own hardware it renders from an avatar file (.imx).
The models
Essence 2A photoreal person from one portrait, live.Photoreal, up to 1080pMade for always-on kiosks and displaysRuns on iPhone & iPadMacAndroidLinux (no GPU)BrowserYour serversCloud
Expression 2Any character from one portrait: stylized, animal, robot or human.Cartoons, animals, robots and peopleMotion generated live from the audioOne photo is enoughRuns on iPhone & iPadMacAndroidLinux (no GPU)BrowserYour serversCloudOffline
Essence 1First generation. A pre-built identity with its mouth matched to the audio in real time.Renders on a CPU, no GPU neededLip-sync patched live over pre-rendered motionCustom gesturesRuns on MacLinux (no GPU)BrowserYour serversCloudOffline
Expression 1First generation. Animates a face from a portrait at runtime.No per-identity build stepRenders on bitHuman cloud GPUs at 512×512Can animate a photo with no agentRuns on Cloud
Essence 1 and Expression 1 are the first generation. They stay supported, and nothing changes for agents that use them.
Choosing a model
Pick the model from the subject:
- A real person: Essence 2.
- Anything else (a cartoon or stylized character, an animal, a robot, a creature, a whole generated scene): Expression 2.
- Not sure: create with
model: "auto". A real person routes to Essence 2, anything else to Expression 2. - On a phone, a Mac or in a browser: Essence 2 or Expression 2.
- Maintaining a first-generation agent: keep it. Essence 1 runs on your own CPU; Expression 1 runs in the bitHuman cloud.
Every model except Expression 2 needs a clear, real human face; otherwise creation is refused with 422 MODEL_SUBJECT_MISMATCH before anything is charged.
Where each model runs
Each place links to the page that sets it up.
| Where | Essence 2 | Expression 2 | Essence 1 | Expression 1 |
|---|---|---|---|---|
| iPhone and iPad | Yes Swift package, Essence2Kit (iOS 26) | Yes Swift package, Expression2 | — | — |
| Mac | Yes Swift package (macOS 26, M3 or newer), CLI, Python | Yes Swift package (macOS 13), CLI, Python | Yes CLI ( run), Python | — |
| Android | Yesessence2-android | Yesexpression2-android | — | — |
| Linux, no GPU | Yes CLI, Python | Yes CLI, Python | Yes CLI ( run), Python | — |
| Browser (WebGPU) | Yesrender=local, for avatars that have a browser build | Yesrender=local | Yesrender=local | — |
| Your servers | Yes CLI, Python, LiveKit plugin | Yes CLI, Python, LiveKit plugin | Yes CLI ( run), Python | — |
| bitHuman cloud | Yes web embed, REST API, LiveKit | Yes web embed, REST API, LiveKit | Yes web embed, REST API, LiveKit | Yes web embed, REST API, LiveKit |
| Fully offline | Not yet Coming later | Yes Linux x86_64 (Business & Enterprise) | Yes Linux x86_64 and ARM64, macOS on Apple silicon (Business & Enterprise) | — |
Fully offline is for Business and Enterprise clients, bought in the Console or through sales (Fully offline).
Rendering on your own hardware, every place but the bitHuman cloud, bills at the self-hosted rate (pricing). How fast each model renders on each device: Performance.
This section moved: docs.bithuman.ai/build/create-avatar#how-creation-works
This section moved: docs.bithuman.ai/resources/renamed#retired-model-and-file-names
This section moved: docs.bithuman.ai/models#choosing-a-model