Turn raw JSON back into a card.
You edited the card as JSON — now it needs to be a PNG again before SillyTavern will import it by drag-and-drop. This route embeds your JSON into a PNG with the tEXt chunk written before the image data, exactly as the spec requires. Hand-rolled embedding scripts get that ordering wrong constantly, and the result is a card that silently refuses to load.
Convert a card
Drop in a card 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.
The route
Drop your card JSON below
V1, V2 and V3 JSON are all detected automatically.
Convert to V3 PNG
JSON carries no image, so the output uses a 1×1 placeholder — the report flags this. Replace the avatar in your editor after import, or re-embed onto the original card PNG by converting that PNG directly next time.
Import and set the avatar
Drag the PNG into SillyTavern, then set the character image from the UI.
Questions
- Why does my hand-embedded card fail to load?
- Nine times out of ten: the tEXt chunk was appended after the first IDAT chunk. The Tavern PNG spec requires it before the image data, and SillyTavern silently skips cards that get this wrong.
- V2 PNG or V3 PNG?
- V3 PNG writes both the ccv3 chunk and a legacy chara chunk, so it works in modern and older clients alike. Choose V2 only if you specifically need to avoid V3 fields.