Character card converter for Tavern V1, V2, V3, Chub, Risu and SillyTavern.
Translate Tavern V1 ↔ V2 ↔ V3 character cards between Chub.ai, RisuAI, and SillyTavern. Embed or extract the PNG tEXt chunk, see exactly what each conversion keeps or drops, and stop hand-patching JSON at midnight.
Convert a card
Drop in a card, pick a target, and download. Everything runs locally in your browser — nothing is uploaded.
PNG, JSON, or .charx. Converted entirely in your browser — the file never leaves your device.
Importing to a hub (RisuRealm / Chub)? .charx or V2 PNG are accepted most widely. A bare V3 JSON has no embedded avatar, so some hubs reject it.
Conversion notes
Pick a card and a target format, then convert. Any fields that don't survive are listed here so you can review them before downloading.
New to the format gaps? Read the field guide on V2 vs V3 differences.
The matrix
Source on the left, target on the top. A scroll in every cell we promise to keep faithful.
| from / to | Tavern V1 | Tavern V2 | Tavern V3 | PNG tEXt |
|---|---|---|---|---|
| Tavern V1 JSON | — | upgrade | upgrade | embed |
| Tavern V2 JSON | downgrade | — | upgrade | embed |
| Tavern V3 JSON | downgrade* | downgrade* | — | embed |
| Chub.ai export | lossy | convert | convert | embed |
| RisuAI .charx | lossy | convert | convert | embed |
| SillyTavern card.png | extract | extract | extract | — |
* Downgrading from V3 is lossy: V3-only fields (assets, character_book decorators, multilingual notes) are dropped — the converter lists exactly what's removed before you download.
Common pitfalls
Five places hand-rolled converters quietly bleed your card.
- png tEXt order
The tEXt chunk before IDAT
The Tavern PNG spec requires the chara tEXt chunk before the first IDAT. Many naive encoders append it after, and SillyTavern silently refuses to load the card.
- base64 boundary
UTF-16 vs base64 in tEXt
V1 cards base64-encode a JSON string; V2 keeps the keyword chara, and V3 adds a parallel ccv3 chunk alongside it. Re-encoding without re-base64ing yields a corrupt scroll.
- character_book
Lorebook entry shape drift
V2 stores entries as a numbered object; V3 promotes character_book into a first-class scroll with groups. A naïve copy loses position, depth and selective keys.
- alternate_greetings
Greeting arrays vs first_mes
V1 had a single first_mes; V2 added alternate_greetings; V3 keeps both plus group_greetings. Flattening these into one string strips half your opening lines.
- assets[]
Asset URIs that point at nothing
V3 introduces an assets array with URIs (embedded:// or external). Converting back to V2 must inline or drop these — silent dropping is what loses voice samples.
Each failure maps to deeper format territory: how the PNG tEXt chunk is actually structured, why V3 fields silently vanish when you post to Chub, and where Chub, Risu and SillyTavern quietly disagree.
Specific routes
Coming from a particular platform? Each route below preselects the right target and walks the exact path.