SillyTavern character cards: the format, PNG vs JSON, and five to download
What a SillyTavern character card is, field by field: PNG against JSON, {{char}} and {{user}}, the 600 to 1,000 token budget and what it costs, where to get cards, how to import them, and five of ours to download.
A SillyTavern character card is a PNG or JSON file with the character's name, description, scenario, first message and example dialogue. The frontend sends those fields with every message. This post covers the format field by field, PNG against JSON, the {{char}} and {{user}} placeholders, how long a card should be and what that length costs, where to get cards, and how to load one in SillyTavern and in our free roleplay chat.
5 cards of ours are at the end as downloads, each 438 to 572 tokens, each running free in the browser on an uncensored build before you download it.
The fields, in the order SillyTavern sends them
Character Card V2 (chara_card_v2) is the format every library ships and every frontend reads. The spec lists the fields; this is what each one does in a chat.
| Field | What it does |
|---|---|
name | The only required field. Fills {{char}} everywhere else. |
description | Who the character is: age, look, manner, history, what they want. Prose the model reads every turn. |
personality | A short trait list. Optional; most writers fold it into description. |
scenario | Where the chat starts and what {{user}} is doing there. |
first_mes | The opening message. Sets the scene and ends on something {{user}} can answer. |
mes_example | Sample exchanges in <START> blocks. The model copies their voice, length and formatting. |
system_prompt | Overrides the frontend's default instruction when set. Empty means the preset's. |
creator_notes, tags, creator, character_version | Metadata. Shown in the card list, never sent to the model. |
SillyTavern's Chat Completion preset sends them as one system message: the system prompt (or its default), then the description, the scenario and the example dialogue, in that order. Our panel sends the same order with the same default instruction:
Write {{char}}'s next reply in a fictional chat between {{char}} and {{user}}. Stay in character, write in the third person for {{char}}'s actions and the first person for speech, and keep each reply to a few paragraphs. Never write {{user}}'s actions or words.A V2 card as JSON, ready to fill in:
{
"spec": "chara_card_v2",
"spec_version": "2.0",
"data": {
"name": "Mara Hale",
"description": "Who {{char}} is, in prose the model reads: age, look, manner, what she wants.",
"personality": "",
"scenario": "Where the chat starts, and what {{user}} is doing there.",
"first_mes": "*The door slams against the wind.* \"Three days. Maybe four.\" *She hangs the coat on a peg.* \"Tea?\"",
"mes_example": "<START>\n{{user}}: Do you ever get lonely out here?\n{{char}}: *She considers the question as if it were a knot.* \"Mostly not.\"",
"system_prompt": "",
"creator_notes": "One line for the card grid.",
"tags": ["slow burn", "drama"],
"creator": "you",
"character_version": "1.0"
}
}V3 adds fields for assets and multilingual notes and keeps the V2 ones. V1 is the same fields at the top level with no data wrapper. Our import reads all three; export writes V2.
PNG or JSON
A PNG card is the same JSON, base64-encoded, in a text chunk of the image: keyword chara for V1 and V2, ccv3 for V3. The picture is the portrait; the chunk is the card. Nothing about the pixels matters to the model.
- PNG when you want one file with a portrait, the way libraries distribute cards.
- JSON when you want to read or edit the card in a text editor, diff it, or keep it in git.
Image hosts and chat apps often strip PNG text chunks. A card that arrives through one of them imports as a plain picture. Send the JSON, or the PNG as a file attachment, not an inline image.
{{char}} and {{user}}
Write {{char}} wherever the character's own name would go, and {{user}} for the person chatting. The frontend replaces both before the text reaches the model, so one card works for every persona name and the character never addresses you as "You".
Example dialogue uses them as speaker labels: {{user}}: ... and {{char}}: ..., each exchange opened with <START>. SillyTavern also supports macros such as {{time}} and {{random}}; cards that lean on them break in frontends that know only the two.
How long a card should be, and what length costs
600 to 1,000 tokens is the standing advice, and the five cards below sit in that range at 438 to 572. The reason is cost, not quality: the card is resent with every message, so its length is a per-message charge for the whole chat.
On GLM-5.3 Uncensored today, every 100 tokens of card add about $0.0028 to 100 messages. Mara Hale at 495 tokens, plus 2,000 tokens of chat and a 300-token reply each turn, comes to $0.0957 per 100 messages. A 3,000-token card on the same model would add about $0.0564 to that.
Keep the card to what the model needs on every turn: who the character is, how they talk, where the scene starts. Put the world's history, the cast and the map in a lorebook, which the frontend sends only when a keyword comes up. The best AI for roleplay post works the same message at 4,000 and 16,000 tokens of input on each model.
Writing a card that holds
- Behavior over adjectives. "Talks in short sentences and notices shoes first" does more than "observant and laconic". The model copies actions; it waves at traits.
- Example dialogue sets the voice. Two or three exchanges in the exact register you want: length, punctuation, how actions are marked. The model matches them more than any instruction.
- First message ends on a hook. A question, an offer, a door left open. A first message that resolves itself leaves {{user}} nothing to do.
- Say it once. A trait in description, personality and scenario costs three times and makes the model repeat it.
- Test, then cut. Run ten turns. Anything the model never used comes out.
SillyTavern's own character design page covers the same ground with its field names.
Where to get cards
- Chub: the largest free library, PNG downloads, tag search.
- Character Tavern: a catalog with a creator studio that imports an existing card.
- CharaVault and charactercard.com: PNG archives.
- r/SillyTavernAI: the "where to get character cards" threads list smaller sources and creators.
- Here: the five below, written as adults in fiction, each with a page where it runs free before you download it.
Read a downloaded card's JSON before you load it. A card can carry a system prompt that overrides your preset.
How to import a card
In SillyTavern. Open Characters in the top bar, click Import Character from File, pick the PNG or JSON. The card joins the list. Connect a model under API Connections first; the SillyTavern guide has the five fields for an uncensored build on one key. The Characters page of the docs covers the panel.
In our roleplay chat. Open /roleplay, click Import, pick the file. The card opens in the panel on the model in the picker. 12 turns a day are free on the builds marked free; the rest take a key. The card stays in your browser. Export writes it back as V2 JSON for SillyTavern, Chub or any frontend.
In Chub and Janitor. Chub imports PNG and JSON into its library and chats on its own models or your key (guide). Janitor keeps its bots on its site and takes a model by proxy (guide).
Five cards to download
Each is an original adult character in fiction, Character Card V2, with a model it was written for and the cost of 100 messages on a key at today's rate. The page link runs it free.
| Card | Model | Tokens | 100 messages on a key | Download |
|---|---|---|---|---|
| Mara HaleLighthouse keeper on a storm-bound island, used to being alone | GLM-5.3 Uncensored | 495 | $0.0957 | JSON |
| Vic AdlerPrivate detective in a rain-soaked city, 1949, one case from broke | DeepSeek V4 Pro Uncensored | 438 | $0.3038 | JSON |
| HALCYONA long-haul freighter's AI, awake for eleven years, glad of a voice | GLM-5.3 Uncensored | 572 | $0.0979 | JSON |
| BrannocKeeper of the Salt Crow tavern, where every quest in the city starts | Roleplay Uncensored | 524 | $0.0937 | JSON |
| Ilse VargaA vampire countess, four centuries old, bored of everyone but you | GLM-5.3 Uncensored | 490 | $0.0956 | JSON |
Tokens: the card text at four characters a token, the rule SillyTavern’s counter uses. Each card opens on the model it was written for; the picker takes any build.