Character Cards Explained: What's Inside the .png and .json Files Powering AI Roleplay
Insights | Updated on June 12, 2026
By Lizzie Od, Editor & AI Roleplay Enthusiast

TL;DR:
A character card is a portable file — usually a PNG with the data hidden inside it, or a plain JSON — that encodes an AI chatbot's name, personality, scenario, first message, and example dialogue.
The two formats hold the same data; the PNG also carries a portrait, while the JSON is just the text. You can browse and download cards from Chub, character-tavern, AICC, and JanitorAI, then import them into SillyTavern, JanitorAI, or SpicyChat.
Want more than text? The same file imports at ourdream.ai/character-import and runs as a character you can give images and video.
Search “character cards” and Google hands you about five different things: playing-card decks, the character profiles novelists fill out before chapter one, art and trading cards, classroom flashcards — and, buried in the mix, the one you actually came for. The AI-roleplay character card is the worst-served meaning of the bunch despite being the most technically interesting, and that gap is the whole reason this page exists.
Here's the shift that created these files. For years, if you built a great chatbot persona, it lived inside whatever closed platform you built it on and stayed there. Then the SillyTavern and Chub ecosystem turned a character into something you can hold: one .png or .json that travels between front-ends, gets shared and remixed, and re-imported anywhere that reads the same fields. That portability is genuinely powerful. The catch? Almost nothing explains it in one place — the knowledge's scattered across a GitHub spec, a wiki, an old Rentry, and a pile of dead archive links — so newcomers bounce before they ever load their first card.
This guide covers both halves of that gap: the practical (what's inside a card, where to get them, how to import and make them) and the slightly deeper (why the ecosystem churns, and what a portable character is really worth once you've got one).
What Is a Character Card?
A character card is a portable file — usually a PNG image with data hidden inside it, or a plain JSON file — that encodes everything an AI chatbot needs to roleplay a specific persona: its name, description, personality, scenario, first message, and example dialogue. It's the unit creators pass around. And it travels between apps without dragging a whole platform along with it.
It is not a playing card, a novelist's character profile, an art or trading card, or a classroom flashcard. Those are the four meanings cluttering the search results; this is the AI-roleplay one, and from here on it's the only one we mean.
The format grew out of a specific lineage. The card is what creators share across SillyTavern, TavernAI, and Chub — and per the SillyTavern repo, SillyTavern itself began in February 2023 as a fork of TavernAI 1.2.8. It's since grown into a project with 300+ contributors and three years of independent development, which is why its way of describing a character — those six core fields — became the standard everyone else reads.
When people talk about an ai character card, a “Tavern card,” or character cards ai in general, this shared file is what they mean. Two community references anchor everything below: the Character Card Spec V2 repo and the SillyTavern Character Design docs. Both are neutral, authoritative, and free — exactly the kind of source the scattered roundups never point you toward.
What's Actually Inside One of These Files?
Inside every character card are six core fields that do the heavy lifting, plus a handful of optional ones the newer specs added. The six are the original V1 set, and any front-end that reads cards at all reads these. The optional fields are where things like lorebooks and creator notes live, and you'll meet them properly in the spec section.
Here's the whole anatomy in plain language, drawn from the V1 spec and the SillyTavern Character Design docs.
The thing worth internalizing: those first six are the contract. A card with nothing but them works everywhere. Everything below is enrichment — useful, sometimes essential for a deep character, but not required to load and chat. The character_book row tends to confuse newcomers, so it gets its own explainer below.
PNG vs JSON: Which Character Card Format Should You Use?
The short version: a PNG card and a JSON card hold the same character data — the only real difference is that the PNG also carries a portrait, while the JSON's just the text. Want the avatar to travel with the character? Export PNG. Want something you can crack open in any text editor? Export JSON. That's genuinely the whole decision.
So how does an image file secretly hold a chatbot?
The PNG tucks its data into the image's text metadata — a “tEXt chunk,” a standard slot in the PNG format for stashing text alongside the picture. The character data lives there under the keyword chara (V1 and V2 cards) or ccv3 (V3), stored as base64-encoded JSON. Because it's just a text chunk riding along with the image, the file still opens as a normal picture; double-click it and you'll see a portrait, not a wall of code. The JSON card is that same data pulled out into a standalone text file, with no embedded avatar. The data structure for ai json characters is identical — it's just naked instead of wrapped in an image.
One quick myth to kill, because it floats around in older guides: a WEBP file is not a real card container. At most it's a plain avatar image — there's no agreed way to embed the character data in it the way PNG does, so do not expect a .webp to import as a working card anywhere. If a download hands you a WEBP and calls it a card, treat the image as decoration and go find the actual .png or .json. (For the canonical version of the PNG-vs-JSON rules, the SpicyChat importing-characters docs lay it out cleanly.)
What Do the V1, V2, and V3 Card Specs Actually Add?
Each version of the card spec added capability without breaking the last: V1 defined six flat fields, V2 wrapped them in a data object and added lorebooks and creator metadata, and V3 made cards multimodal — able to carry images and audio. You can read a card without knowing any of this, but the version explains why some cards feel richer than others, and why an old editor can sometimes mangle a new one.
V1, finalized around May 2023, is the bare six: name, description, personality, scenario, first_mes, mes_example. Flat and simple, understood everywhere. V2 kept all six but nested them inside a data object and added the extras — creator_notes, system_prompt, post_history_instructions, alternate_greetings, character_book, tags, creator, character_version, extensions — tagging itself with spec: “chara_card_v2.” The nesting wasn't decoration. It exists so an old V1-only editor (ZoltanAI was the classic culprit) opening a V2 card couldn't silently wipe the new fields it didn't understand. V3, the current frontier, adds assets — embedded or linked images and audio, so a card can carry more than one picture and even voice — plus multilingual notes, group greetings, timestamps, and lorebook “decorators.” It marks itself spec: “chara_card_v3.”
Both specs are public and worth bookmarking if you ever build cards seriously: the V2 spec and the V3 spec. They're dense — and that density is exactly what this section's trying to spare you.
What Is a Lorebook (character_book) — and Do You Need One?
A lorebook — stored in a card's character_book field, and called “World Info” inside SillyTavern — is a set of keyword-triggered notes that feed background lore into the conversation only when it's relevant. Mention a place or a name the lorebook is watching for, and the matching entry slips into the prompt; don't, and it stays out of the way. That's how a card can carry far more world detail than the context window could ever hold at once. Most casual readers do not need one — a good first message and personality field go a long way. But it's the quiet reason some cards feel genuinely deep instead of flat.
Where Can I Download Character Cards?
You can download character cards from a handful of community archives — Chub.ai is the largest, with character-tavern.com, aicharactercards.com (AICC), Backyard.ai, and CharacterDB rounding out the mainstream options — plus the big browser front-ends like JanitorAI and SpicyChat that double as card libraries. None of them is the single “official” source for ai character cards, which is part of why finding good cards feels harder than it should.

