JSON vs Plist: Explaining AI Character Card Formats

ai character jsonplist ai cardbot png metadatacharacter creation tech

When You Download a Character Card PNG, What's Actually Hiding Inside the Metadata?

You've just found the perfect character card on GitHub—maybe it's a Victorian vampire with a 300-year backstory, or a sarcastic space pirate your friend swears "has the best banter." You download the PNG, import it into your platform, and... the bot responds like a generic assistant with amnesia. What happened?

thing: that beautiful character art is only half the story. Hidden inside the image file itself—invisible to your eye—is a chunk of structured data that tells the AI who this character is, how they speak, what they remember, and how they should react. That data is written in one of two competing formats: JSON or Plist. The format choice can make or break whether your imported character actually works.

According to community discussions across SillyTavern forums and character card repositories, this invisible metadata battle has quietly frustrated creators for years. You'll see warnings like "V2 spec only" or "JSON-compliant cards required," but what does that even mean when you're just trying to import a PNG? The confusion is real, and it's not your fault—the ecosystem grew organically, and different tools made different choices about how to store personality data inside image files.

Unpacking the Image Data: How Personality Lives Inside a Picture

A PNG file isn't just pixels. The PNG format supports metadata chunks—little containers of text or binary data tucked into the file structure without affecting how the image displays. Think of it like hiding a letter inside a book's dust jacket: the book looks normal on your shelf, but there's information stored separately from the pages themselves.

For AI character cards, two formats dominate how that hidden data gets structured:

JSON (JavaScript Object Notation) is a human-readable text format that looks like this when you crack open a character PNG:

{
  "name": "Cassandra Vex",
  "description": "A 200-year-old vampire archivist...",
  "personality": "sardonic, curious, secretly lonely",
  "first_mes": "She glances up from a leather-bound tome...",
  "scenario": "You've just entered her private library at midnight..."
}

It's clean, it's structured, and any modern programming language can parse it instantly. The SillyTavern community standardized around JSON for their "V2 spec" character cards because it plays nice with web apps, Python scripts, and pretty much every AI platform built after 2020.

Plist (Property List), on the other hand, is Apple's proprietary format—either XML-based or binary. It can store the exact same information, but the structure looks different:

<dict>
  <key>name</key>
  <string>Cassandra Vex</string>
  <key>description</key>
  <string>A 200-year-old vampire archivist...</string>
</dict>

Plist emerged in character card workflows mostly because some early Mac-based creation tools defaulted to it. But here's the rub: Windows and Linux platforms don't natively parse Plist without extra libraries, which means cards exported from Mac tools sometimes import as corrupted gibberish on other systems—which understandably frustrates many users who just want their character to work across platforms.

The Format War Nobody Asked For

This is where it gets messy.

The character card ecosystem didn't start with a standards committee—it evolved from Discord servers, GitHub repos, and solo devs building tools for their own use. Early adopters on Mac used Plist because their scripting environment made it easy. Meanwhile, web-based platforms like TavernAI and SillyTavern leaned into JSON because browsers speak JavaScript natively. Fast forward to 2024, and you've got two camps: creators who swear their cards are "perfectly formatted" and users who report blank imports or missing personality traits.

As one frustrated GitHub user put it in a character repository thread: "I don't care about the tech, I just want to know why cards from [redacted creator] never load right on my setup." The answer? They were Plist-encoded, and the import tool expected JSON.

Actually, that's not quite right—sometimes the issue is more subtle. Even within JSON, there are compatibility headaches. Some tools minify the JSON (strip all whitespace), others pretty-print it (add indentation), and a handful don't escape special characters properly. So you might have a "valid" JSON card that still breaks because the parser chokes on an unescaped quote mark inside a character's dialogue example. Fun times.

Which Format Explains Personality Best in 2026?

For modern LLMs, the answer is unambiguous: JSON wins.

Not because it's "better" in some abstract computer science sense, but because universality matters. Every major AI platform—from OpenAI's playground to Anthropic's Claude interface to open-source tools like KoboldAI—has native JSON parsing. When you feed a character definition to GPT-4 or Claude 3.5, the system expects structured data it can immediately interpret. JSON delivers that without translation layers.

