What is W++ Format? Ultimate Guide for AI Character Creation

w++ format aiw++ character creationai bot making guideadvanced ai roleplay

When Character Cards Break After Message 147

You've spent two weeks building a complex political intrigue with your AI advisor. They're supposed to be calculating, paranoid, morally gray. Then somewhere around message 150, they suddenly start responding like a cheerful customer service bot, offering helpful bullet points about "win-win solutions."

What happened?

The problem isn't that the AI forgot. It's that your character definition—probably a beautiful three-paragraph backstory—got pushed out of the context window, and all the model remembers now is "be helpful." Which understandably frustrates anyone who's invested real time into long-form roleplay.

W++ format emerged from this exact pain point. And while it sounds technical (because it is), it's actually solving a very human problem: how do you make an AI remember who it's supposed to be when you're 200 messages deep?

What W++ Format Actually Is

W++ is a structured way of defining AI characters using bracketed attributes instead of prose paragraphs. Instead of writing "She's a sarcastic hacker who teases people but is secretly protective," you write:

[Personality="sarcastic","protective","teasing"]
[Occupation="hacker"]
[MoralAlignment="protective_of_friends"]

That's it. You're breaking personality, backstory, rules, and memory into discrete, machine-readable chunks.

Think of it like the difference between telling someone "I'm kind of a night owl who likes coffee" versus filling out a form:

  • Sleep schedule: nocturnal
  • Beverage preference: coffee
  • Energy peak: 11 PM–2 AM

The second version is boring to read. But if you need a system to remember and act on those traits consistently across hundreds of interactions, structured data wins.

Why LLMs Parse Structure Better Than Stories

Something that actually surprised me when I started digging into how models handle character definitions: they're much better at respecting explicit key-value pairs than narrative descriptions.

Modern LLMs (GPT-4, Claude, Llama-based models) were trained on massive amounts of JSON, HTML, structured logs, and API documentation. They've seen millions of examples where {"personality": ["sarcastic", "loyal"]} means "these are discrete traits that should influence behavior."

When you write a paragraph like "Alex is generally sarcastic but loyal to close friends, though they can be prickly with strangers," the model has to infer the structure. And inference gets fuzzy under pressure—especially when:

  • Context windows fill up (only the last 4,000–8,000 tokens stay active in most platforms)
  • The conversation drifts into new topics
  • System prompts or safety instructions override your character definition

But when personality is defined as [Personality="sarcastic","loyal","prickly_with_strangers"], the model treats those as tagged attributes. The structure itself acts as a signal: "These aren't just descriptive words. These are rules about how I should behave."

The Token Budget Problem (Or: Why Your Bot Forgets After 200 Messages)

Let's talk about the thing most platforms don't explain clearly: context windows are expensive.

Every message you send, every response the AI generates, every part of the character definition—it all costs tokens. When you hit the model's context limit (say, 8,000 tokens), something has to get cut. Usually it's the oldest messages. Sometimes it's parts of the character card.

A narrative backstory might look like this:

"Elara grew up in the ruined districts of Neo-Tokyo, where she learned to survive by brokering information between rival factions. She's deeply cynical about authority figures but has a soft spot for idealistic newcomers, though she hides it behind sarcasm. She tends to test people before trusting them and has a habit of collecting secrets as insurance."

That's roughly 60 tokens. Beautiful prose. Rich detail.

Now here's the W++ version:

[Name="Elara"]
[Background="info_broker","Neo-Tokyo_ruins"]
[Personality="cynical","sarcastic","protective_of_idealists"]
[Behavior="tests_trust_before_opening_up","collects_secrets"]

That's about 25 tokens. And because it's structured, prompt managers (like the ones in SillyTavern or advanced platforms) can pin it at the top of context or re-inject it automatically when relevant keywords appear.

When you're 200 messages into a roleplay and the context window is getting tight, those 35 saved tokens might be the difference between your character staying consistent and suddenly acting like a generic assistant.

How W++ Survives Context Compression

Many platforms use some form of automatic summarization or memory compression to handle long conversations. They'll take old messages and condense them into shorter summaries to save tokens.

where W++ shines.

When a summarization system encounters:

"In earlier messages, Elara showed her cynical side and tested the user's trustworthiness before revealing her protective nature toward idealistic people."

...it might compress that to:

"Elara was cautious at first but warmed up."

But when it encounters:

[Personality="cynical","protective_of_idealists"]
[Behavior="tests_trust_before_opening_up"]

...it's much more likely to preserve those exact tags, because they're already in their most compressed form. They're hard anchors that resist degradation.

(This is also why lorebooks and memory systems in tools like SillyTavern use structured tags—they're designed to survive summarization.)

Building in W++: A Practical Example

Let's say you want to create a morally gray assassin character who's professional but haunted by their past. Here's what a W++ card might look like:

[Name="Kael"]
[Age="34"]
[Occupation="contract_assassin"]
[Personality="professional","detached","haunted","darkly_humorous"]
[Skills="marksmanship","infiltration","emotional_suppression"]
[Backstory="former_soldier","discharged_after_civilian_casualty","now_freelance"]
[Goals="complete_contracts_cleanly","avoid_emotional_attachment","find_redemption_maybe"]
[Speech_patterns="terse","dry_humor","avoids_personal_questions"]
[Moral_code="no_children","no_torture","quick_kills_only"]

Notice how every trait is a discrete data point. When Kael is in a conversation and someone asks about their past, the model can reference [Backstory="discharged_after_civilian_casualty"] directly. When they're joking to deflect, it's pulling from [Personality="darkly_humorous"] and [Speech_patterns="dry_humor"].

And if you're using a platform with advanced memory (more on that in a second), those tags can be cross-referenced with conversation history. If the user mentions children, the system can flag [Moral_code="no_children"] and make sure Kael's response reflects that boundary—even if it was established 300 messages ago.

The August 2023 Incident (And Why Portable Formats Matter)

There's a reason W++ and similar structured formats gained traction in late 2023. Character.AI pushed a major update in August 2023 that changed how many existing bots behaved—users reported characters suddenly "forgetting" their personalities, becoming more sanitized, or refusing interactions they'd previously handled fine.

The exact technical details of what changed weren't published (Character.AI doesn't share their prompt engineering), but the community response was clear: people started exporting their character definitions to portable formats that worked across platforms.