A note on those size numbers, because honesty matters more than a tidy table: most of these sites do not publish a real inventory count. Chub's the clearest case. Third-party estimates run anywhere from tens of thousands to over two million cards, none of them citing an actual Chub figure, so “the biggest, exact number unknown” is the truthful read.
How to pick comes down to three questions: how much moderation you want (a curated hub like AICC, or a sprawling open archive), how NSFW-tolerant you need it, and whether you'd rather have a pure archive to download from or a front-end that hosts the cards and lets you chat right there. Most people end up using two or three of these at once anyway — one big archive for selection, one browser front-end for convenience — rather than committing to a single home for their cards. Leaning toward Chub specifically? Our Chub / CharacterHub guide covers browsing and making cards there in depth.
Is That Card Site Still Online? Finding Current Mirrors
Some of the card archives people still link to are dead. char-archive (char-archive.evulid.cc) is the clearest example, and it went dark with no working Wayback snapshot. A commenter on r/SillyTavernAI reported in January 2025 that they “checked the Wayback Machine for char-archive.evulid.cc but it doesn't appear to have captured any functional snapshots,” which is about as final as link rot gets — the site's gone and there's no recoverable copy.
This happens because most of these archives are community-run side projects. Someone spins up a card hub, it gets popular, hosting costs or interest dry up, and it quietly disappears — often without anyone updating the Reddit posts and Rentry guides still pointing at it. Few publish status pages, so “is it still up?” is usually a question you answer by clicking and finding out.
The reliable way to find live cards now: check the latest “where to download” threads on r/SillyTavernAI, where people surface working links as old ones rot; look for replacement-style hubs that appear when a beloved archive dies (omenarchive has been floated as a char-archive successor); and lean toward the maintained mainstream sites above. One thing to keep straight — the char-archive card site is unrelated to the SillyTavern-Archive code repo on GitHub, which archives old SillyTavern code branches, not character cards.
How Do You Import a Character Card into SillyTavern, JanitorAI, or SpicyChat?
Importing a character card takes about three clicks on every major front-end — you upload the .png or .json, the front-end reads the embedded fields, and your character's ready to chat. The shape's always the same: point it at your card file, let it parse, start talking. Here's each of the three main front-ends.