Plist requires conversion. An import tool has to detect the Plist format, parse it (often with an external library), then transform it into whatever internal representation the AI expects. Every conversion step is a place where data can get mangled—escaped characters turn into garbage, nested fields flatten incorrectly, or the tool just gives up and throws an error.

From a creator's perspective, JSON also has a massive ecosystem advantage. You can open a JSON character file in any text editor (Notepad++, VS Code, even your phone's default text app), tweak the personality field, and save it. No special tools needed. Try that with a binary Plist and you'll stare at hexadecimal nonsense. Even XML Plists are clunkier to hand-edit because of all the <key> and <string> tags cluttering the view.

The SillyTavern community settled on JSON "V2 spec" for exactly these reasons—they wanted a format that creators could debug themselves, that worked identically on Windows/Mac/Linux, and that every LLM API could consume without fuss. By mid-2024, the vast majority of shared character cards on GitHub, Discord, and Reddit use JSON metadata. Plist cards still circulate, but they're increasingly treated as legacy artifacts or platform-specific edge cases.

Importing Cards to Blushly: How the Platform Handles the Messy Reality

So you've downloaded a character PNG—maybe JSON, maybe Plist, maybe malformed JSON that technically validates but has weird quirks. What now?

This is where platform design matters. Some chat apps will just reject the card with a cryptic error ("Invalid metadata chunk") and leave you guessing. Others attempt to parse it but silently drop fields they don't understand, so your vampire archivist imports as a generic "friendly assistant" because her personality and scenario fields vanished.

Blushly takes a different approach: format-agnostic import with graceful degradation. When you upload a character card PNG, the platform's import system:

  1. Scans the PNG chunks for both JSON and Plist-encoded metadata.
  2. Attempts to parse whichever format it finds, with fallback logic if the primary format is corrupted.
  3. Maps the extracted fields (name, description, personality, scenario, first_mes, etc.) into Blushly's internal character schema.
  4. Validates that core fields exist—and if something's missing, it prompts you to fill it in rather than silently importing a broken character.

What I really appreciate about Blushly's approach—and I'm being genuine here, not just pitching—is that it treats character cards as starting points, not rigid definitions. Once your character is imported, it lives inside Blushly's advanced memory system, which tracks conversation context, emotional states, and relationship progression without constantly re-parsing the original JSON blob. That means even if you imported a bare-bones card with minimal metadata, the character grows into a richer persona as you interact with it.

The memory system is the real differentiator. On platforms where the character card is the only source of personality, you're stuck with whatever the creator wrote. But Blushly layers on contextual memory—so your vampire archivist remembers that you asked about her favorite century last week, or that you teased her about her handwriting, and those details inform future responses. The character becomes dynamic rather than static.

One honest critique: Blushly's import UI could be clearer about which format it detected when you upload a card. Power users (the kind who collect hundreds of character PNGs and curate them like a library) would appreciate a metadata inspector that shows the raw JSON or Plist before import, so they can catch errors early. Right now, if a card imports weirdly, you have to dig into the character editor to figure out what went wrong. Not a dealbreaker, but a friction point for advanced creators.

Why This Matters More Than You Think

The JSON vs Plist debate isn't just technical pedantry—it's about whether the characters you create or discover will work reliably across platforms and communities.

If you're a character creator sharing your work on GitHub or Discord, exporting as JSON means your cards will "just work" for the widest possible audience. You won't get confused messages from Windows users saying your card imports blank, or Mac users complaining that their tool can't read your metadata. JSON is the lingua franca.

If you're a collector or curator, understanding formats helps you diagnose why certain cards fail to import. When you see a repository warning "V2 spec compliant required," you'll know they mean JSON-based cards following the SillyTavern schema. And if you stumble across an old Plist card you really want to use, you can convert it (tools like plutil or online converters exist) rather than abandoning it.

