Skip to content

Silly Tavern character card fields (1/5): What’s in the file? spec, data, and metadata

Series: Silly Tavern character card fields (5 parts). Field names and nesting follow the community Character Card V2 explainer; how Silly Tavern labels a field or whether it reads it depends on your ST build.

Think of a card as a contract: the PNG is the cover, the embedded JSON is the text. This part covers the outer shape of JSON and the fields that mostly act as display/metadata (including text that never goes to the model).

V1 vs V2: look for spec

  • Looks like V1: the root object has name, description, etc. No spec. Those six strings are mandatory and MUST default to an empty string, not null or “missing”.
  • Looks like V2: the root has spec: "chara_card_v2", spec_version (e.g. "2.0"), and the real payload lives under data. That nesting helps old editors not silently strip V2-only keys.

Rule of thumb: no spec → treat as V1; chara_card_v2 → read everything under data.

V2 outline (concept only)

Structural sketch to align key names—not a drop-in production card (fill in per your tool):

json
{
  "spec": "chara_card_v2",
  "spec_version": "2.0",
  "data": {
    "name": "",
    "description": "",
    "personality": "",
    "scenario": "",
    "first_mes": "",
    "mes_example": "",
    "creator_notes": "",
    "system_prompt": "",
    "post_history_instructions": "",
    "alternate_greetings": [],
    "tags": [],
    "creator": "",
    "character_version": "",
    "extensions": {}
  }
}

(character_book is optional—add it when needed; see part 4.)

Later parts unpack personality and other prompt-facing fields. This part focuses on data entries that behave like “business card + notes”.

name

Role: the character’s display name. Works with / <CHAR> replacements elsewhere (case-insensitive per spec).

Example:

text
Lin Wan

description

Role: character description. The V1 spec says it SHOULD be included in prompts by default; UIs name the box differently—trust the label in your ST build.

Example:

text
A book conservator in their twenties—speaks slowly and listens before answering. Doesn’t enjoy noisy rooms.

tags

Role: string array for filtering / UI, not prompt engineering. Tags SHOULD NOT be assumed to feed the model.

Example:

json
["original", "slice-of-life", "short-form"]

creator

Role: author attribution string.

Example:

text
RiverStudio

character_version

Role: a string version label so you can tell v1.0 from v1.1 when files multiply.

Example:

text
2026.04.16

creator_notes

Role: notes for humans, never injected into prompts—recommended model, temperature, usage tips, warnings, etc.

Example:

text
Try a fresh chat for line 1. If this conflicts with your global Jailbreak, clear the card’s post-history field first (see part 5).

Previous: —

Next: (2/5) Personality & examples: personality, mes_example

Series index: Blog · Silly Tavern character card fields


On macOS, browse and edit embedded JSON in PNG cards with Sillycard. Details: App Store and in-app copy.

Sillycard — a simple Silly Tavern character card manager, native macOS app. © 2026 Sillycard