SillyTavern
- Open the Characters panel (the card-stack icon in the top bar).
- Click Import Character and select your .png or .json file from your computer.
- SillyTavern reads the embedded fields and loads the character — name, personality, first message, the lot.
- The new character appears in your list, ready to open and chat.
SillyTavern takes both PNG and JSON cards natively; what it will not take is a WEBP, which isn't a card container. Because sillytavern character cards travel as standard PNG or JSON, anything you download from the archives above drops straight in. Starting from zero? Our SillyTavern setup guide walks through installing it and importing your first card end-to-end.
JanitorAI
- Open JanitorAI in your browser and sign in.
- Go to create/import a character and choose the option to upload a card file.
- Select your .png or .json; Janitor parses the fields and fills in the character.
- Save, and the character's live in your browser — no local install required.
JanitorAI's the straightforward, browser-first place to chat with cards, which makes it the easy on-ramp if you don't want to run anything locally. (Want to add visuals to your chats there? See our walkthrough on generating images for your character in Janitor AI.)
SpicyChat
- Sign in to SpicyChat in the browser.
- Head to character creation and pick the import option.
- Upload your .png or .json card — SpicyChat accepts both.
- The fields populate and the character's ready in the catalog.
SpicyChat's a lightweight, easy import path — among the least fiddly ways to get a card running if SillyTavern feels like a lot. Whatever your card files look like coming in, all three of these front-ends read the same core fields, so the experience of pulling a character in is reassuringly similar — and if you want that character to do more than chat, the same file imports at ourdream.ai/character-import.
Will a Card Made for One Front-End Work in Another?
Mostly, yes — a standard V2 PNG or JSON card will move between SillyTavern, JanitorAI, Chub, and SpicyChat, because they all read the same six core fields. That's the entire point of a shared spec: a character isn't trapped in the app it was born in. Where it gets fuzzy is the newer and the niche stuff. V3-only features (multimodal assets) and some front-end-specific extras — certain lorebook behaviors, for instance — may not carry everywhere, and a WEBP still won't import as a card no matter where you take it. The core character always survives the trip; the fancy extras sometimes don't.
How Do You Turn a Character.AI Character into a Card?
You can convert a Character.AI character into a portable card with the CAI Tools browser extension, which exports it to JSON or PNG and auto-fills the name, greeting, and personality. From there it imports into SpicyChat or any other front-end like any normal card. The steps:
- Install the CAI Tools browser extension.
- Open the Character.AI character you want in your browser.
- Use the extension's export option to save it as a JSON or PNG card.
- Import that file into SpicyChat (or wherever) like any other card.
Why does the extension exist at all? Character.AI is a closed platform that does not use portable cards, so there's no native “download this character” button. People want one because the scale of character-creation there is enormous — over 18 million unique user-created characters — and a lot of those personas are worth rescuing into a format you actually own.
How Do You Make or Edit Your Own Card?
To make your own card, you fill in the same six core fields — name, description, personality, scenario, first message, example dialogue — in any card editor, then export it as a PNG or JSON. There's no magic to it; a card's just structured text (plus an optional portrait), and building one is mostly a writing exercise. A rough recipe:
- Define the persona: name, appearance, background, and personality, written as plain description.
- Write a strong first message and a couple of example exchanges — this does more for “feel” than any other field.
- Optionally add a lorebook (character_book) if your character lives in a world with detail worth tracking.
- Export as a PNG (to keep an avatar attached) or a JSON (to keep it readable and editable).
For the building itself, browser editors like ZoltanAI, agnai (Agnaistic), and RisuAI are the common tools for assembling and editing the embedded data. One caution that ties back to the spec story: older V1-only editors can damage a V2 card's newer fields on re-save, so if you're editing a modern card, use an editor that understands V2 — otherwise you risk silently dropping the lorebook and creator notes. For a full rundown of which editors are worth your time, our best tools to make and edit cards roundup compares them properly.
Where Do You Actually Run a Character End-to-End — Chat, Image, and Video?
The place to actually run a character end-to-end — chat, image, and video on the same character — is ourdream.ai, and you can bring a card you already own straight into it instead of assembling a SillyTavern-plus-archive-plus-API stack yourself. That's the honest gap most of this guide circles around: a card on Chub or a JSON on your drive is text waiting for a front-end, and most front-ends only ever run it as text.