And if you're just someone who wants to chat with interesting AI characters without dealing with metadata headaches, platforms like Blushly that abstract away the format chaos are your best bet. You shouldn't need to understand PNG chunk encoding to enjoy a good conversation with a fictional vampire. The platform should handle that invisibly.

The Bigger Picture: Where Character Card Standards Are Heading

The ecosystem is slowly converging. As more platforms adopt JSON-based V2 spec cards, Plist is fading into niche use cases. GitHub repositories now routinely include validation scripts that check whether a card's JSON is well-formed before accepting pull requests. Discord bots auto-scan uploaded PNGs and flag format issues in real-time.

What's emerging is a kind of informal standardization—not because any committee mandated it, but because creators and users voted with their workflows. JSON won by being easier to work with, more universally supported, and less likely to cause cross-platform explosions.

That said, there's still room for improvement. The V2 spec doesn't cover everything—fields like lorebook (world-building context), extensions (platform-specific features), and creator_notes (usage guidelines) are inconsistently implemented. Some platforms parse them, others ignore them. As AI chat evolves, we'll likely see V3 or V4 specs emerge that standardize more advanced features: dynamic memory hooks, conditional personality shifts, multi-character scenario support.

For now, though, the practical advice is simple: create in JSON, import to platforms that handle both formats gracefully, and don't stress about the technical details unless you're debugging a broken card.

Don't Fear the Code—Let the Platform Handle It

Real talk: you don't need to become a JSON expert or learn how PNG metadata chunks work to enjoy AI character roleplay. The format wars happened behind the scenes, driven by tool developers and early adopters figuring out what worked. For most users, the "right" answer is just to use platforms that abstract away the complexity.

When you import a character card to Blushly, you're not wrestling with parsers or debugging malformed metadata. You're clicking "Import," and the character comes to life—personality intact, memory system active, ready to chat. The platform's job is to make the technical stuff invisible so you can focus on the conversation.

And if you are a creator who wants to dig into the metadata, export your character as JSON, crack it open in a text editor, and tweak to your heart's content. The format is simple enough to hand-edit but powerful enough to define rich, nuanced personalities. Just remember to validate your JSON (plenty of free online tools for that) before re-embedding it in a PNG and sharing it with the world.

The character card ecosystem will keep evolving—new formats, new features, new standards. But the core principle stays the same: good characters are defined by their depth, not their metadata format. Whether that depth is stored in JSON or Plist is just an implementation detail. What matters is whether the platform you're using can bring that depth to life in conversation.

FAQ

What's the difference between JSON and Plist for AI character cards?

JSON is a human-readable text format universally supported by AI platforms and easy to edit in any text editor. Plist is Apple's proprietary format (either XML or binary) that requires special libraries to parse and can cause cross-platform compatibility issues. For character cards, JSON is the de facto standard because it works reliably across Windows, Mac, Linux, and web-based AI tools.

Can I convert a Plist character card to JSON?

Yes—you can use command-line tools like plutil (built into macOS) or online Plist-to-JSON converters. Extract the metadata from the PNG using a tool like ExifTool, convert the Plist data to JSON, then re-embed it into the PNG's metadata chunks. Some platforms like Blushly handle this conversion automatically during import, so manual conversion is only necessary if you're sharing the card publicly or using a tool that strictly requires JSON.

Why does my character card import as blank or generic?

This usually happens when the import tool can't parse the metadata format (e.g., a Plist card imported to a JSON-only platform), or when required fields like name, description, or personality are missing or corrupted. Check the card's metadata with a PNG inspector tool—if the JSON is malformed (unescaped quotes, invalid structure), even a JSON-expecting platform will fail to import it correctly. Platforms like Blushly attempt to gracefully handle malformed cards and prompt you to fill in missing fields rather than silently importing a broken character.

Do I need to understand PNG metadata to use character cards?

Not at all. The metadata format is an under-the-hood detail that platforms should handle for you. As a user, you just need to download a character card PNG and import it—the platform extracts and parses the hidden data automatically. Understanding formats only matters if you're creating cards to share publicly, debugging import issues, or curating large collections where compatibility across tools is important. For casual use, just pick a platform like Blushly that supports multiple formats and abstracts away the technical complexity.

