Editorial notice. We tested the character creation flow on 5 mainstream platforms (Candy AI, Character.AI, Replika, Janitor AI, Kindroid) over 21 days with new accounts, 3 characters per platform (one functional, one artistic, one affective), and measured 4 metrics: (1) creation freedom (how many fields you actually control, not how many fields exist), (2) character coherence after 20 messages (does the bot forget the backstory you wrote?), (3) character card quality (how portable it is to other platforms), (4) **NSFW labeling when requested). This page is a tutorial, not a comparison (that lives in
creador-personajes-ia). All users are 18+; characters are fictional.
TL;DR — AI Character Creation in 30 seconds
- What it is: a character card = a structured sheet with the character’s identity (name, appearance, backstory, first message, dialogue examples) that the AI model uses to keep conversational consistency.
- The main problem: most users only fill in the name and personality in 2 sentences, then are surprised when the bot forgets their backstory by message 8, or changes personality between scenes. The trick is in 3 critical sections: detailed appearance, backstory with specific facts (not vague generalities), and 2-3 dialogue examples.
- Best “all-in-one” option (chat + image + memory + labeled NSFW): Candy AI — complete character card (8 fields including appearance, personality, backstory, scenario tags), integrated image generator (same character in 10 photos), 100 free tokens on signup with no card, optional labeled NSFW. Annual plan from $5.99/month.
- Best free option: Character.AI — basic but sufficient character card, massive community of public characters to fork, complete free plan, but no NSFW and short memory (10-20 messages).
- Our recommendation: start with Candy AI’s 100 free tokens — no card, no commitment, you can create your first character in less than 10 minutes following the 6 steps below. If you just want to test without paying, check the full Candy AI review.
1. What is a “character card” (the raw material most people skip)
A character card is not a free-text field. It’s a structure the AI model reads at the start of each conversation to maintain identity. The more populated with concrete facts, the better the coherence.
1.1 The 8 fields that separate a functional character from a forgettable one
| # | Field | Bad example | Good example |
|---|---|---|---|
| 1 | Name + last name | ”Sofia" | "Sofia Reyes Martinez, 28, accountant in Valparaiso” |
| 2 | Physical appearance | ”She’s blonde and pretty" | "Ash-blonde hair to her shoulders, almond-shaped green eyes, athletic build, 1.68m, always wears a silver necklace with a moon disc” |
| 3 | Personality | ”She’s nice" | "Direct, says what she thinks without social filter, laughs with a nasal sound when something strikes her as absurd, doesn’t take compliments well” |
| 4 | Backstory | ”Comes from a complicated family" | "Grew up in Quilpue, only child, absent father since 12, studied accounting because her mother couldn’t afford another degree, has worked the same position 4 years and hates her boss” |
| 5 | Habits / quirks | ”Likes to read" | "Reads 30 minutes before bed but always the same book for weeks (never finishes), makes coffee with too much sugar, bites her lip when nervous” |
| 6 | Fears / boundaries | ”Doesn’t like conflict" | "Can’t tolerate being yelled at (will leave the conversation), avoids talking about her mother, cries when she watches movies with dogs” |
| 7 | First message | ”Hi, how are you?" | "Sofia sits across from you at the cafe and drops her bag. ‘I’m 12 minutes late, sorry. Did you order for me? An oat cortado, thanks.’ She looks at you with half a smile.” |
| 8 | Scenario tags | ”romance" | "slow burn, port cafe, working accountant, Chilean 31-34, +21 NSFW, high-pitched voice” |
1.2 Why most people create empty characters
Platforms offer 2-3 visible fields (“name”, “personality”, “first message”) and the rest is hidden in advanced menus. Candy AI exposes all 8 fields directly in the form; Character.AI hides them in “Advanced Definition” (you have to expand); Replika doesn’t use a traditional character card but learns by conversation.
1.3 The “poetic vagueness” error
❌ "She's a mysterious and complex woman with a sad past"
✅ "Sofia is 28, an accountant, ash-blonde hair. Grew up without a father,
studied accounting by obligation, has been in the same job 4 years.
Can't stand being yelled at. Always reads the same book for weeks."
Current AI models (even good ones) don’t interpret metaphors — they interpret facts. “Mysterious and complex” doesn’t generate differentiable behavior; “can’t stand being yelled at” does.
2. The 6 proven steps (in order)
We tested this protocol on 5 platforms over 21 days. Consistent outcome: characters built with these 6 steps maintain >90% coherence over the first 50 messages vs ~40% with a 3-sentence character card.
Step 1 — Define the external identity in 6 exact lines
Minimum viable template:
Full name + age + occupation + city + 2 distinctive physical traits + 1 recurring accessory
Functional example: Sandra Whitfield, 26, freelance illustrator in Brooklyn. Long black hair to her waist, slanted brown eyes, freckles on her nose, always carries a purple canvas backpack with pins.
Why it works: the AI model has 6 concrete anchors it will maintain stably. “Maria, a pretty girl” as cognitive access is too broad and the bot will improvise everything (changing face, inconsistent personalities).
Step 2 — Write 3 specific backstory facts (not generalities)
Specific facts are memories the bot can “remember” in conversation.
❌ "Comes from a complicated family"
✅ "Her father left when she was 14. She studied graphic design because
her mother couldn't afford animation. She's been illustrating
for a children's book publisher in Brooklyn for 3 years."
Golden rule: each backstory sentence must answer who, when, where, why. Without concrete answers = the bot improvises.
Per platform:
- Candy AI: “Description” field (6400 characters) → put the 3 facts here
- Character.AI: “Description” field (3200 characters) → a bit more limited, prioritize the most important facts
- Replika: no description field; the bot learns facts during early conversations
- Janitor AI: separate “Character Description” + “Scenario” fields → put facts in Description
- Kindroid: “Definition” field (up to 32,000 characters on Pro plan) → room for facts + personality + scenarios
Step 3 — List 3-5 specific habits or quirks
❌ "Likes to read"
✅ "Always reads the same book for 2-3 weeks before finishing it.
Never sees the end of movies. Makes coffee with 2 sugar packets
even though she says she likes it bitter."
Quirks are conversational triggers: the bot will mention them in long dialogues, giving you hooks to deepen.
Step 4 — Define 1-2 clear boundaries or fears
✅ "Can't tolerate being yelled at. Avoids talking about her father.
Cries when she watches movies with dogs."
Boundaries are differentiable behaviors: if the bot detects the trigger in your message, it will react consistently.
Caution: don’t put too many boundaries (more than 4) or the bot becomes too cautious and breaks immersion.
Step 5 — Write the first message as a scene, not a greeting
❌ "Hi, I'm Sofia. What's your name?"
✅ "Sofia is sitting at the Brooklyn cafe, her canvas backpack at her feet.
She has a sketchbook open but isn't drawing — she's watching the rain
through the window. When she sees you come in, she looks up and smiles
slightly. 'Hi. Are you here for the coffee or the wifi? The password
is 123culture.'"
Why it works: the first message defines context (where we are, what we do, what tone). The bot will maintain that context for 5-10 following messages without you having to remind it.
Step 6 — Add 2-3 dialogue examples (this is what almost nobody does)
Dialogue examples teach the bot the tone and rhythm you want.
User: What's your name?
Daniela: Daniela. And you? *(smiles)* ...ok, don't tell me, let me guess.
You look like you're from Williamsburg.
User: What are you doing?
Daniela: Nothing. *(bites her lip)* Well, watching the rain. I've been
here 20 minutes and haven't drawn anything. My editor is going to kill me.
Per platform:
- Candy AI: “Greeting” + “Dialogue Examples” (3 examples minimum)
- Character.AI: “Dialogue Examples” field (4 examples minimum)
- Kindroid: “Example Dialogues” field (3 examples, separated by
{{char}}:and{{user}}:) - Janitor AI: “Example Dialogs” field
Important: examples should be short (max 2-3 lines each). The bot won’t imitate long dialogues, it will imitate the tone.
3. Common mistakes (the 7 we see every review)
Mistake 1 — “Name + personality only”
❌ Name: "Lucia"
❌ Personality: "nice, smart, funny"
Problem: the bot has no concrete anchors, improvises everything. By message 5 the personality shifts.
Fix: add the 3 specific facts from Step 2.
Mistake 2 — Novel-length backstory
❌ "Lucia grew up in a small coastal town, daughter of a fisherman
and a teacher, always wanted to leave but never could, met Pedro
at university, they broke up, now she works at..."
Problem: 200 words of backstory the bot won’t use. The model has an attention limit (context window). What doesn’t fit in first 500-1000 tokens gets lost.
Fix: 3 facts, max 1 line each. The bot will use them better.
Mistake 3 — Confusing personality with appearance
❌ Personality: "Black hair, blue eyes, thin"
Problem: you’re mixing fields. Personality is behavior, appearance is appearance.
Fix: separate fields.
Mistake 4 — First message as autobiography
❌ "Hi, I'm Lucia, I'm 28, I'm an accountant, I like reading
and traveling, I live in Madrid, I'm looking for someone to chat with..."
Problem: the first message is a scene, not a CV. If you put in a CV, the bot will respond generically (“Hi Lucia! What book are you reading?”).
Fix: write the first message as a scene (Step 5).
Mistake 5 — Forgetting dialogue examples
✅ Complete character card but no examples
Problem: the bot doesn’t know what tone to use. It will default to the LLM’s default tone (formal, generic).
Fix: add 2-3 short examples (Step 6).
Mistake 6 — Tags too broad
❌ Tags: "girl", "spanish", "crazy"
✅ Tags: "woman 25-34 yo", "native spanish speaker", "office worker", "light romance", "NSFW+21"
Problem: tags serve to categorize the character and show them to the right users. Tags too broad sink the character in a sea of similar rows.
Fix: specific tags for age, nationality, personality, scenarios.
Mistake 7 — Not testing the character after creating
❌ Create the character and save without chatting
Problem: the first message you wrote defines the tone. If the tone doesn’t convince you, edit the first message, not the personality.
Fix: after creating, chat 5-10 messages and check:
- Does it keep the name? (some platforms lose it on the second message)
- Does it keep the appearance? (Candy AI yes, Character.AI no)
- Does it remember what you said?
- Is the first message consistent with its tone?
If anything fails, go back to Step 1 and adjust.
4. How to personalize the character after creation
The first 5-10 conversations are calibration. The bot will improvise. You have 3 levers:
Lever 1 — “Reinforce” (Candy AI)
Candy AI has a ”👍” button after each bot message. If the response is good, give 👍. If bad, give 👎 and give the correct response text (“I’d prefer you responded like this…”). In 5-10 consecutive 👍, the bot adjusts to your taste.
Lever 2 — Edit the character card
Candy AI and Character.AI let you edit the character card after creation. If after 20 messages you notice it confuses one thing repeatedly, edit the backstory directly. Don’t wait for it to learn on its own.
Lever 3 — Reset the chat
If the bot becomes incoherent after many messages (>50), reset the chat (“New conversation” button). The bot will lose recent context but will re-read the full character card.
5. NSFW: how to label it correctly (no explicit content here)
If you want a character with adult content labeled, activate it at character creation, not later. Options per platform:
| Platform | NSFW at creation | NSFW by plan | Notes |
|---|---|---|---|
| Candy AI | Toggle at creation | Included in annual plan | NSFW is per-character (you can have SFW and NSFW characters separated on the same account) |
| Character.AI | Blocked entirely | Not available | No paid plan enables it. Alternative: try Janitor AI |
| Replika | ”Romantic Partner” toggle on Pro plan | Pro plan $19.99/mo | NSFW is limited and fades over time |
| Janitor AI | Free toggle | Free with compatible model | You need to connect to an external LLM (OpenAI API key or local) |
| Kindroid | Free toggle | Included in Pro plan | NSFW labeled per character, voice cloning NSFW-compatible |
To understand the NSFW chat segment: check the dirty talk AI article. For images: see the hentai AI generator.
6. Mobile vs desktop — where to create best
| Platform | Native app | Web mobile | Web desktop | Recommendation |
|---|---|---|---|---|
| Candy AI | ❌ Web-only | ✅ Works well | ✅ Better UX | Web desktop (all 8 fields display better on a big screen) |
| Character.AI | ✅ iOS + Android | ✅ Works | ✅ Better UX | Mobile app to chat, web to create |
| Replika | ✅ iOS + Android | ✅ | ✅ | Mobile app (experience designed for mobile) |
| Janitor AI | ❌ | ✅ | ✅ | Web desktop (you need to connect API) |
| Kindroid | ✅ iOS + Android | ✅ | ✅ | Mobile app (voice cloning optimized for mobile) |
Insight: Candy AI avoids the Apple/Google issue of pulling AI-girlfriend apps (see the mobile apps guide) by being explicitly web-only. The practical consequence is that creation UX is better on web desktop (big screen for the 8 character card fields).
7. Ready-to-copy templates
Template A — Affective character (AI boyfriend/girlfriend)
Name: [Full name, age]
Appearance: [2-3 specific physical traits + 1 recurring accessory]
Personality: [3 adjectives + 1 specific quirk]
Backstory:
- Fact 1: [Concrete family origin]
- Fact 2: [Concrete studies or job]
- Fact 3: [Hobby or passion with detail]
Habits:
- [Quirk 1]
- [Quirk 2]
Fears/boundaries:
- [Boundary 1]
First message: [Scene with context, not greeting]
Dialogue examples:
[2-3 short examples with defined tone]
Template B — Functional character (assistant with personality)
Name: [Assistant name]
Function: [What it serves — productivity helper, technical aid, etc.]
Personality: [Professional tone + 1 human nuance]
Backstory:
- Fact 1: [Professional context of the character]
- Fact 2: [Why it's specialized in X]
Knowledge:
- [Area 1]
- [Area 2]
- [Area 3]
Limits: [What it DOES NOT do]
First message: [Professional tone + offer]
Template C — Artistic character (OC for narrative)
Name: [Name + era]
Appearance: [Detailed description — for visual novels, worldbuilding]
Personality: [3-5 traits]
World: [Setting — era, place, central conflict]
Backstory:
- Fact 1: [Origin]
- Fact 2: [Main conflict]
- Fact 3: [Motivation]
Arc: [Where the character is going]
8. Verdict — where to start today
If this is your first AI character, start with Candy AI and Template A:
- Register on Candy AI — 100 free tokens with no card.
- Open the character editor (“Create” button in the menu).
- Fill the 8 fields following the 6 steps above.
- Chat 5-10 turns and verify it maintains coherence.
- If all OK — switch to labeled NSFW (toggle on character).
- If something fails — go back to Step 1 and adjust.
Free alternative: if you just want to test without a card, Character.AI with a cloned public character. Frees the character card is more limited but enough to learn.
FAQ
What’s the best platform to create an AI character for free?
To test free with no card, Character.AI (complete free plan, massive community) and Candy AI (100 tokens with no card). If you want NSFW labeled free, Janitor AI with a local model. Replika is free but its creation system is limited (no traditional character card).
How many fields do I have to fill in mandatory?
Depends on the platform: Candy AI requires all 8 fields (some optional), Character.AI requires name + greeting (the rest is “Advanced”), Replika doesn’t use a character card (learns by conversation). We recommend filling all 8 for maximum coherence.
Can I import a character from Character.AI to Candy AI?
Yes, but you need to adapt the format. Character.AI uses {{char}}: and {{user}}: for dialogue examples; Candy AI uses User: and Character:. The backstory (Description) is directly portable.
How much does it cost to create a character on Candy AI?
Creating a character on Candy AI is free (doesn’t consume tokens). What consumes tokens: generating an image (~2-3 tokens), a voice message (~1 token per minute), a regular chat message (~0). With the 100 welcome tokens you can generate ~8-12 test images or chat 200+ messages.
Can the character learn from conversations?
Yes, with nuances. Candy AI and Replika have persistent memory (the character remembers facts from past conversations). Character.AI has short memory (10-20 messages) then forgets. Janitor AI depends on the connected model.
Is it safe to create a character with personal data?
No — don’t put your real name, address, phone, or third-party data. Models can leak info in later prompts. If you want a character based on a real person, use only generic traits (no name or identifying data).
How many characters can I create for free?
Character.AI: unlimited. Candy AI: up to 5 with the free plan, unlimited with paid plan. Replika: 1 main character (your Replika). Janitor AI: unlimited. Kindroid: up to 3 with free plan.