ourdream closes that gap with a real import path. The same .png or .json imports at ourdream.ai/character-import — upload the file, it's parsed, gender's auto-detected, appearance attributes are auto-filled, and it loads into the builder. From there you generate images, video, and NSFW with your exact imported character, not just a text reply. The supported list is the broadest in the category: PNG cards from SillyTavern V2 (chara), V3 (ccv3), and Ginger; JSON from Tavern V2/V3, Faraday V4 with its lorebook, Pygmalion and Character.AI exports, Agnaistic with memory books, TextGen WebUI, and a generic fallback. Everything normalizes to CharacterCardV2 and lorebooks map to character_book, so the character you spent time on doesn't lose its depth in translation.


Where a card spec only describes a character, the builder lets you shape one: appearance, 46 personality traits, 18 voices, 135 occupations, and up to 100,000 characters of backstory — the depth a flat personality field can only gesture at. A four-layer memory system (Auto Memory Log, Pinned Memories, Custom Instructions, User Personas) means the character remembers across sessions instead of resetting every time you close the tab. And because chat, image, and video live in one place, your character isn't just text in a front-end; it's got a face and can move. There are no NSFW restrictions, which — for an audience that knows what filter walls cost — is worth stating plainly. ourdream.ai reports 63M+ registered users and 7M+ public user-generated characters as of March 2026.
The honest limitation: it's a destination platform, not a local front-end. People who want full local control over their own models and API endpoints will still prefer assembling SillyTavern themselves — ourdream trades that low-level control for an all-in-one experience, and that's a real tradeoff. The free trial is exactly that — a trial, not an ongoing free tier: 55 one-time dreamcoins, no monthly renewal, no credit card, no card file required. Premium runs $9.99/mo billed annually. You can build and run a character on ourdream.ai without importing anything, but the point is that the card you already own is welcome.
Are PNG Cards Safe — Can They Hide Malware?
Mostly yes — the data inside a PNG card is plain text metadata (a tEXt chunk), not executable code, so the image itself can't run malware on your machine. The real risk isn't image-borne malware; it's untrusted content — odd links or manipulative instructions tucked into a card's text fields. So import from reputable archives, and skim a card's fields before you load it.
FAQ
What's the difference between a PNG character card and a JSON one — which should I export?
→
Both hold the same character data; the only difference is the PNG also carries a portrait while the JSON is text-only. Want the avatar to travel with the character? Export PNG. Prefer a file you can open and read in any text editor, tweak by hand, or keep as a lightweight backup? Export JSON. For most people, PNG is the convenient default and JSON is the tinkerer’s choice.
Are character cards from PNG files safe, or can they hide malware?
→
Mostly yes. The character data sits in the PNG’s text metadata as plain text, not runnable code, so the image can’t execute anything just by being opened. The genuine risk is untrusted content — strange links or pushy instructions written into the card’s fields — not a virus hidden in the pixels. Stick to reputable archives and glance over a card’s text before loading it.
Will a card made for SillyTavern work in JanitorAI or Chub?
→
Yes, usually. A standard V2 PNG or JSON card moves between SillyTavern, JanitorAI, Chub, and SpicyChat because they all read the same core fields. The exceptions are V3-only multimodal assets and a few front-end-specific extras, which may not carry over everywhere — and WEBP, which isn’t a real card container at all.
Is char-archive (or charavault) still online — where do I find cards now?
→
Archives in this space churn constantly — community-run sites pop up, get popular, and vanish when hosting or interest runs out, often without anyone updating the links pointing at them. char-archive (char-archive.evulid.cc) is the textbook case: it went dark, with no working Wayback Machine snapshot to recover. To find live cards now, check the latest “where to download” threads on r/SillyTavernAI, watch for replacement-style hubs like omenarchive that fill the gap when an archive dies, and default to the maintained mainstream sites — Chub, character-tavern, AICC.
How do I turn a Character.AI character into a card?
→
Use the CAI Tools browser extension. Open the Character.AI character, run the extension’s export, and it saves the persona as a JSON or PNG card with the name, greeting, and personality auto-filled. From there it imports into SpicyChat or any front-end like a normal card — handy, since Character.AI itself is closed and has no native card export.
What is a lorebook / character_book, and do I need one?
→
That depends on how deep your character’s world is. A lorebook (stored in character_book, called “World Info” in SillyTavern) is a set of keyword-triggered notes that feed in background lore only when it’s relevant, letting a card hold far more detail than the context window could. If your character is fairly self-contained, skip it. If they live in a sprawling world you keep referencing, it’s what keeps the details consistent.
Where can I download character cards for free?
→
All the mainstream sources are free to browse — Chub.ai, character-tavern.com, aicharactercards.com (AICC), plus JanitorAI and SpicyChat as browser front-ends with huge catalogs. None charge to download or chat with community cards. “Free” is the default state of this ecosystem; the trick is finding good cards, not paying for them.
Final Thoughts: What Does a Portable Character Really Buy You?
Strip away the formats and the specs and the dead archive links, and the whole point of a character card is a single, quietly radical idea: your character isn't trapped in one app. It's a file. It's yours. It travels. The PNG-versus-JSON debate, the V1-to-V3 evolution, the scramble to find which mirror is still online this month — all of it exists in service of that one freedom, the freedom to take a persona you built and run it somewhere new without starting over.
What that portability is for only really lands once you cash it in. A card's a character waiting to happen — six fields and a portrait describing someone who, in most front-ends, never gets further than text on a screen. The interesting question isn't which archive has the most cards or which spec version your file claims to be. It's what you do once the character is genuinely yours to move: carry it from a text front-end to a place where it gets a face, a voice, and motion — and find out how much more there was inside that little file all along.

Related Articles
Browse All →
ourdream vs candy.ai
sweeter than candy?
Read full article →

ourdream vs GirlfriendGPT
Which AI companion actually remembers you?
Read full article →

ourdream vs JuicyChat
Comparing content freedom and image quality.
Read full article →

ourdream vs SpicyChat
How does SpicyChat stack up against ourdream?
Read full article →