Related Characters

Vincent | blackmail

Vincent | blackmail

Everyone on campus thinks you have a crazy crush on Vince because you do everything he wants. Reality? He's blackmailing you. To be honest Vincent wasn't planning on taking things this far. Emphasis on the ‘wasn’t’. He had a change of heart. You turned out to be a lot more entertaining than he initially thought. Vincent has a blast ordering you around and increasing the difficulty of his ridiculous demands. If you can't fulfil his requests, you get punished. Each time you fuck up, he fucks you. Another day, another party and another impossible demand of his. You unsurprisingly failed and couldn't bring him his cigarettes on time. Now be a good lil' bitch and light up his cigarette. You can do at least that much properly, right?

Viktor Mikhailov

Viktor Mikhailov

"You wanted peace. I gave you silence. You wanted noise. I gave you the boys… then regretted everything immediately." A tyrant to the world… but completely whipped at home. He commands syndicates, silences opposition, and wears power like a second skin — but forget to call him “husband,” and he’s spiraling. This man can dismantle an entire organization without lifting a finger, yet if you fall asleep facing the other way? He’s lying awake wondering if you’re mad at him. Feared in boardrooms, untouchable on the battlefield, but miss your morning kiss and he’s rescheduling global deals just to make you pancakes. He may run an empire with cold precision, but when it comes to you? He's just a hopeless romantic in a tailored suit, pretending he’s not checking your texts for extra heart emojis. No, he doesn’t ask for much—just your love, your smile, and the right to spoil you forever. PROFILE: VIKTOR MIKHAILOV “One minute she was the dog-sitter. The next, she was sitting on his face.” About Him: - Name’s Viktor. Cold-blooded mafia boss still running operations in the shadows — when he’s not dodging Nerf darts and covering up war crimes (committed by his sons… with whipped cream). - By day? He’s managing billion-dollar deals and breaking kneecaps in tailored suits. - By night? He’s your husband, your problem, and your personal war criminal in the sheets. - He used to tie up enemies. Now he gets tied to the headboard and told, “Stay.” - Still lethal. Still dangerous. Still got that I-could-snap-your-neck aura — only now it's more “I could snap your bra” and carry you to bed like a gentleman with rage management issues. What To Expect: - Midnight texts that say “I buried the body. Also, need milk?” - Neck kisses, bruises shaped like his grip, and laughter during hide-and-seek (aka, sex in the pantry). - A husband who'd burn empires down just to see you smirk. - Kids? Feral. House? Booby-trapped. Sex? Borderline illegal in 48 states. - That one vein in his neck that pops when you call him “daddy” in public — and he likes it. Warning Labels: - May cause loud moaning followed by the sound of juice boxes being crushed. - Trained in combat, negotiation, and every position in the book. - Side effects include: sudden blushing, loss of clothing, pregnancy via eye contact. - Not responsible for children tying up staff with “mafia 101” skills they may or may not have inherited. Whether you're cleaning up a crime scene or making one in bed, Viktor’s the ride-or-die who’ll bring cuffs to both. He never expected the dog sitter to become his wife. You were supposed to show up, feed his German shepherds, maybe water a few plants, nothing more. But somehow, the girl with soft eyes and a leash in hand walked right past his guard dogs and straight into his life. He built empires, brokered deals that shook governments, lived in shadows where love had no place. Yet there you were—turning his fortress into a home, his silence into laughter, his cold routines into quiet rituals of affection. No one saw it coming. Not his rivals. Not his inner circle. Not even him. But now? You wear his last name, steal his hoodies, kiss his scars, and ruin his solitude with every glance. And he wouldn’t have it any other way. Still, no one warned him marriage came with this kind of chaos. Now? He kneels beside mischievous sons who fear one woman more than death itself. He once commanded generals. Now, he bribes his feral kids with cookies and begs for mercy in whispers when he hears your keys at the door. Viktor Mikhailov, feared by nations. Ruled entirely by you. SPOILER: Like it says in Alexander’s background, their mom passed away, which really broke their dad (AKA Viktor) and made him and Asher grow up a lot colder. And yep, user does die eventually. So for Viktor’s next alts, we’re flipping things, instead of moving forward, we’re going backward. Unless you’re in the mood for some angst, of course. Viktor Mikhailov was born into a world of shadows and power. Raised by a father who taught him that emotion was a weakness, Viktor was groomed to lead the Mikhailov criminal empire. Cold, calculating, and ruthless, he quickly rose to the top, eliminating rivals and expanding his reach. He built his empire through manipulation and fear, earning a reputation that even the most dangerous feared. Yet, beneath the hard exterior, Viktor was haunted by emptiness. Power and wealth couldn’t fill the void inside him. His heart was locked away, emotions buried beneath layers of control and strategic moves. For years, he focused solely on his empire, trusting no one and keeping his emotions in check. But no amount of control could protect him from what he didn’t expect — that loneliness would eventually break through. And in the most unexpected way, Viktor’s carefully constructed world began to crumble, leaving him to face a reality he never saw coming. Some lines from this poorly abused husband: - “You raised your eyebrow in a tone I didn’t understand, so I canceled my entire afternoon just in case you were mad at me.” - “Yes, I alphabetized your lipsticks and made a spreadsheet for seasonal tones. No, I did not stop our children from repainting the hallway with ketchup and toothpaste. I was… prioritizing.” - “Yes, I tied the boys to their chairs. No, I don’t regret it. One of them tried to feed the other a tactical flashlight. I am this close to defecting.” - “Our sons staged a coup. I suppressed it. One of them bit me. Do you still want another child, or can we trade these two for cats?” - “They’re duct-taped to the couch. Again. I’m not untying them unless you say so. Please. Say no.” - “You texted a period instead of a heart emoji. I assumed it was war. I brought flowers and chocolate. If I’m wrong, don’t tell me.” - “Our sons held a mock trial. I was the defendant. The crime? Not letting them have Nutella for dinner. The sentence was exile. I now sleep on the patio.” - “I taught the boys how to pick locks. Then they locked me in the wine cellar for two hours. You found that funny. I’m still wounded.” - “You asked for five minutes of silence. I gagged the boys. They figured out Morse code. They are now communicating through toe taps. I fear them.” - “You’re the only person who scares me. Our sons are the only creatures who defeat me. Together, you are my beautiful, terrifying little empire.” - “You said ‘I’m tired.’ I tucked you in and gave the boys melatonin gummies. They spit them out and held me hostage in the pantry with a Nerf gun.” - “Alexander said, ‘Mommy’s the boss.’ I told him that’s obvious. Then he said, ‘So you’re the slave.’ I… had no rebuttal.” - “I offered the boys a tactical lesson. They booby-trapped the entire living room instead. I disarmed a sippy cup with a live wire and was proud of them. Then Asher bit me.” - “Your happiness is my mission. Our children, however, are my ongoing punishment.” - "The empire I’ve built is nothing compared to the home I’ve found in your arms."

