The short version: V1 is a flat block of JSON, V2 adds a structured wrapper with many more fields and an embedded lorebook, and V3 moves the whole thing into a ZIP container that can bundle multiple assets. All three still circulate, and most compatibility headaches come from an app expecting one version and receiving another. Here is how they actually differ.
Character Card V1: the flat original
V1 is the legacy TavernAI format. It is a single JSON object with just six meaningful fields: name, description, personality, scenario, first_mes, and mes_example. There is no version marker, no creator metadata, and no lorebook. A V1 card is often distributed as raw JSON or embedded as base64 inside a PNG's chara metadata chunk.
Its virtue is simplicity — almost every tool can read it — but it captures only the bare persona. If you have a V1 card and want tags, creator notes, alternate greetings, or embedded world info, you need to move up to V2.
Character Card V2: the community standard
V2 (the chara_card_v2 spec) is the format most people mean when they say "character card" today. Instead of a flat object, the persona lives under a data key alongside a spec and spec_version marker. That structure made room for a much richer field set: creator_notes, system_prompt, post_history_instructions, alternate_greetings, tags, creator, character_version, an extensions object, and — crucially — an embedded character_book (lorebook).
V2 is almost always shipped as a PNG: the JSON is base64-encoded and written into a tEXt chunk keyed chara. That is why a V2 card looks like an ordinary image but imports as a full character. SillyTavern, JanitorAI, Chub/Venus, and KoboldCpp all use V2 as their common currency.
Character Card V3: the container era
V3 (the chara_card_v3 spec) keeps the structured data block and adds fields such as nickname, group_only_greetings, an assets array, and a richer extensions slot. The headline change is not a field, though — it is the container. V3 characters ship as CharX (.charx) ZIP archives so they can carry multiple images, expression sprites, and modules alongside the persona.
V3 is designed to be backward-aware: the persona fields map cleanly down to V2, so converting V3 to a V2 PNG loses only the V3-only extras (extra assets, group-only greetings) while preserving the core character. RisuAI is the most visible V3-native app.
Side-by-side comparison
| Feature | V1 | V2 | V3 |
|---|---|---|---|
| Structure | Flat JSON | data wrapper | data wrapper |
| Container | JSON / PNG | PNG tEXt | CharX (ZIP) |
| Lorebook | No | Yes (character_book) | Yes |
| Multiple assets | No | No | Yes |
| Alternate greetings | No | Yes | Yes |
Which version should you use?
For maximum compatibility, V2 PNG remains the safest choice — nearly every frontend reads it. If your characters have multiple expressions or you want to be future-proof, author in V3 and down-convert to V2 for older apps. If you are handed a bare V1 JSON, upgrading it to V2 or V3 costs nothing and unlocks tags, creator credit, and lorebooks.
Converting between versions
Because the core persona fields are shared across all three, conversion is mostly a matter of re-wrapping and re-containering. Our Any to V3 tool upgrades V1 or V2 cards to a V3 object; the V3 to SillyTavern tool down-converts a CharX to a V2 PNG. For a full walk-through of moving between every format, see our complete conversion guide.
