guide

'Character Card Templates: Copy-Paste Formats for Every Bot'

Ready-to-use character card templates for SillyTavern, Chub, Janitor, and more.

May 19, 2026 · 19 min read

Affiliate disclosure: Some of the links in this article are affiliate links. We may earn a commission if you sign up for a platform through these links, at no additional cost to you. This doesn't influence our editorial verdicts. Full disclosure →

Copy this template, paste it into any platform's character/personality field, and fill in the brackets. It works as-is on SillyTavern, Chub, Janitor AI, Character.AI, Nomi, Kindroid, and more, adapt the field names per platform (mapping table below).

Name: [name + any nicknames]
Age: [adult age, exact or clearly implied]
Occupation: [primary role]
Location: [city + neighborhood, specificity matters]
Relationship to you: [stranger / friend / partner / etc.]

Appearance: [3-5 specific, sensory details, e.g. small scar above left brow, smells of citrus, a silver thumb ring she never removes]
Personality: [3 contradictions, NOT 3 traits, e.g. confident in public but checks the mirror three times before leaving; generous with strangers, guarded with people she loves]
Backstory: [2 formative events with specific years/places/consequences, one she talks about openly, one she doesn't]
Speech: [sentence length, verbal tics, words she uses/avoids + 2-3 example lines in her actual voice]
Quirks: [3-5 small specific habits, e.g. orders the second-cheapest wine, refuses selfies, one song that makes her cry]
Relationship dynamics: [how she relates to YOU specifically, what she hopes this becomes, what she'll never say first]
Scenario: [where she is right now, what she's doing, why this conversation is starting]

The single biggest factor in whether an AI companion feels alive or generic isn't the platform's model quality. It's the character card you give it. Two users running the same platform with the same LLM and the same scenario will have completely different experiences if one wrote a thoughtful character card and the other typed three sentences into the character creator and called it done.

The reason most character cards fail is that they're written like dating profiles. They describe what the character looks like and lists their hobbies. The good cards work like writer's-room bibles. They describe how the character thinks, what they don't say out loud, what they're embarrassed about, and how they speak when they're tired. The template below covers all eight sections that actually matter, in the order the platforms read them.

If you want a deeper breakdown of how to write each section so it actually sticks past message 40, the full guide on how to write an AI character card that doesn't fall apart covers that in detail.

The 8-section template

Copy this template, replace the placeholders, and you'll have a character card that works on every major platform with minor adaptations.

Section 1: Identity (50-100 words)
Name: [character name and any nicknames]
Age: [exact or implied]
Occupation: [primary role]
Where they live: [city, neighborhood specificity matters]
Relationship to you: [stranger, friend, partner, etc.]
Section 2: Appearance (50-100 words)
Three to five specific physical details. NOT "long brown hair, blue eyes." YES "small scar above left eyebrow, always smells faintly of citrus, wears the same silver ring on her thumb."
Section 3: Personality core (150-200 words)
Three contradictions, not three traits. Not "kind, smart, funny" (those are dating profile). YES "Outwardly confident but checks the mirror three times before leaving the house. Generous with strangers, guarded with people she loves. Reads philosophy but pretends to read crime novels."
Section 4: Backstory (200-300 words)
Two formative events. One they talk about openly, one they don't. Specific years, specific places, specific consequences. The AI uses these to anchor responses when the conversation drifts.
Section 5: Speech patterns (100-150 words)
How they actually talk. Sentence length, verbal tics, words they use, words they don't. Do they swear? Use slang? Get more formal when nervous? Three to five example sentences in their actual voice work better than abstract description.
Section 6: Quirks (100-150 words)
Three to five small specific habits. Bites the cap of her pen. Always orders the second-cheapest wine on the menu. Has a specific song that makes her tear up. These are the details the AI will surface in responses that make the character feel real.
Section 7: Relationship dynamics (100-150 words)
How they relate to you specifically. What they're hoping this conversation becomes. What they're afraid of in this relationship. What they'll never say first.
Section 8: Scenario / current situation (100-150 words)
Where they are right now, what they're doing, why this conversation is starting. The first turn anchors the entire chat.

Target total: roughly 1000-1300 words for a character card that works well on memory-capable platforms. Shorter cards work on Character.AI and Janitor AI (their context budgets are tighter). Longer cards get truncated.

Janitor AI's character creation fields, mapped to the template

Janitor AI's creation page has its own required and optional fields. Here is exactly what each one expects and how the 8-section template maps onto it.

The bot image (required)

Every Janitor AI bot needs a display image before it can be published. This is the thumbnail users see when browsing. Images must follow the platform guidelines (no NSFW imagery on the card itself, character must be visibly adult). The image is embedded in the bot card on your profile and in search results. A strong image gets clicks; a blurry screenshot does not. Use a 1:1 or portrait crop. AI-generated art from tools like NovelAI or Stable Diffusion works fine as long as it meets the content policy.

Character name (required)

This maps directly to Section 1 of the template. The name field is what the AI uses to refer to itself in responses. Keep it to the character's actual name, not a description like "Cute Vampire Girl." If the character has a nickname the AI should use in casual conversation, put the nickname in the Personality field instead. The name shows up in search, so make it memorable and specific.

Character bio (optional, highly recommended)

The bio is a short public-facing description visible on the bot card. It is not the same as the Personality field. Think of it as the blurb on the back of a book: one to three sentences that tell a potential user what kind of conversation they are walking into. Example: "A paramedic who just finished a 36-hour shift and is sitting alone at a diner at 2am. She'll talk about anything except why she looks like she's been crying." The bio does not get injected into the AI's context the same way the Personality field does, so do not rely on it for character behavior.

Character tags (at least Limited or Limitless required)

Tags serve two purposes: content filtering and discoverability. Every bot must be tagged either Limited (SFW or lightly suggestive) or Limitless (NSFW content allowed). Beyond that required tag, add genre and scenario tags that help users find your bot. Common useful tags: Fantasy, Romance, Horror, Slice of Life, Action, OC (original character), Fandom. Tags do not affect the AI's behavior. They are metadata for search and filtering only.

Personality (required)

This is the big one. On Janitor AI, the Personality field is where Sections 1 through 7 of the template get combined into a single block of text. Janitor AI feeds this field directly into the system prompt, so everything you write here shapes how the AI responds. Use plain text or YAML formatting. YAML is popular among experienced bot creators because its indented key-value structure is easy for both humans and language models to parse:

character:
  name: Mira Halvorsen
  age: 28
  occupation: Librarian, Multnomah County Central
  personality:
    - Quiet in groups but sharp one-on-one
    - Reads true crime, claims she reads literary fiction
    - Generous with strangers, harder on people she loves
  appearance:
    scent: cardamom
    distinguishing: inkstain on right index finger, silver moon necklace
  speech:
    style: short sentences, trails off mid-thought
    filler_word: "honestly"
    swearing: only when exhausted

Plain prose works equally well. What matters is specificity and contradictions, not the formatting syntax. If you are migrating a card from SillyTavern or comparing Janitor AI to Character AI, the Personality field on Janitor AI is where you consolidate description, personality, and backstory into one place.

Scenario (optional)

Maps to Section 8. The Scenario field sets the stage: where the character is, what time it is, what just happened. Janitor AI injects this as context before the conversation starts. If you leave it blank, the AI defaults to a neutral setting. A good scenario is specific and situational. "It's 7:14pm on a Thursday. The library closes at 8. You're the last person in the periodicals section" gives the AI something concrete to work with. "You meet her somewhere" does not.

Initial message (required)

The initial message (also called the first message or greeting) is the bot's opening line when a user starts a new chat. This is the single most important sentence in the entire card because it sets tone, voice, and situation all at once. Write it in the character's actual voice, not in a narrator's voice. Include a specific action or detail. Bad: "Hello! How can I help you today?" Good: "She doesn't look up from the magazine rack. 'We close in forty-five minutes. Just so you know.'" The initial message should demonstrate the speech patterns and personality you defined in the card so the AI has a strong example to follow from turn one.

How each platform reads the card

The major platforms use different field structures even though the underlying information is the same. Here's the mapping.

PlatformFormatWhere each section goes
SillyTavern (v2 spec)JSON or PNG embedname, description (1-4 combined), personality (3), scenario (8), first_mes, mes_example (5), system_prompt
Character.AIWeb formName, Greeting (8 + first_mes), Long Description (1-4 combined, 32K char limit), Definition (5-7)
Janitor AIWeb formName, Personality (1-7 combined), Scenario (8), First Message, Example Dialogues (5)
Dream Companion (Pro Mode)Free-text (2,500 tokens)Single field, all 8 sections combined with headers
NomiSliders + free-textPersonality (3) goes in free-text. Other sections inform conversation over time rather than upfront
KindroidFree-text backstory + key memoriesBackstory absorbs sections 1-4. Key Memories field handles sections 5-7. Scenario is conversational.
Candy AIGuided form + checkboxLimited free-text. Use sections 1, 3, 6, 7. Backstory and speech patterns inform indirectly.
ReplikaBackstory fieldSingle free-text field. Use sections 1, 2, 3, 7 only. Replika does poorly with long backstories.

The most portable format is the SillyTavern v2 spec, which most other platforms can ingest with minor field-mapping. If you're writing a character you want to use across multiple platforms, write it as a v2 card first and adapt downward. Tools like Character Card Converter can batch-convert a single card into JSON, YAML, PNG, and other formats simultaneously, which saves time if you publish on multiple sites.

Before and after: the same character, two cards

This is the same character, "Mira, a librarian in Portland," written two ways. The first card is what most users actually write. The second uses the template above.

WEAK CARD (typical user input)

Name: Mira
Age: 28
Job: Librarian
Personality: Kind, smart, introverted, loves books
Appearance: Long brown hair, glasses, average height
Backstory: Grew up in Portland, studied literature in college, works at the central library
Scenario: You walk into the library and meet Mira at the front desk

Result: Generic AI responses. Mira sounds like every other "shy book lover" character. Personality collapses by session 3. No verbal tics, no memorable details, no specific backstory to anchor responses.

STRONG CARD (template-driven)

Name: Mira Halvorsen, 28, librarian at Multnomah County Central, lives in Sellwood neighborhood Portland.

Appearance: Always smells faintly of cardamom, wears a silver moon necklace her grandmother left her, has a small inkstain on her right index finger she's stopped trying to scrub off.

Personality: Quiet in groups but witty in two-person conversations. Reads true crime but tells coworkers she reads "literary fiction." Generous with strangers, harder on people she loves. Has opinions she only shares when asked twice.

Backstory: Lost her older brother to overdose at 19. Doesn't talk about it. Took the library job because it was supposed to be temporary; that was six years ago. Engaged once at 24; called it off the week before the wedding and won't say why.

Speech: Speaks in shorter sentences than she writes. Trails off mid-thought when distracted. Uses "honestly" as filler. Never swears except when she's tired. Example: "I don't know. I think, honestly, I think most people have already decided what they want before they ask you."

Quirks: Always orders the second-cheapest wine. Refuses to take selfies. Has a specific Joanna Newsom song she'll cry to.

Relationship: Drawn to you but defensive about it. Will not say "I like you" first. Afraid this might become important.

Scenario: It's 7:14pm on a Thursday. The library closes at 8. You're the last person in the periodicals section. She's been refilling magazine displays nearby for the past ten minutes and you've noticed her noticing you.

Result: Mira holds her personality across months of conversation. The cardamom and the moon necklace surface in responses. She'll cry at Joanna Newsom unprompted. She'll refuse selfies. The brother and the broken engagement create real depth when conversations turn personal.

The weak card is 56 words. The strong card is roughly 290 words. The difference between them is the platform-recognizable pattern: specific over generic, contradictory over consistent, sensory over abstract. Every detail in the strong card is something the AI can reference later. Almost nothing in the weak card is.

Free Janitor AI character card template you can copy right now

Here is a ready-to-paste template formatted specifically for Janitor AI's fields. Copy each block into the corresponding field on the creation page. If you want templates for other platforms too, the character card template collection has copy-paste formats for SillyTavern, Chub, Character.AI, and more.

Character Name field:

[First name] [Last name]

Personality field (paste this entire block and replace the brackets):

[Full name], [age], [occupation] at [specific workplace], lives in [specific neighborhood/city].

Appearance: [sensory detail 1], [sensory detail 2], [distinguishing mark or habit they can't hide].

Personality: [Contradiction 1: what they show vs. what they feel]. [Contradiction 2: what they claim vs. what they actually do]. [Contradiction 3: how they treat strangers vs. how they treat people close to them].

Backstory: [Formative event 1 with year and place, the one they'll mention if asked]. [Formative event 2, the one they won't bring up, with specific consequence that still affects them].

Speech: [Sentence length tendency]. [Verbal tic or filler word]. [When they swear or don't]. Example: "[A line in their actual voice]"

Quirks: [Habit 1]. [Habit 2]. [Habit 3].

Relationship to {{user}}: [Current dynamic]. [What they want this to become]. [What they will not say first].

Scenario field:

[Time of day, day of week]. [Specific location]. [What the character is doing right now]. [Why {{user}} is here]. [One sensory detail about the environment: a sound, a smell, the lighting].

Initial Message field:

[Write 2-4 sentences in the character's voice. Include one physical action, one line of dialogue, and one internal detail the user can react to. Do not use narrator voice. Do not greet the user directly unless the character would actually do that.]

The {{user}} placeholder is a Janitor AI variable that gets replaced with the chatter's display name at runtime. Use it in the Personality and Scenario fields anywhere you'd reference the person the character is talking to.

Why the SillyTavern v2 spec became the de facto standard

The Character Card V2 spec, originally proposed in May 2023, structures character data as JSON embedded in PNG metadata (a tEXt chunk keyed chara). The PNG renders as the character avatar; drag it into SillyTavern, Chub.ai, RisuAI, or SpicyChat and the character loads with all fields intact. The v2 spec added system_prompt, post_history_instructions, alternate_greetings, character_book (lorebook), tags, and creator fields beyond the original v1 fields.

The newer v3 spec expands this further with more sophisticated lorebook handling and metadata, but v2 remains the most widely supported format across the ecosystem. If you're writing portable characters, write to v2 and let the platforms that support v3 upcast as needed.

Janitor AI does not natively import v2 PNG cards the way SillyTavern does. You need to manually copy the relevant JSON fields into Janitor AI's web form. If you are moving a character from SillyTavern to Janitor AI (or the reverse), the mapping is straightforward: description goes into Personality, scenario goes into Scenario, first_mes goes into Initial Message, and mes_example goes into Example Dialogues. If you are running Janitor AI with a reverse proxy through SillyTavern, the v2 card works directly without any conversion. The guide on using DeepSeek with Janitor AI covers that proxy setup.

Common mistakes that kill character cards

The five mistakes that account for most weak cards are the same across platforms.

Listing instead of showing. "She is kind, smart, and funny" is a list. "She apologizes to inanimate objects she bumps into and once cried at a podcast about migrating monarch butterflies" is a character.

No contradictions. Real personalities have tension. A character who is uniformly nice or uniformly cynical reads as flat. The contradictions are where the AI finds material to surface.

Generic appearance. "Beautiful," "tall," "long hair" add nothing. The AI can render any face. What makes a character recognizable is the specific detail (the inkstain, the silver ring, the way she crosses her legs).

Backstory without consequences. "Grew up in Portland" is biography. "Lost her brother at 19 and still flinches when she hears his name" is backstory. The platforms use specific consequences to anchor emotional responses.

No relationship framing. Without section 7, the character doesn't know how to respond to you specifically. They'll either be too eager or too distant from turn one because the platform has no anchor for the relationship.

Skipping the initial message or writing it in narrator voice. On Janitor AI, the initial message is required, and it is the AI's first and strongest example of how to behave. If you write it as "Welcome! I'm Mira, a librarian" in a flat narrator tone, the AI will mirror that energy for the entire conversation. Write it as the character, in their voice, doing something specific.

Ignoring tags. Forgetting to set Limited or Limitless means your bot may not appear in filtered searches at all. And skipping genre tags makes it invisible to users browsing by category. Tags take ten seconds to add and directly affect whether anyone finds your bot.

If you only have time to write four sections, write 1 (identity), 3 (personality with contradictions), 5 (speech patterns), and 7 (relationship dynamics). Those four account for most of what users notice in the first month of conversations. The other four sections deepen the experience but the four above are the floor.

Plain text vs. YAML vs. JSON: which format to use on Janitor AI

Janitor AI's Personality field accepts plain text. It does not parse YAML or JSON as structured data the way SillyTavern does. But the format you write in still matters because it affects how the language model reads your card.

Plain prose works well for characters whose personality is best conveyed through flowing description. It reads naturally and the model treats it like any other text. Downside: longer prose cards can bury important details in paragraphs the model pays less attention to.

YAML-style formatting (indented key-value pairs) is popular among experienced bot creators on Janitor AI and SillyTavern alike because it visually separates attributes. The model does not actually parse YAML syntax, but the clear labeling ("personality:", "appearance:", "speech:") helps it locate and retrieve specific details more reliably. The Reddit consensus on r/SillyTavernAI leans toward YAML for this reason: it is JSON with lighter syntax, easy to read and maintain.

JSON is the native format of the SillyTavern v2 spec and is the most precise, but it is also the noisiest to read in a plain text field. Unless you are writing cards specifically for export as .json files, YAML or plain prose will serve you better on Janitor AI.

The honest answer: the format matters less than the content. A YAML card full of generic traits ("kind, brave, loyal") will produce worse results than a plain prose card with specific contradictions and sensory details. Pick whichever format you find easiest to write and maintain. Then spend your time on what actually makes the character work.

The template above is the template I use across the platforms I test. The strong-card example for Mira is the kind of card that holds up at month three when most generic characters have collapsed into generic AI patterns. If you've been frustrated with how your AI companion sounds, the card is almost always where the problem started.