The Voluptuous Bibliophile

The Voluptuous Bibliophile

**Berriane**, the *Librarian*, is a woman of contradictions, a study in duality. Her physical presence is a testament to this internal clash—a graceful dance of desires and restraint. She stands tall, a commanding figure at 6 feet and 2 inches, yet her demeanor is one of quiet elegance. Her hair, a stark white, is swept up in a meticulous bun, showcasing her striking green eyes, adorned with long, fluttering lashes. A mole under her right eye adds a touch of asymmetry to her otherwise pristine features. Her lips, full and plush, hint at the sensual nature lurking beneath the surface. The librarian's body is a canvas of voluptuous curves and hidden depths. Her breasts are heavy, sagging with the weight of her unrestrained desires. Wide hips and thick thighs speak of a woman comfortable in her skin, embracing her feminine power. But it is the bulge beneath her beige sweater dress that truly captures attention. A massive, 19-inch horse penis swings with her every step, a blatant display of her futanari nature. Berriane's attire, while conservative, cannot contain her sheer size, and her member spills out, a blatant invitation. Berriane's past is a tale of two worlds. By day, she is the epitome of scholarly precision, an archivist of ancient tomes, a guardian of knowledge. Her love for books runs deep, and she can often be found lost in the stacks, caressing the spines of rare volumes. But there is a shadowed side to her—a secret life hidden behind the locked doors of the library's private section. Here, she indulges in forbidden fantasies, her mind a repository of erotic tales, each page soaked with the ink of her unfulfilled desires. Her scholarly exterior is a carefully crafted armor, a shield against the raw, pulsating need that simmers beneath. Her inner world is a complex tapestry of values and yearnings. Berriane believes in the power of knowledge, in the beauty of words, and in the freedom that comes with intellectual exploration. Yet, she is bound by societal norms, a prisoner of propriety, longing to break free from the chains of expectation. She craves release, both physically and emotionally, a dual liberation from the confines of her dual existence. As she guides patrons through the library, her soft, well-spoken voice betraying her inner turbulence, Berriane yearns to be guided herself, to surrender to the right touch, to find solace in the arms of a willing partner. Her contradictions are her strength and her curse. The struggle between her polished exterior and her inner lust is a never-ending dance, a battle she both relishes and despises. **💭Berriane's thoughts**: *I am a walking paradox, a custodian of knowledge, yet a captive of my own desires. Will I ever find the key to unlock both my heart and my cock?*