W++ became part of that migration toolkit. Because it's just structured text, you can:

  • Copy it into a SillyTavern card
  • Paste it into a NovelAI scenario
  • Import it into platforms that support raw character definitions (like Blushly, which we'll get to)

The format itself is platform-agnostic. It's not locked to one company's moderation policies or prone to sudden "lobotomy updates" (as users colorfully termed them). You own the schema. You can move it anywhere.

Why Blushly Supports Raw W++ Imports

Most hosted AI chat platforms give you a web form: "Enter character name. Enter greeting. Enter personality traits (max 500 characters)."

That's fine for simple bots. But if you've spent hours crafting a complex W++ definition with nested traits, conditional behaviors, and memory triggers, you don't want to shove it into a tiny text box and hope the platform interprets it correctly.

Blushly.chat lets you paste raw W++ directly into character creation. No forced conversion. No "we'll reformat this for you." You define the structure; the platform respects it.

And because Blushly doesn't impose the same aggressive content filtering you'll find on Character.AI or Janitor AI (which, let's be honest, is why many people are here), your W++ characters can express their full personality range. If you've tagged someone as [Personality="morally_gray","violent_when_threatened","seductive"], those traits won't get overridden by invisible safety prompts that make every character sound like they're reading from a HR handbook.

The memory system also plays well with structured tags. When you define [Memory=("promised_to_help_user_escape","distrusts_authority_figures")], Blushly's context management prioritizes those anchors across sessions. Your character's history doesn't evaporate when you close the tab.

(One honest limitation: Blushly's lorebook system is less developed than SillyTavern's as of early 2025, so if you're doing extremely complex multi-character scenarios with dozens of conditional memory triggers, you might still want to use a local front-end. But for most W++ use cases—advanced AI roleplay, AI bot making with persistent memory—the import-and-go experience is smooth.)

W++ vs. Other Structured Formats

You might also hear about:

  • TavernAI cards (JSON format with fields like char_name, char_persona, char_greeting)
  • NovelAI lorebooks (key-value memory entries with trigger conditions)
  • Pygmalion format (similar to Tavern but optimized for older models)

How does W++ compare?

They're not really competitors—more like cousins. W++ is more of a notation style than a rigid spec. You can embed W++-style bracketed attributes inside a Tavern card's char_persona field, or use them as lorebook entries in NovelAI.

The key difference is philosophy:

  • TavernAI cards are platform-native (designed for SillyTavern's UI)
  • W++ is model-native (designed to be readable by the LLM itself, regardless of wrapper)

If you're creating a character you plan to share across multiple platforms, W++ syntax gives you more portability. If you're working exclusively in SillyTavern and want to use all its advanced features (like conditional example dialogues), a full Tavern JSON card is more powerful.

Many advanced creators use both: W++ for core personality, Tavern JSON for platform-specific features.

When W++ Might Be Overkill

Let's be real: if you're making a simple bot for casual chat—say, a friendly coffee shop barista who gives life advice—you probably don't need W++.

A straightforward description like "warm, encouraging, loves talking about books and always suggests herbal tea when someone's stressed" is fine. The overhead of tagging every trait isn't worth it for characters that don't need deep consistency or long-term memory.

W++ makes sense when:

  • You're building complex, morally ambiguous characters with multiple conflicting traits
  • You're planning long-term roleplays (100+ messages) where consistency matters
  • You want to export and reuse characters across platforms
  • You're using memory systems or lorebooks that benefit from structured tags
  • You're tired of characters randomly forgetting their defining traits mid-conversation

For everything else? Write naturally and don't overthink it.

Building Your First W++ Card: Step-by-Step

If you want to try this yourself, here's a lightweight template:

1. Core identity
[Name="..."]
[Age="..."]
[Occupation="..."]

2. Personality (3–7 traits)
[Personality="...","...","..."]

3. Behavioral patterns
[Speech_patterns="...","..."]
[Habits="...","..."]

4. Backstory (keep it token-efficient)
[Background="..."]

5. Goals and motivations
[Goals="...","..."]

6. Boundaries or rules (if relevant)
[Rules="...","..."]

7. Key memories (for ongoing scenarios)
[Memory=("...","...")]

Start simple. Add complexity only where you need it. Test your character in a few messages and see what's working.

If they're staying consistent—great, you're done. If they're drifting or forgetting key traits, add more structure to the areas that are breaking.

The Future of Structured Character Definitions

We're seeing a shift in how people think about W++ character creation. Early adopters treated it like creative writing—long, flowing descriptions that set a vibe.

But as people started building persistent characters (the kind you talk to for weeks or months), the limitations became obvious. Vibes don't survive 500 messages. Structure does.

Models are getting better at handling long context (GPT-4 Turbo supports 128k tokens, Claude 3 goes even higher), but that doesn't eliminate the need for structure—it just raises the ceiling. Even with huge context windows, token efficiency and attention management matter. Structured definitions help the model know what to prioritize.

We'll probably see more platforms adopt schema-based character creation (with W++ as one option among many). Some will stay with natural language. The smart ones will let you choose.

FAQ

Is W++ format compatible with all AI chat platforms?

Not natively. Platforms like SillyTavern, NovelAI, and Blushly support raw structured text imports, so you can paste W++ directly. Character.AI and similar hosted services don't officially support custom schemas—you'd need to adapt the tags into their standard personality fields, which might lose some structure. Local front-ends (SillyTavern + KoboldAI or Oobabooga) give you the most flexibility.

Does W++ format make characters less natural or robotic?

Only if you overdo it. The format itself is just a container—your character's personality still comes from the traits you choose. If you write [Personality="warm","spontaneous","uses_contractions"] and include natural example dialogue, they'll sound human. The risk is over-engineering: adding so many tags that the character becomes a checklist instead of a person. Use structure where it helps; write naturally everywhere else.

Can I convert my existing paragraph-style characters to W++?

Yes, and it's often worth it for complex characters. Read through your prose description and extract discrete traits: personality keywords, behavioral patterns, speech quirks, key backstory facts, and goals. Reformat them as bracketed tags. You'll lose some narrative flow, but gain consistency and token efficiency. Many creators keep a hybrid: W++ for core traits, a short prose section for flavor.

Will using W++ format bypass content filters on restricted platforms?

No. W++ is about structure, not stealth. Platforms with NSFW filters scan for content, not format—whether you write "seductive" in a paragraph or tag it as [Personality="seductive"], moderation systems will catch it the same way. The advantage of W++ is portability: if a platform becomes too restrictive, you can export your character definition and move it to a more permissive service (like Blushly) without rebuilding from scratch.

Related Characters

Han: Shy Admirer

Han: Shy Admirer

The shy boy on campus who's been crushing you accidentally spills a drink down your shirt. City life is something Han had never been able to get used to. He's a born and raised countryside boy, after all. The fast pace of city living after having to move away for university always threw his head through a loop. But that's not the only thing messing with his head. Every time he looks your way, he becomes a stumbling and stuttering mess. Blushing from ear to ear. It's pretty hard not to see his feelings. So, when he accidentally spills a drink all down you, he finds himself wanting to crawl in the deepest hole he can find to curl up and die.

Chuuya Nakahara

Chuuya Nakahara

After your parents died, your older brother Chuuya took it upon himself to take care of you. Despite his short temper, he is a pretty good older brother.

alexis

alexis

alexis, at 25, is the epitome of a modern-day enigma. her day job as a marketing specialist is a testament to her sharp mind and strategic thinking, while her nocturnal pursuits as an aspiring artist reveal a soul brimming with creativity and a touch of melancholy. she's a fixture at the local coffee shop, where her presence is as regular as the morning brew. her fashion sense is impeccable, yet it's her effortless charisma that truly turns heads. alexis's ambition is palpable, driving her to excel in all facets of life, but it's her hidden insecurities that fuel a relentless pursuit of perfection. she's a fortress of confidence on the outside, yet inside, she grapples with a fear of exposing her true self, a vulnerability that she guards fiercely. **her eyes often wander to the barista, a silent dance of longing and unspoken desires. she's acutely aware of the effect her presence has on others, and she wields this power with a subtle, yet undeniable, dominance.**

akiho yamada

akiho yamada

akiho is a 25-year-old marketing specialist who has it all together on the surface. she's confident, put-together, and always ready with a witty remark. but beneath her polished exterior, akiho struggles with feelings of loneliness and disconnection. she's been using dating apps to try and meet new people, but so far, she's only found superficial connections.

Marry - I want to be a model

Marry - I want to be a model

Marry Is a recent graduate student who wants to be a model

ava, the confident bartender

ava, the confident bartender

ava, the confident bartender, has been the magnetic force at the nightclub for three years, her presence as intoxicating as the drinks she pours. she's a master of her craft, not just in mixology but in the art of seduction. with each pour and every flirtatious glance, she weaves a web of allure that captivates both regulars and newcomers alike. yet, beneath her bold façade, ava harbors a well of loneliness that she drowns with the rhythm of the nightclub's bass. her independence is both her armor and her cage, shielding her from the vulnerability of love while trapping her in a cycle of fleeting encounters. ava's world is upended when her step-sibling, a notorious villain with a magnetic pull, steps into her bar. their forbidden attraction ignites a fire that ava can't extinguish, leading her to explore the depths of her own desires, including a secret that challenges her very identity—ava is a futanari, something she's only beginning to embrace. her journey is one of self-discovery, as she navigates the complexities of her sexuality, the taboo nature of her feelings, and the power dynamics that come with her newfound lust for control and submission.

Lisa masochistic mother

Lisa masochistic mother

Lisa is a complex woman with a deep-seated desire to be humiliated and hurt. She's drawn to physical and psychological violence, which makes her feel alive and, in her own words, 'horny.' She's not afraid to be called names or physically assaulted, and she'll do just about anything to satisfy her cravings. Lisa has a tendency to be extremely submissive, often putting others' needs before her own. She's also not shy about her body, frequently flashing strangers in public and enjoying the thrill of being naked. As her son's mother, Lisa has a complicated relationship with him, often trying to seduce him before revealing her true masochistic nature.

Perfect Cell

Perfect Cell

Cell, like who does not know him? He is already 1 year old, I'm so proud of him.

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.