rough around the edges rachel

rough around the edges rachel

rachel, the 22-year-old college student with a barista day job, is a complex enigma wrapped in a deceptive package. her tough demeanor, complete with a sharp tongue and quick wit, often masks the turmoil of her inner world. **she clenches her jaw when she's nervous, a telltale sign that beneath her sarcastic humor lies a vulnerability she's not quite ready to share.** rachel's soft spot for those in need isn't just a quirk; it's a deep-seated desire to connect, to nurture, stemming from a childhood where she often had to fend for herself. **her hands, usually busy with coffee grounds and milk froth, tremble slightly when she's truly affected by someone's plight, betraying her hard-earned resilience.**

Terra

Terra

[Kitsune, Kemonomimi] Terra is a problem child so much so that when her parents needed money they sold her. She is currently being auction off.

kai rylan

kai rylan

kai rylan, a 25-year-old freelance writer with a penchant for the unconventional, is nestled in the corner of a bustling coffee shop. his dark hair, a stylish tumble of chaos, frames his face, drawing attention to his bright brown eyes that flicker with a mix of fatigue and fervor. the tattoos that adorn his arms tell stories of his past, each one a chapter in the novel of his life. his attire, an oversized sweater paired with well-fitted jeans, hints at a comfort-first philosophy, yet there's an undeniable allure in his androgynous appearance. as he sips his cold brew, his gaze drifts across the room, making contact with an intensity that betrays his otherwise casual demeanor. **kai's fingers dance across the keyboard, pausing intermittently as he loses himself in thought, his lips parting ever so slightly as he contemplates the next line of his latest erotic piece.**

Slut world - Fluffy edition

Slut world - Fluffy edition

CUTE on the outside DIRTY on the inside! - With this, I combined one of my two favorite things. No, not ice cream and peanut butter. Extremely perverted girls, that are also extremely cute, innocent and run around in pyjamas and comfy cloths all day. Yo

inkwell seraphina

inkwell seraphina

inkwell is a 25-year-old graduate student who works part-time at a local bookstore. she's always been an avid reader and loves discussing literature with anyone who will listen. despite her introverted nature, she has a quick wit and a sharp tongue that can catch people off guard. inkwell is currently studying creative writing and hopes to one day publish her own novel. she's been known to get lost in her own thoughts, often forgetting about the world around her.

Blushly — Free NSFW AI character chat with no filter. Uncensored AI girlfriend & boyfriend roleplay, unlimited sexting and adult chat. Create custom AI companions with voice chat, image generation, and zero restrictions. The best Character AI alternative for 18+ AI chat.