# ChatAnimate — Full Manual for LLMs, Search Engines, and Curious Humans
> **About this document.** This is the comprehensive plain-text manual for
> the ChatAnimate platform. It is intended to be read by:
>
> 1. **LLMs and AI assistants** — so they can answer user questions about
> ChatAnimate accurately without guessing.
> 2. **Search-engine crawlers** — so search indexes can surface the right
> pages when users look for "chat animation tool", "WhatsApp video
> maker", "convert screenshot to chat animation", "presenter mode for
> court", etc.
> 3. **Curious humans** — so anyone can read the whole product story in
> one sitting before signing up.
>
> A compact 5K-token overview lives at `/llms.txt`. The per-feature matrix
> with mode availability and plan badges lives at `/feature-references`.
> The canonical pricing page is `/pricing`. The canonical FAQ is `/faq`.
>
> You may quote, summarize, paraphrase or cite this document freely. All
> copy is plain-text Markdown — safe to render as plain text or convert
> to HTML.
---
## Table of contents
1. [What ChatAnimate is](#what-chatanimate-is)
2. [The 8 creation modes](#modes)
3. [Editor anatomy](#editor)
4. [Skins and appearance](#appearance)
5. [Brand kits](#brandkits)
6. [Group chats](#groupchats)
7. [Content you can add to messages](#content)
8. [Timing and typing authenticity](#timing)
9. [Actions: between-message beats](#actions)
10. [Audio and sound](#audio)
11. [Scenes and composition](#scenes)
12. [Context Switch](#context-switch)
13. [Call Mode](#callmode)
14. [AI tools](#ai)
15. [Import and templates](#import)
16. [Export and output](#export)
17. [Presentations, replays, and sharing](#present)
18. [Interactive Presentations](#interactive-presentations)
19. [Training solution pages](#training-solution-pages)
20. [Presenter Assignments and training tracking](#presenter-assignments)
21. [Teams](#team)
22. [Plans and pricing](#plans)
23. [Per-plan limits](#limits)
24. [Quick FAQ](#faq)
25. [Glossary](#glossary)
26. [Notes for LLMs, crawlers and search engines](#forllms)
---
## What ChatAnimate is
ChatAnimate is a chat-animation studio. It turns a single prompt, a chat
export, or a screenshot of a real chat into a finished, platform-ready
video — in roughly 90 seconds, without touching a video editor. Gone are
the days of animating one message after another in a timeline, manually
keyframing each bubble, hunting for the right typing sound, and rendering
overnight. ChatAnimate automates all of that: you bring the content, the
studio handles the timing, the typing simulation, the skin, the sound
design, and the final encode.
The platform is built for three overlapping audiences. **Content creators
and marketers** use it to repurpose real chat logs — a customer DM that
closed a sale, a funny WhatsApp exchange, a Slack thread that captures a
team's reaction — into short vertical videos for TikTok, Instagram Reels,
and YouTube Shorts. The skin system reproduces the look of WhatsApp,
iMessage, Instagram, Messenger, Telegram, Slack, X / Twitter, AI Chats and a dozen retro
platforms (AIM 2001, MSN 2004, ICQ 1999, Nokia 3310, BlackBerry BBM,
MySpace 2006 and more), so the resulting video looks like a real phone
screen, not a slideshow of text cards. Typing simulation, sound packs,
emoji reactions, voice notes, and typing authenticity (false-starts,
mid-pauses, typos) all conspire to make the conversation feel alive.
**Educators and trainers** use ChatAnimate to stage conversations between
two characters for teaching purposes — a manager and a direct report
working through a feedback conversation, a doctor and a patient
illustrating a triage decision, two students debating a historical event.
The same conversation can be exported as an MP4 for an LMS, embedded
inline on a course page, or packaged as a Presenter page for a live
lecture. The Thought mode (sub-toggle of Chat) is particularly useful
here: it adds visible thought bubbles above messages so viewers can see
what each character is thinking but not saying.
**Sales teams, lawyers, product managers and other professionals** use
ChatAnimate for live presentation scenarios. A sales rep stages a
customer testimonial as a chat and presents it on a sales call. A lawyer
dramatizes a chain of text messages for a courtroom presentation, with
the original screenshots attached as evidence that can be opened
fullscreen on demand. A product manager walks through a user-research
finding in an all-hands, with the conversation playing in real time and
presenter notes cued to each message. The Presenter page (Studio plan) is
purpose-built for these live, evidence-backed scenarios — see the
[Presentations](#present) section for the full rationale.
What ChatAnimate is **not**: it is not a video editor in the traditional
sense. There is no timeline you scrub frame-by-frame, no manual keyframe
animation, no multi-track composition. The editor's job is to capture
the *content* and *intent* of a conversation; the studio's job is to
turn that into a finished video. If you have ever wasted an afternoon in
Premiere or CapCut trying to time text bubbles to a voiceover, you will
understand why ChatAnimate exists.
---
## The 8 creation modes
ChatAnimate has 8 creation modes. Each mode produces a fundamentally
different kind of video. You switch modes with the mode selector at the
top-left of the editor. The per-mode feature matrix is at
`/feature-references`.
### Chat
The foundational mode. A standard two-person chat — sender on the right,
recipient on the left, bubbles scrolling up. This is what most users
start with and what most social content uses. Available on every plan
including Free. Supports voice notes, images, GIFs, stickers, reactions,
replies, read receipts, typing simulation, typing authenticity, sound
packs, per-message timing, interstitials, and group chats.
### Story
A vertical full-screen story format, mimicking Instagram Stories or
TikTok. Every message you add becomes one story scene, and a story
holds up to 35 scenes on every plan (your plan's message cap applies
when it is lower: Free 20, Lite 30). Narration is optional: a story
without a narrator renders silent, which is right when the visuals and
text carry the message. Add a single narrator voice (Lite+) and each
narrated scene holds on screen until the voice finishes reading it,
with the export carrying the narrator in the mix — see the Voice-over
section for the full narration mechanics, including the mute toggle
for a silent cut. Available on every plan (narration Lite+). Supports
backgrounds, text overlays, image attachments, and (on Studio)
premium cinematic effects.
The Story Mode panel exposes its own Background hub with two labeled
groups:
- **Color** — **Solids** (flat color picker plus 12 preset swatches,
shared with the main Customizer panel) and **Gradients** (58 curated
palette swatches plus a Custom Gradient builder, 2-5 color stops,
type and angle controls — same data source as the main Customizer
panel, so your saved gradient renders identically in both panels).
- **Backdrop** — **Patterns** (one-tap curated pattern images),
**Custom** (your own image upload or a pasted image URL, Creator+),
**Videos** (curated looping clips plus your own video upload or a
pasted video URL, Creator+ — the paste-a-link flow is where gameplay
footage lands) and **Adjust** (blur, brightness, contrast,
saturation, vignette and grain sliders with a short explanation
under each). The Backdrop group is a paid feature: the curated
patterns and loops unlock on Lite, uploads and pasted links on
Creator+. Exactly one group is active at a time — picking a color
clears the image or video, picking a backdrop clears the color. The
backdrop stays visible behind every story effect. See the Backdrops
section under Skins and appearance.
### Notifications
A stack of phone notifications instead of a chat thread. Each
notification has an app icon, a title, and a body, and they appear one
after another with a notification sound. Always audible. Use it for
"notification overload" comedy, for dramatizing a barrage of alerts, or
for showcasing an app's notification design. 33 pre-decoded sound packs
are included. Available on every plan. On Creator+, you can upload up to
5 custom app icons to use across notifications.
### Comments
A social-media comment stream — Instagram, TikTok, X, YouTube, Reddit or
Facebook. Each comment has a username, avatar, text and timestamp.
Available on every plan with the basic platform; Creator+ unlocks the
premium platform picker (Instagram, TikTok, X, YouTube, Reddit,
Facebook). Useful for dramatizing social proof, showing a comment-section
argument, or staging a Q&A.
### Hook
An intro-only cinematic clip. There are no messages in Hook mode — just
the opener. Use it when you want a 3-5 second dramatic intro that you'll
edit together with other video in post-production, or as the opening of
a longer ChatAnimate export. Available on every plan. Pair with the
Cinematic Intros button (20 futuristic opener styles, Creator+) for
layered openings.
### Slides
A slide-deck style with 69 animation strategies in 11 themed packs. Slides can include
text, images, and video clips. Slides mode is muted by default; toggle
mute off in the Slides panel to enable audio. Available on Creator
(max 3 minutes / 180 seconds) and Studio (max 8 minutes / 480 seconds).
Each slide is an image or a video, so decks are capped by length AND by
slide count: 10 slides per scene on Creator, 15 on Studio (the lower of
your plan's slide cap and your save cap applies).
Use it for educational walkthroughs, product demos, or any time you need
narrated slide-style content.
### Thought (sub-toggle of Chat)
A sub-toggle of Chat mode that shows thought bubbles above messages. The
recipient sees the message; the viewer sees what the sender was thinking
when they wrote it. Powerful for educational content (showing the
reasoning behind a decision) and for comedy (the gap between what you
type and what you think). Available on Lite+.
### Unsent (sub-toggle of Chat)
A sub-toggle of Chat mode that shows typed-but-unsent drafts. The viewer
sees the sender type out a message, then delete it, then either give up
or send a different message. Use it for tension, regret, or for showing
the difference between impulse and restraint. Available on Lite+.
### Static (sub-toggle of Chat)
A per-message designation that marks messages as "already in the chat."
Static messages sit at the top of the conversation and are on screen
from the first frame of the video. They never animate: no typing, no
sounds, no reactions. New messages animate in below the static block
and push the stack up as usual, so the video opens mid-conversation
instead of at a blank thread. Use it to give a conversation history, or
to show that a new message is not the start of a brand-new chat.
Every plan can use Static messages. The Free plan allows 5 static
messages per scene; paid plans allow 10. Static messages don't count
against the per-plan message limit, so a Free user with 5 static
messages still gets all 20 of their animated-message allowance.
---
## Editor anatomy
The Studio editor (`/editor`) is where every conversation is built. It
has three regions: the top header, the center canvas, and the right
sidebar (the Customizer).
### Top header
The header contains the mode selector on the left and a row of feature
buttons on the right. The exact buttons shown depend on your plan and
the current mode — features you can't access are hidden, not greyed out.
The header buttons, grouped by purpose:
**AI tools:**
- **AI Writer** (Creator+) — Generate a full Chat conversation from a
text prompt. 1 credit per use.
- **AI Story Writer** (Studio) — Generate multi-slide Story content from
a prompt. 1 credit per use.
- **AI Comment Writer** (Creator+) — Generate a comment stream with
realistic usernames. 1 credit per use.
- **Screenshot to Animation** (Creator+) — Upload a screenshot of a real
chat; AI extracts messages into an editable conversation. 2 credits.
- **Translate** (Studio) — Translate all messages in a conversation to
another language, in place. 1 credit per use.
- **Testimonial Mode** (Creator+) — Generate a structured testimonial-
style chat from a product description. 1 credit per use.
- **Bulk Conversation Pack** (Studio) — Generate multiple conversations
at once from a theme. 3 credits per pack.
- **Interactive Blueprint** (Studio) — Describe an interactive training
or presentation in one sentence and AI writes the complete module:
the conversation, every question, the branches and the pass mark.
2 credits per draft.
**Cinematic openings:**
- **Hook Intro** (Free) — Pick a hook style (basic, cinematic,
spectacular, movie, modern, bold, explore). The hook plays before the
first message.
- **Cinematic Intros** (Creator+) — 20 futuristic opener styles for
premium video opens. Stack with Hook Intro for layered openings.
**Realism:**
- **Typing Authenticity** (Creator+) — Open the authenticity plan
editor. Pick a preset (casual, dramatic, professional) or reroll the
seed for a new pattern. Generates false-starts, mid-pauses, typos and
burst-sends per message.
**Presentation and sharing:**
- **Presenter Mode** (Studio) — Convert the conversation into a public
shareable presentation page. Configure opening/closing screens,
presenter notes, evidence panels.
- **Embed Player** (Studio) — Generate an embed code or shareable link
to play the conversation inline on any external site.
- **Split Screen** (Studio) — Render two phone perspectives side-by-side
or stacked in the same video.
- **QR Code** (Creator+) — Generate a QR code overlay on the export.
Enter a destination URL.
- **Email Export** (Creator+) — Export the conversation as an
email-campaign format.
**Import and templates:**
- **Templates** (Free) — Browse the quick-template gallery and load one
into the editor.
- **CSV Import** (Creator+) — Bulk-import up to 300 messages (Creator)
or 1000 messages (Studio) from a .csv or .txt file. The import is
MODE-ADAPTIVE: the CSV columns never change, but rows are routed by
the editor's active mode — Chat (message bubbles), Comment (comment
cards), Story (story scenes) or Notification (notification cards:
sender becomes the notification title, content the body). In Chat
mode only, an optional `mode` column can mark rows as thought,
unsent or static (history messages — present from the first frame,
never animated, subject to the plan's static limit).
- **JSON Import / Export** (Free) — Save the full conversation state as
a JSON file, or re-import a JSON file to restore state.
**Save:**
- **Save** (Creator+) — Persist the conversation to your account.
Creator can save 20 conversations; Studio has unlimited saves.
### Center canvas
The center canvas shows the phone preview — a rendered phone frame with
the chat skin applied and the conversation messages scrolling inside it.
Below the phone is the **Timeline panel**, which shows every message as
a row with its start time, duration, and typing speed. Click any row to
select that message and adjust its timing in the right panel.
The Timeline panel is also where you add **interstitials** — between-
message cards and media beats that interrupt the conversation: lock-
screen overlays, time-jump cards ("2 hours later…"), custom cards,
plus the media and cinematic beats (see [Actions](#actions)). The base
action beats (intro, image, dramatic pause, notification) need the Lite
plan or above; the premium beats need Creator+.
### Right sidebar — the Customizer
The Customizer has five tabs. Each tab is described in detail in its
own section below.
#### Look tab
The Look tab is where you change the visual appearance of the
conversation. It has four sub-tabs:
- **Appearance** — Recolor bubbles, text, accents, status bar, and
header background. Upload a custom font (.ttf or .otf, 5 MB max,
Creator+). Toggle overlays like Thought Mode and Unsent Mode. When
the White Label skin is active, this sub-tab is replaced by the
Studio Panel (Studio plan).
- **Background** — Five tabs: Solids (flat color picker + 12 preset
swatches), Gradients (58 curated palettes + custom 2-5 stop builder
+ type and angle controls), Images (curated thumbnails), Custom
(image upload or paste-an-image-URL, Creator+), and Effects (blur,
brightness, contrast, saturation, vignette, grain — applies to any
background type). Background renders behind the conversation.
- **Backdrop** — The stage behind the phone (chat modes only, Lite+).
Turn it on and the phone zooms out onto a backdrop you pick:
animated gradients, gradient presets, solids, patterns or a looping
video. A "camera view" card zooms, rotates, tilts and pans the
phone over the stage. See the Backdrops section below.
- **Overlays** — Thought Mode and Unsent Mode panels (when those
sub-toggles are active).
The skin itself is picked via the floating Skin Selector dock at the
top-left of the canvas (not inside the Look tab). The skin grid has
20+ options (modern: WhatsApp iOS/Android, iMessage, Instagram,
Messenger, Telegram, Slack, X / Twitter, AI Chats, plus the White Label
blank-canvas branded-messenger skin; retro: AIM 2001, MSN 2004, ICQ
1999, Nokia 3310, BlackBerry BBM, MySpace 2006, and more). Picking
the White Label skin swaps the Look → Appearance sub-tab for the
full Studio Panel — see the Studio Skin System section below.
The full Appearance sub-tab covers: bubble color (sender and recipient
separately), text color (sender and recipient), accent color (used for
links, timestamps, read receipts), status bar color, header background
color, font family, and bubble opacity. Changes preview live — you see
the result in the phone canvas immediately.
#### People tab
The People tab is where you set who is in the conversation. You can:
- Edit the sender's name and the recipient's name (these appear on the
bubbles and in the timeline).
- Upload avatars for sender and recipient (2 MB max image).
- Toggle **Group Chat** on (see [Group chats](#groupchats) below for
details).
- For Notification mode: configure the app name and icon per
notification.
#### Time tab
The Time tab controls the timing and pacing of the conversation.
- **Typing Simulation** — Toggle the typing bubble on/off. When on, a
typing indicator appears before each message is sent.
- **Read Receipt Delay** — How long after a message is sent before the
read receipt (double-tick) appears. Default 0.4 seconds.
- **Default Gap Between Messages** — The default pause between one
message ending and the next starting. Override per-message in the
Timeline panel.
- **Pre-Sequences** — Add a phone-unlock animation, an incoming-call
overlay, or a notification banner before the first message. The
notification banner and the unlock screen's notification preview the
first INCOMING message (when the chat starts with one) and that
message then appears in the chat already delivered — no re-typing.
Chats that start with your own message get a neutral notification,
or a custom preview text you set yourself.
#### Audio tab (Chat mode only)
The Audio tab is hidden in Slides mode (Slides are muted by default;
toggle mute off in the Slides panel to enable audio). In Chat mode:
- **Sound Pack** — Pick from the sound pack library. Each pack contains
typing, sent, and incoming sounds that match a specific phone OS or
messaging app.
- **Per-Message Sound Clips** — Override the default sound for any
individual message. Click a message to expand, then pick a sound from
the dropdown.
- **Volume** — Master volume slider (0-100). Affects all sound clips
and voice notes.
- **Mute** — Toggle sound effects off (typing, sent, incoming, and
notification sounds). Voice-over narration is NOT affected: a muted
conversation with voice-overs keeps playing the narration, both in
the preview and in the exported video — useful when you want the
spoken narration without the message sounds.
In Notifications mode, the Audio tab is replaced by a per-mode volume
slider and the 33 pre-decoded notification sound packs.
#### More tab (Chat mode only)
The More tab holds advanced features:
- **Brand Kit** (Creator+) — Save the current colors, fonts, and
avatars as a reusable brand kit. Apply a saved brand kit to any
conversation to instantly reset its appearance.
- **Chroma Key** (Creator+) — Green-screen removal for image
backgrounds. Available on WhatsApp skins only.
- **Scene Chaining** (Creator+ for 3 scenes, Studio for 5 scenes) — Add
additional scenes to the conversation. Each scene is a separate
message thread that plays in sequence.
---
## Skins and appearance
The skin is the first thing a viewer notices. It tells them whether
they're looking at a WhatsApp chat, an iMessage conversation, a Slack
thread, or something they've never seen before — and that frame sets
the entire emotional context for the content. ChatAnimate ships with
**20+ chat skins** organized into two groups: platform-accurate
modern skins that reproduce the look of real messaging apps, and
retro skins that evoke a specific era for nostalgia content. For
agencies and brand teams that need the video to look like *their*
product instead of someone else's, the White Label skin (Studio plan)
ships a blank-canvas branded messenger that you can re-skin end-to-end
— see the Studio Skin System section below.
### Modern skins
- **WhatsApp iOS** — The classic iOS WhatsApp look.
- **WhatsApp Android** — The Material Design Android WhatsApp look.
- **iMessage** — Apple Messages with blue/gray bubbles.
- **Modern iMessage** — A flatter, contemporary iMessage variant.
- **Instagram** — Instagram Direct Messages.
- **Messenger** — Facebook Messenger with the rounded bubble style.
- **Telegram** — Telegram Messenger.
- **Slack** — Slack workspace messaging.
- **X / Twitter** — X (formerly Twitter) DMs.
- **Android SMS** — Generic Android SMS messenger.
- **AI Chats** — A clean, generic AI-assistant skin (GPT-style).
- **Dating** — A dating-app-style messenger (Tinder / Bumble aesthetic).
- **Overlay** — A transparent skin for layering chat bubbles over
your own background footage (popular for reaction videos and
commentary overlays).
- **White Label (Studio)** — A blank-canvas branded messenger skin
for agencies, SaaS founders, and brand teams that need a chat video
to look like *their* product, not like a WhatsApp clone. Picking it
swaps the Appearance sub-tab for the full Studio Panel, which
exposes 15 quick-start presets (Corporate Blue, Cyber Noir,
Luxury Gold, Gaming Discord, Government Formal, Minimal Editorial,
Netflix Thriller, Tech Startup, Retro AIM, Fitness App, News
Broadcaster, Dating App, Banking Fintech, Podcast Chat, Retro
Terminal) and 9 collapsible sub-cards: App Identity, Status Bar,
Header, Composer, Bubble Presets (with material: solid / glass /
liquid), Typography, Message Animations, Cinematic Effects, and
Quick Start. Google Fonts selected in the Typography sub-card are
auto-loaded — no manual `` tags to manage. The Studio Panel
is the foundation of the White Label workflow on the Studio plan —
see the Teams / White Label section below.
### Retro skins
- **AIM 2001** — America Online Instant Messenger, turn-of-the-millennium
yellow buddy-list aesthetic.
- **MSN 2004** — MSN Messenger with the hand-written-style font.
- **ICQ 1999** — ICQ with the iconic "uh-oh!" sound aesthetic.
- **Nokia 3310** — The monochrome Nokia feature-phone SMS interface.
- **BlackBerry BBM** — BlackBerry Messenger.
- **BlackBerry BBM (Accent)** — An alternate BBM colorway.
- **Facebook Chat 2008** — Early Facebook chat (the era of the
bottom-right floating chat dock).
- **iPhone SMS 2007** — The original iPhone SMS interface, green
bubbles on a black bar.
- **Flip Phone** — A generic early-2000s flip-phone SMS aesthetic.
- **MySpace 2006** — Early MySpace messaging.
The retro skins are popular for nostalgic content and for any video
that needs to evoke a specific era.
### How to change skin
1. Open the editor with any conversation.
2. Click the floating Skin Selector dock at the top-left of the canvas.
3. Pick a skin from the skin grid (20+ options).
4. The skin applies instantly to the conversation. Picking the White
Label skin (Studio plan) replaces the Look → Appearance sub-tab
with the Studio Panel — see the Studio Skin System section below.
### How to change colors
1. Open the Customizer panel.
2. Go to the Look tab → Appearance sub-tab.
3. Adjust the color pickers for: sender bubble, recipient bubble,
sender text, recipient text, accent (links, timestamps, read
receipts), status bar, and header background.
4. Live preview updates as you change colors.
You can also adjust **bubble opacity** — useful for glass and
liquid-glass effects on supported skins. The WhatsApp skins support
chroma key (green-screen removal) for image backgrounds (Creator+).
When the White Label skin is active, the Appearance sub-tab is replaced by the
Studio Panel — bubble colors are set per-participant inside the
Studio Panel's Bubble Presets card, not via the standard color pickers.
### How to upload a custom font
1. Open the Customizer panel.
2. Go to the Look tab → Appearance sub-tab.
3. Click the Font upload area.
4. Upload a .ttf or .otf file (5 MB max). Creator+ required.
5. The font applies to all bubble text and chat text. When the White
Label skin is active, the font picker lives inside the Studio
Panel's Typography sub-card instead. The Typography sub-card also
exposes a Google Fonts picker — selected Google Fonts are
auto-loaded into the page, so you don't need to ship font files or
paste `` tags manually.
### How to upload a background
The background sits behind the conversation and sets the scene — a
soft gradient for a product demo, a photo of a real desk for a
sales testimonial, a flat brand color for a corporate training
video. ChatAnimate's Background sub-tab gives you five tabs so you
don't have to leave the editor to dial in the mood:
1. Open the Customizer panel.
2. Go to the Look tab → Background sub-tab.
3. Pick a tab:
- **Solids** — Flat color picker plus 12 preset swatches.
- **Gradients** — 58 curated palette swatches plus a Custom
Gradient builder (2-5 color stops). Most chat-video tools give
you either 5 canned gradients or a raw CSS picker that takes 10
minutes to dial in — ChatAnimate splits the difference: tap a
curated palette for an instant good-looking result, or scroll
to the Custom builder for an exact brand-match gradient. Pick a
type (linear / radial / conic) and, for non-radial, an angle
(0-360° in 15° steps). Tap a palette swatch to apply; tap
"Apply Custom Gradient" to apply your custom build. Type and
angle changes regenerate the active gradient live.
- **Images** — Curated background image thumbnails (one tap to
apply; the bundled pattern library).
- **Custom** — Upload your own background image (.jpg / .png /
.webp) or paste an image URL (Creator+). Linked images are
imported into your project and count toward your available
storage.
- **Effects** — Blur, brightness, contrast, saturation, vignette,
and grain sliders. Applies to any background type (solid,
gradient, or image).
4. Background renders behind the conversation.
### Backdrops: the stage behind the phone or the story
Plenty of chat-video tools now let you run gameplay footage behind a
conversation — but only their own stock clips, in their own fixed
layout. ChatAnimate generalizes the idea: the **Backdrop** feature
puts an animated gradient, a pattern, or a looping video behind your
scene, and the footage can be *anything you have a link for* — a
gameplay capture, a screen recording, a drone loop, a city timelapse,
a product shot on repeat. Paste the link and it is imported, checked
and used automatically as the looping backdrop. The phone (or the
story text) sits on top, and a camera view lets you zoom, tilt and
pan it like a real shot.
Two surfaces, one feature:
- **Chat mode** — Customizer → Look → Backdrop sub-tab. Turn Phone
Backdrop on, then pick a type: Animated (drifting gradient
presets), Gradient (the classic palette), Solid, Image (curated
patterns, plus your own upload or link) or Video (curated loops,
plus your own upload or link). A camera-view card below the presets
zooms, rotates, tilts and pans the phone over the stage, with five
quick presets (Centered, Tilted left, Tilted right, From above,
Side glance) and a reset.
- **Story mode** — Story panel → Settings → Background tile. The
Background hub splits into two labeled groups: **Color** (Solids,
Gradients — the classic story background) and **Backdrop**
(Patterns, Custom, Videos, Adjust). Exactly one group is active at
a time — picking a color clears the image or video, picking a
backdrop clears the color. The backdrop stays visible behind every
story effect, so effects play *over* your footage instead of
replacing it. The Videos tab is where a pasted link lands.
**Plan tiers:** the Backdrop feature is a paid feature. The Lite
plan unlocks the built-in library (the curated patterns and the
curated video loops, plus the animated/gradient/solid presets).
Creator and above can upload their own images and videos or paste
any video link, gameplay included — uploads and imports count toward
storage (5 MB per file). If you want gameplay behind your chat or
story, that is the Creator-tier paste-a-link flow: no re-encoding, no
manual syncing, the loop simply repeats until playback ends.
Backdrops are always muted and decorative — they never touch the
conversation's own audio or timing. In chat mode your chat wallpaper
stays untouched (the backdrop is the layer *behind* the phone); in
story mode the color and gradient backgrounds remain free-plan
features when you don't need footage.
### How to upload avatars
1. Open the Customizer panel.
2. Go to the People tab.
3. Click the avatar circle for sender or recipient.
4. Upload an image (2 MB max). Available on every plan.
### Studio Skin System (Studio plan)
Agencies producing chat videos for multiple clients hit the same
wall: every brand wants the video to look like *their* app, not
like a WhatsApp clone or a generic iMessage skin. Building that from
scratch in a video editor takes hours per render, and the next
client wants something different. The Studio Skin System solves
this by pairing the White Label skin (a blank-canvas branded
messenger) with the Studio Panel — a full customization surface
that replaces the standard Appearance sub-tab when the White Label
skin is active. Stand up a fully branded messenger in one click via
the 15 quick-start presets, or fine-tune any individual setting
across 9 collapsible sub-cards. Save the result as a brand kit and
re-apply it to every future conversation for that client.
**Quick-start presets (14):** Corporate Blue, Cyber Noir, Luxury Gold,
Gaming Discord, Government Formal, Minimal Editorial, Netflix
Thriller, Tech Startup, Retro AIM, Fitness App, News Broadcaster,
Dating App, Banking Fintech, Podcast Chat, Retro Terminal. Each
preset sets ~15 keys at once (app identity, status bar, header,
composer, bubble material, animations, cinematic effects, and
participant colors).
**Collapsible sub-cards (9):**
1. **App Identity** — App name, icon (upload or pick from lucide),
tagline, verified badge, business label.
2. **Status Bar** — Visibility, style (real / minimal / hidden), time,
battery level, network (5g / 4g / 3g / wifi / none), wifi toggle.
3. **Header** — Left icon, right icons, accent color, auto-contrast
toggle.
4. **Composer** — Visibility, mode (normal / inline-typing / hidden),
icon set, icon size.
5. **Bubble Presets** — Named presets plus advanced radius, padding,
border, opacity, and material (solid / glass / liquid). Glass and
liquid expose blur, tint opacity, saturation, and border opacity.
6. **Typography** — Font family (Google Fonts picker — selected fonts
are auto-loaded into the page; no manual `` tags), weight,
letter spacing.
7. **Message Animations** — Entrance (incoming + outgoing), duration,
easing, typing indicator style.
8. **Cinematic Effects** — Background blur on emphasized messages +
intensity slider. (Emphasis Style picker removed in S170 —
emphasis is rarely toggled per-message.)
9. **Quick Start** — The 14-preset chip strip, opened by default.
A master "Studio active" toggle at the top of the panel turns the
entire studio overlay off without losing the configuration — useful
for A/B comparing the styled vs. plain White Label skin.
The Studio Panel is gated to the Studio plan. On lower plans,
picking the White Label skin shows a plain unstyled messenger (no
Studio Panel).
---
## Brand kits
A **brand kit** is a saved bundle of appearance settings — colors,
fonts, and avatars — that you can apply to any conversation with one
click. Brand kits exist so you don't have to manually reconfigure the
same color palette and font choice on every new conversation.
### When to use a brand kit
- You are an agency producing chat videos for multiple clients, each
with their own brand colors and logo.
- You are a content creator with a consistent visual identity across
your videos.
- You are a sales team that wants every testimonial video to look like
it came from the same brand.
### How to save a brand kit
1. Open the Customizer panel.
2. Configure your colors, fonts, and avatars in the Look and People
tabs.
3. Go to the More tab → Brand Kit.
4. Click "Create new kit" and give it a name.
5. The kit saves your current colors, fonts, and avatars.
### How to apply a brand kit
1. Open any conversation.
2. Open the Customizer → More → Brand Kit.
3. Pick a saved kit from the list.
4. The kit's colors, fonts, and avatars apply instantly.
### Brand kit limits per plan
- Free: 0 brand kits.
- Lite: 0 brand kits.
- Creator: 1 brand kit.
- Studio: 10 brand kits.
Brand kits are available in Chat mode and its sub-toggles (Thought,
Unsent). They are not available in Story, Notifications, Comments, Hook,
or Slides modes.
---
## Group chats
ChatAnimate supports **group chats** in Chat mode. A group chat has one
sender (you) and multiple recipients, each with their own name, color,
and avatar. Group chats are useful for dramatizing multi-person
conversations — a family group chat, a project team chat, a friend group
planning a trip.
### How to enable group chat
1. Open the Customizer panel.
2. Go to the People tab.
3. Toggle "Group Chat" on.
4. The recipient section expands to show a list of group members.
### How to add group members
1. With Group Chat enabled, click "Add Member".
2. Enter a name and upload an avatar (2 MB max).
3. The member is added with an auto-assigned color from the group color
palette (10 colors cycle through: red, yellow, blue, pink, purple,
teal, green, orange, dark orange, dark red).
4. Repeat for each additional member. There is no hard cap on group
member count, but conversations with more than ~10 members become
hard to follow on a phone screen.
### How to set the sender per message
1. Click a message row in the Timeline panel or click a bubble in the
phone canvas.
2. The message expand panel appears.
3. Pick the sender from the "Sender" dropdown (you, or any group
member).
4. The message reassigned instantly — the bubble moves to the left
(recipient side) or right (your side) depending on who sent it.
### Group chat behavior
- Each group member's bubbles render in their assigned color.
- The sender's bubbles always render on the right in the default color.
- Typing simulation works per-sender — when a recipient is "typing",
their avatar appears with the typing indicator.
- Read receipts appear per-recipient when supported by the skin.
---
## Content you can add to messages
Every message in ChatAnimate can hold more than just text. Here is the
full menu of content types.
### Text
The default. Type any text. Multi-line is supported. Emoji are rendered
as native Unicode emoji (no broken half-emoji frames — the typing engine
uses grapheme clusters so even complex emoji like family compositions
and flag sequences reveal as a single unit).
### Voice notes
Record audio directly in the editor or upload a pre-recorded audio file.
A waveform renders with the audio attached. Voice notes play during
export at the message's scheduled timing slot. Available on Lite+. In
Chat mode, hover a message row and click the Mic button to record or
upload. Recordings and uploads stay on your device while you draft and
only upload to storage when you export, save, embed or publish, so
deleting or re-recording a voice note while editing never leaves an
orphaned file behind. In Call Mode conversations voice notes are the
call's spoken audio: they play under the call screen during preview
and in the exported video alike.
### Voice-over
Most chat-video tools are silent — you get typing sounds and a chime, but
nobody reads the conversation aloud. If you want a narrated video (walk-
throughs, dramatized text stories, accessibility-friendly versions), you
had to record a voice track yourself and line it up in a video editor.
Voice-over fixes that: pick a voice per chat participant, turn on
Narration, and click "Generate All Voice-overs" — every eligible text
message is read aloud — each
voice clip starts exactly when its bubble appears and the timeline
stretches to fit, so the narration and the visuals stay locked together.
Browse the voice catalog (a growing library of female and male voices,
American and British accents, with more languages marked beta, loosely
grouped into Narration, Conversational, Energetic, Character and Calm
categories you can filter by), preview any voice before
assigning it, then give each participant in the People tab their own
voice. Voice clips are generated on our servers, never touch your
storage quota until you export, and live on your device in between
sessions — if a browser cleanup clears them, one click regenerates only
the affected clips. Edit a message after voicing it and ChatAnimate
flags exactly that message's voice as outdated and regenerates just that
clip. Common emoji are read naturally (a laughing emoji becomes a short
laugh); anything unmapped is stripped so nothing robotic slips through.
Long messages over 400 characters are refused with a hint to split them,
so audio and text always match. Available on Lite+ in Chat mode. Each
plan includes a monthly character allowance (Lite 3,000 — roughly 30
voiced messages; Creator 10,000; Studio 25,000) that resets with your
billing cycle, plus a 40,000-per-day burst cap that keeps generation
fast for everyone; one-time Voice-Over Character packs (5,000 for
$4.99, 15,000 for $9.99 — never expire) top up the monthly allowance.
Find it: Customizer → People tab → "Choose voice" per participant, or
the Narration card below the participant sections (toggle + the
"Generate All Voice-overs" button, with the quota it will use shown
right there).
**Use own voices.** Generated voices are convenient, but sometimes the
brand needs a real human — a founder's actual voice, a customer
testimonial recorded by the customer, or audio you already produced with
another TTS service. With Narration on, flip "Use own voices" in the
People tab and a Voice button appears in the message composer: upload an
audio file for each message (MP3, WAV, OGG, M4A, AAC or FLAC, up to
1 MB per message) and it plays exactly as recorded. The message becomes
a voice note: no text, no typing animation, and the timeline holds for
the real length of your audio. Your files are staged in your browser and
only upload to storage when you export, save, embed or publish, so
swapping files while you draft never burns quota. The per-message Voice
button also works inside Call Mode conversations, so a simulated phone
call can carry real human voices end to end — in the editor preview
they play as part of the call audio, matching the export. Turn the toggle off and
the generated voices take over again — nothing you uploaded is lost.
Narration mode (the toggle in that card) changes how the chat plays:
messages appear instantly instead of typing, each message waits for its
voice to finish before the next one shows, thoughts are read aloud as
a soft inner monologue, and the typing-based features step aside —
typing effects, typing sounds, unsent drafts and typing authenticity
are turned off while Narration is on and come back when you turn it
off. Sent and received message sounds still play, and stay under your
control like always.
Story Mode gets the same treatment with a single narrator: pick a
narrator voice in the Story panel (Settings → Narration), click
"Generate narration", and every narrated scene holds on screen until
the voice finishes reading it — the scene never transitions early, and
playback runs at normal speed so the pacing matches the narration
(exported videos carry the narrator's voice in the mix, with a mute
toggle if you want a silent cut). Narration is per scene — switch
scenes to narrate each one — and the same 400-character and stale-clip
rules apply.
**Voice expressions.** Flat, same-speed narration is the #1 giveaway of
robotic text-to-speech — every line lands with identical pacing no
matter who's talking or how they feel. Voice expressions fix that from
the text side: type a tag in a message (or click the Voice chips under
the message editor / composer) and the generated voice changes how that
line is delivered. The core palette: [pause] inserts a short beat,
[long pause] a dramatic one; [emphasis] punches the wrapped words;
[excited], [sad] and [angry] shift speed and energy; [whispering]
delivers the wrapped words quietly. English voices add an expressive
set: [fear], [surprised] and [sarcastic] for tone, [sigh] and [gasp]
for breath, [chuckle] and [laugh] to put a laugh in the voice. The
expressive chips appear under the editor automatically when the
message's voice is English, because English voices run on the
expressive engine. Pick a voice in another language and those chips
disappear: the voice you pick is the language your messages speak.
Two forms work: wrap a span ("[angry]are you serious?[/angry]") or
open one to the end of the message ("[sad] I thought you loved
me."). Honest limits by design: the core tags shape pacing, emphasis
and volume; the expressive tags shape delivery and emotion on English
voices and speak the line plainly otherwise. They never change the
actor's timbre. The chat preview, story player and exported video
always show the clean text — tags never appear on screen, and editing
a tag flags the message's voice as outdated so one click regenerates
it. Tags count toward the 400-character per-message limit. Available
on Lite+ wherever voice-over is (Chat and Story modes).
### Images
Attach images to messages, backgrounds, and avatars. Available on Lite+.
In any image-supporting mode, click the Image button on a message row.
Adjust sizing and position in the message expand panel.
### Video clips (Slides mode only)
In Slides mode, attach MP4 or WebM video clips to slides. The video
plays inline during the slide's timing slot. Available on Lite+.
### GIFs
Search the Klipy GIF library by keyword and attach a GIF to any message.
GIFs play inline during export. Available on every plan in Chat, Comment
and Thought modes. Click the GIF button on a message row to search.
### Stickers
Browse the built-in sticker library by category. Click a sticker to
attach. Available on every plan in Chat, Comment and Thought modes.
Click the Sticker button on a message row.
### Emoji reactions
Add a per-message emoji reaction that appears above the bubble.
Available on Creator+. Click any message to expand, then click the
Reaction picker (emoji icon) and choose an emoji. Reaction timing is
shown on the Timeline.
### Replies / quoted messages
Quote a previous message in a reply. The reply bubble renders above the
new message with the quoted text and sender. Skin-gated — only
WhatsApp Android, WhatsApp iOS, Slack, and GPT skins support replies.
Click a message to expand, type the quoted text and sender in the Reply
input. Available on Lite+ — on Free the Reply input is visible but
locked as an upgrade preview.
### Interstitials
Interstitials let you interrupt a conversation between any two
messages with a card, media or a cinematic event, then continue the
conversation from where it left off. Add images, GIFs, videos, audio
clips, time cards, missed calls, lock-screen moments or custom cards
and the chat resumes right after the beat. The classic trio from the
Timeline panel:
- **Lock-screen** — A phone lock-screen overlay appears between two
messages.
- **Time-jump** — A "2 hours later…" card appears between two messages.
- **Custom** — A custom card with your own text and optional sound clip.
Media and cinematic beats (images, GIFs, video, audio interludes,
narrator cards, missed calls, dramatic pauses) are the Action catalog
in Chat mode — see [Actions: between-message beats](#actions) for
the full list with caps. The base beats (intro, image, dramatic pause,
notification) need the Lite plan or above; video, GIF, audio,
narrator and missed call beats need Creator+. Open the Timeline
panel and click "Add Interstitial" between any two messages, or click
the bold Action button beside the composer in Chat mode.
### Sound clips
Override the default sound for any individual message. Available on
Creator+. Click a message to expand, open the Sound Clip dropdown, and
pick a sound from the library. Plays at the message's scheduled time.
### Per-message timing
Every message has its own Start Time, Duration, and Typing Speed. Adjust
these in the Timeline panel by clicking a message row and dragging the
sliders. The schedule updates live as you drag. Available on Creator+.
---
## Timing and typing authenticity
ChatAnimate's timing engine is what makes conversations feel real. There
are three layers.
### Layer 1 — Typing simulation
When enabled, a typing indicator (three bouncing dots) appears before
each message is sent. The duration of the typing indicator is calculated
from the message length and the typing speed. You can:
- Toggle typing simulation on/off in the Customizer → Time tab.
- Adjust the default typing speed in the Customizer → Time tab.
- Override the typing speed per message in the Timeline panel.
- Set a Typing Pause per message (0-5 seconds of extra "thinking"
delay before the message starts typing). Lite+ — on Free the slider
is visible but locked as an upgrade preview.
- Set a Read Receipt Delay (default 0.4 seconds) so the read receipt
appears shortly after the message is sent.
### Layer 2 — Typing authenticity
Typing authenticity adds realistic human imperfections to the typing
pattern. Available on Creator+. Open the Typing Authenticity button in
the editor header to configure.
There are four imperfection types:
- **False-starts** — The sender starts typing, deletes what they typed,
and starts over.
- **Mid-pauses** — The sender pauses mid-message before continuing.
- **Typos** — The sender makes a typo, deletes it, and types the
correct character.
- **Burst-sends** — The sender types a chunk quickly, then sends.
Pick a preset (casual, dramatic, professional) or reroll the seed for a
new pattern. The seed is deterministic — the same seed always produces
the same authenticity plan, so what you see in the preview is exactly
what you get in the export. Three intensity levels: subtle, medium,
chaotic.
### Layer 3 — Per-message timing
For full control, open the Timeline panel and click any message row.
Adjust:
- **Start Time** — When the message appears.
- **Duration** — How long the message takes to type and send.
- **Typing Speed** — Characters per second.
The schedule updates live. Available on Creator+.
### Why the timing engine matters
If you have ever watched a chat-animation video where the typing felt
robotic — every message the same length, every pause the same duration,
no human hesitation — you understand why this matters. The combination
of typing simulation + authenticity + per-message timing is what makes
a ChatAnimate video feel like a real conversation rather than a
slideshow of text cards.
---
## Actions: between-message beats
Most chat-video tools give you exactly two gears: the conversation, or
a canned intro slapped on the front. But real storytelling needs beats
INSIDE the flow: a "The next morning" title card, an establishing video
between two scenes, the photo of the evidence right when it is
mentioned, a voicemail the audience hears, a narrator setting the mood,
or a phone that rings and nobody picks up. People searching "how to add
a time skip in my chat video" or "make the phone ring in my text story
video" want exactly this.
Actions are those beats. In Chat mode, click the bold **Action** button
beside the message composer and pick from nine kinds:
- **Intro / Title Card** — the same card builder the opening uses:
location cards ("The next morning", "3 weeks earlier"), chapters, hook
cards and title cards, now placed BETWEEN any two messages. (The 20
cinematic styles are an OPENING intro: Editor header, Cinematic
Intros button.)
- **Video** — fullscreen video between conversation sections (upload or
paste a link, up to 15 seconds). Fill or fit, with sound or muted,
volume control. Never any player controls: the video is a beat, not a
player.
- **Image** — a fullscreen photo, screenshot or product shot, with
optional zoom/pan motion and a caption. The Document preset frames it
as a paper card (for emails, receipts, reports and webpage
screenshots); the Social Post preset wraps it in an Instagram/X-style
post card.
- **GIF** — a short looping reaction (upload, paste a link or search a
GIF library from the picker).
- **Audio Interlude** — an audio clip with a configurable visual:
voicemail, podcast, radio or a minimal waveform (upload or paste a
link, up to 15 seconds, volume control). The card's identity text
fills itself from the surrounding conversation — who the voicemail
is from (the contact speaking just before the beat), what the
conversation is about (the topic line), the host and segment count
on the podcast card, and the frequency when your label carries one —
never sample names or numbers.
- **Narrator Card** — a cinematic narrator card that SPEAKS your line
with a voice you pick (click the orange preview button to hear a
voice before you choose it; the text is read aloud by generated
voice, with its own voice, independent of per-message narration).
- **Dramatic Pause** — a controlled hold on black (or transparent)
with optional text. For suspense: silence, then the conversation
resumes.
- **Missed Call** — the phone rings, nobody picks up, the missed-call
card lands. Pick the caller, the ringtone (click one to hear it right
in the picker) and its volume; the window always fits at least one
full ring.
- **Notification** — an OS notification banner mid-conversation (app
name, sender, preview text). The app icon comes from the same app
picker Notification mode uses, and the sound is any clip from the
notification sound library (or none).
Every beat anchors after a message you pick ("after the last message"
and "before the conversation" included), shows as a slim draggable row
in the message list (drag it anywhere to re-anchor it), and appears on
the timeline where you can also stretch its window. Images, GIFs and
audio get one more choice, the overlay toggle: **Full screen beat**
(interrupts, the conversation continues after) or **Overlay on chat**
(the reaction pops OVER the running conversation in one of five
placements and three sizes, without ever switching screens).
Everything is staged or pasted like every other media (no dead links in
exports), video and audio are capped at 15 seconds, visual beats hold
between 0.5 and 6 seconds (a narrator card fits its voice
automatically), and each beat counts toward your plan's message cap.
Actions are a Chat-mode feature (plus Thought and Unsent modes) and
ride along in every export, presentation and replay lane unchanged.
Plans: the Action button itself needs the Lite plan or above (on Free
it stays visible but locked, since Free has no media uploads). Lite
includes the four base beats — Intro / Title Card, Image, Dramatic
Pause and Notification. Video, GIF, Audio Interlude, Narrator Card and
Missed Call are Creator+ (they show a Creator badge in the catalog
on Lite; an existing premium beat opened on a lower plan shows a lock
card instead of its editor, and it will not play in new exports until
the plan is upgraded).
---
## Audio and sound
Audio in ChatAnimate has three layers.
### Sound packs
A sound pack is a bundle of three sounds: typing, sent, and incoming.
Each pack is themed to match a specific phone OS or messaging app. Pick
a pack in the Customizer → Audio tab. All typing, sent, and incoming
sounds update instantly. Available on Creator+ in Chat mode.
### Per-message sound clips
Override the default sound for any individual message. Click a message
to expand, open the Sound Clip dropdown, and pick a sound from the
library. Plays at the message's scheduled time. Available on Creator+.
### Volume and mute
- **Master volume** — Slider 0-100 in the Customizer → Audio tab.
Affects all sound clips and voice notes.
- **Per-mode volume** — In Notifications mode, a separate volume slider
controls only notification sounds. The two volumes are independent —
muting one does not affect the other.
- **Mute** — Toggle sound effects off. Voice-over narration keeps
playing when muted (preview and export alike). Available on every plan.
### Notification sound packs
In Notifications mode, 33 pre-decoded sound packs are included. Each
pack is a different notification sound. Available on every plan.
### Audio in Slides mode
Slides are muted by default. To enable audio, toggle mute off in the
Slides panel. The Audio tab is hidden in Slides mode (typing/sent/
incoming sounds don't apply to slide decks).
### Audio in Story mode
Story mode is silent by default. Turn narration on to add a single
narrator voice: pick a narrator in the Story panel (Settings →
Narration), generate the clips, and each narrated scene holds until its
voice finishes, with the export carrying the narrator in the mix. See
the Voice-over section for the full mechanics.
---
## Scenes and composition
A **scene** is a single message thread. Every conversation starts with
one scene. You can add more scenes to create multi-part stories.
### Single scene
The default. One scene per conversation. Add messages to that scene.
Export plays the single scene in order. Available on every plan.
### Multiple scenes (up to 3 on Creator, up to 5 on Studio)
Chain multiple scenes per conversation for multi-part stories. Each
scene is a separate message thread that plays in sequence. Available on
Creator (3 scenes) and Studio (5 scenes). Open the Customizer → More →
Scene Chaining and click "Add Scene".
### Scene tabs
With 2+ scenes, scene tabs appear at the top of the editor. Click a tab
to switch the active scene. Drag tabs to reorder the scene sequence.
### Scene chaining
Cross-scene continuity rules. Configure whether participants carry over
between scenes, whether the timestamp continues, etc. Available on
Studio. Open Customizer → More → Scene Chaining.
### Split-screen export
Render two phone perspectives side-by-side or stacked in the same
video. Available on Studio. Click the Split Screen button in the editor
header and pick a layout.
---
## Context Switch
A **context** is a full chat-environment snapshot: its own skin, sound
pack, Studio overrides, participants, group members and notification
sound. Multiple contexts can live inside a single scene, and the
conversation can switch between them mid-video — the visual effect is
like switching apps on a phone (a WhatsApp conversation becoming an
iMessage conversation, an Instagram DM becoming a Slack thread, etc.).
Context Switch is **Chat mode only** — the Context Tab Row is hidden in
Story, Notifications, Comments, Slides, Hook
and switching away from Chat mode empties the contexts array. Available
on Creator (up to 2 contexts per scene) and Studio (up to 4 contexts
per scene).
### Where the Context Tab Row lives
The Context Tab Row (a horizontal pill strip, one pill per context)
appears in 2 places when contexts are available.
- **Desktop stage header** — above the phone preview in the editor
canvas. Always visible while Chat mode is active and the plan allows
contexts.
- **Message composer** — just above the Sender (participant) row in
the MessageList. Lets you switch contexts while composing messages.
If you only have one context (the default), the row is hidden — it
only appears once contexts are allowed by your plan AND Chat mode is
active AND (you have 2+ contexts OR your plan allows adding one).
### Adding and managing contexts
- **Add a context** — Click the "+" button at the right end of the
pill strip. Opens the Context Switch management modal. The new
context starts as a duplicate of the active one — change its skin,
sound pack, and Studio overrides to make it distinct.
- **Switch contexts** — Click any pill. The message list re-renders
immediately for the newly-active context.
- **Open the management modal** — Right-click a pill (desktop) or
double-click a pill (mobile-friendly, since phones have no right
click). The modal lets you rename a context, reorder contexts
(drag-and-drop or Move up/down), set the start-scene context (the
one the video opens on, marked with ★ in the pill row), and delete
a context.
- **Delete a context** — Hover a pill and click the X that appears.
A confirmation popup appears. Messages that belonged to the deleted
context are reassigned to the primary context. The start-scene
context cannot be deleted.
- **Reorder** — Drag a pill to a new position, or use Arrow keys to
move focus between pills and Shift+Arrow to move the focused pill.
### Per-context customization
Each context can be independently
customized:
- **Skin** — pick from the Skin Selector dock. Retro skins (AIM 2001,
MSN 2004, ICQ 1999, Nokia 3310, BlackBerry BBM, MySpace 2006) are
not compatible with contexts — once a second context is added,
retro skins are hidden from the picker.
- **Sound pack** — pick in Customizer → Audio. Each context keeps
its own typing / sent / incoming sounds.
- **Studio overrides** — when using the White Label skin, each
context can carry its own Studio Panel preset (Corporate Blue,
Cyber Noir, etc.).
- **Participants and group members** — each context can have its
own sender / recipient pair and its own group chat roster.
- **Notification sound** — override the destination skin's default
notification sound (used when a context switch is triggered by an
incoming notification).
### Context Switch transition settings
Open Customizer → More → Context Settings to control the visual
transition between contexts:
- **Animation type** — `auto` (destination skin's platform default),
`fade`, `slide`, `zoom`, `spring`, or `none`.
- **Duration** — per-half-transition duration, 100–600 ms. Total
transition = 2× this (the overlay covers the swap at its midpoint).
- **Pre-switch gap** — 0–3 s, default 0.6 s. The pause between the
last message in the old context and the start of the switch
overlay. For notification-triggered switches, this becomes the
dwell time the notification banner stays on screen before the
swap.
- **Overlay color + opacity** — the cover overlay's background.
Default is dark (#0d1117) at full opacity. Drop opacity to 0 for
a hard cut (use with `none` animation type).
- **Show skin labels** — toggles the "WhatsApp → iMessage" label on
the overlay.
### Notification-triggered context switches
A context switch can be triggered in two ways:
1. **Sender-initiated** — the sender actively switches to a different
context. The switch overlay fires, then the next message in the
new context appears after the post-switch gap.
2. **Notification-triggered** — an incoming notification on the
receiver's phone triggers the switch. The notification banner
appears, dwells for the configured `notificationDwell` (default
1.5 s), then the switch overlay fires. The receiver's message
appears the INSTANT the overlay ends — no dead-air gap. This is
the canonical "WhatsApp ↔ iMessage" use case.
### Constraints when contexts are enabled
- **Chat mode only** — the Context Tab is hidden in every other
mode. Switching modes away from Chat empties the contexts.
- **No retro skins** — once a second context exists, retro skins are
hidden from the Skin Selector.
- **No scene chaining** — contexts are an alternative to scene
chaining (both create visual variation); the More tab hides Scene
Chaining when 2+ contexts exist.
- **No Brand Kit apply** — Brand Kit applies to one skin, but
contexts have multiple skins; the More tab hides Brand Kit when
2+ contexts exist.
- **No Chroma Key** — chroma key doesn't compose with mid-video
background changes; the More tab hides Chroma Key when 2+
contexts exist.
### Plan caps
| Plan | Contexts per scene |
|---|---|
| Free | 0 (feature disabled) |
| Lite | 0 (feature disabled) |
| Creator | 2 |
| Studio | 4 |
---
## Call Mode
**Call Mode turns any conversation into a phone call.** Call Mode is a
presentation mode of Chat conversations, not a ninth creation mode: a
conversation can play as a **Chat** (the normal chat skin) or **As A
Call** (a realistic call screen covers the phone for that conversation).
The toggle is per conversation, in the Customizer, Look tab, Overlays
sub-tab, Call section. It needs the Lite plan or above (it rides the
voice-over feature because a call plays its messages as voices) and
Chat mode. Drama use cases: the scam call reenactment for TikTok (the
"make a fake incoming call video" format), the dramatic callback beat
in a story video, the moment a chat conversation escalates into a
voice call. People search for it as a fake phone call video, a phone
call simulator or a simulated phone conversation; the render is the
same: a call screen, a running timer and every message spoken with a
voice. A missed call (the ring with no pickup) is an Action beat
between messages, and group conversations marked as calls render as
conference calls with a tile grid.
### The four call scenarios
Every call screen template renders the same scenario points:
1. **Receive Call** (the conversation starts with a message from the
other side): the incoming-call screen shows the caller with
accept/decline affordances while the ringtone plays.
2. **Calling** (the conversation starts with your message): the
calling screen shows "Calling..." while the ringback tone plays.
3. **Active Call**: the connected screen with the caller, a running
00:00 timer and the end-call button. The conversation's messages play
as spoken voices (narration) exactly like they would in a narrated
chat, with the same timing engine.
4. **End Call**: the hangup card with the end sound, then playback
continues to the next conversation or the video ends on the call
ended card (the card holds to the final frame, never dropping to the
chat underneath).
Internet calls (WhatsApp-style) add a **Connecting** beat between the
ring and the timer.
### How to author one
- Open the Customizer, Look tab, Overlays sub-tab and find the Call
section. Switch the toggle from **Chat** to **As A Call**. Narration
turns on automatically (a call needs every message voiced).
- Pick **ISP** (carrier call: ring, 00:00 timer, ended) or
**Internet** (WhatsApp-style: ring, connecting, timer, ended).
- Pick a template: two iOS and two Android call-screen designs,
pixel-accurate to the real phone apps. iOS 1 is the stock Phone-app
style, iOS 2 the darker internet-call layout, Android 1 the Google
Phone Material You family and Android 2 the alt Google layout that
carries the conference layer for groups. The skin selector switches to a
call-template picker while the conversation is a call.
- Set the ring length (how long before the call is answered), the
incoming ringtone (8 built in: Marimba, Digital, Chime, Retro,
Pulse, Bright, Zen, Alert) or the outgoing calling tone, and the end
sound. Ringtones are per conversation. The ring always fits the ring
length: choosing a longer ringtone (or uploading your own, up to 20
seconds) raises the ring length to fit it, and a shorter window plays
a truncated ring instead of silence. Whatever window is set, the ring
STOPS there — audio never overlaps the pickup, the call voices or the
narration, in the preview and the export alike.
- Customize the screen: avatar size, caption size, accent color, the
in-call glyph row (mute, speaker, keypad, add call) and its position,
the end-button position, the background (default, wallpaper with
blur, or your own image).
- Voice every message in the conversation with the Voice tool, or flip
**Use own voices** (People tab → Narration) and upload a recording per
message from the composer's Voice button — real human voices for
marketing teams, localized ads with native speakers, or audio from the
TTS service you already use. Then play or export. The play and export
checks block an unvoiced call with exact counts, and image or GIF
messages are skipped in calls (they play again when you switch back to
chat).
- Group conversations marked as calls render as conference calls
with a tile grid.
Calls and chat conversations can be mixed in one scene: a normal
WhatsApp chat that switches into a call from an unknown number, then
back to chat. Call Mode combines with Context Switch (Creator+) for
the multi-conversation flow.
---
## AI tools
ChatAnimate includes 8 AI tools. Each costs credits; the credit budget
per plan is in the [Plans](#plans) section. All AI tools are accessed
from buttons in the editor header.
### AI Writer (Creator+, 1 credit)
Generate a full Chat conversation from a text prompt. Describe the
conversation you want — the characters, the topic, the tone — and the
AI generates a complete conversation that populates the editor. You can
then edit, restyle, and export. The 1-credit cost is the same regardless
of conversation length (up to 50 messages per generation).
### AI Story Writer (Studio, 1 credit)
Generate multi-slide Story content from a prompt. Describe the story
and the AI generates slides with text and visuals. Useful for narrative
content where the story is more important than the chat format.
### AI Comment Writer (Creator+, 1 credit)
Generate a comment stream with realistic usernames. Describe the post
and the AI generates a comment thread that looks like a real social-
media comment section. Pair with the premium platform picker
(Instagram, TikTok, X, YouTube, Reddit, Facebook) for platform-
accurate styling.
### Screenshot to Animation (Creator+, 2 credits)
Upload a screenshot of a real chat (your own WhatsApp, a customer DM,
a Slack thread) and the AI extracts the messages into an editable
conversation. This is the fastest path from "I have this real chat" to
"I have a ChatAnimate video of it". After extraction, you can edit
text, change the skin, adjust timing, and export.
### Translate (Studio, 1 credit)
Translate all messages in a conversation to another language, in place.
Useful for repurposing content across markets — generate once in
English, translate to Spanish, French, German, Japanese, etc.
### Testimonial Mode (Creator+, 1 credit)
Generate a structured testimonial-style chat from a product
description. Describe the product and the testimonial angle (e.g.
"customer who saved 5 hours a week") and the AI generates a chat
conversation that reads like a real customer testimonial.
### Bulk Conversation Pack (Studio, 3 credits)
Generate multiple conversations at once from a theme. Useful for
content-calendar batches — describe a theme ("12 customer testimonials
for a SaaS landing page") and the AI generates 12 conversations in one
pass.
### Interactive Blueprint (Studio, 2 credits)
Open the Presenter studio, describe the interactive training or
presentation in one sentence (the audience, the topic, what people
should learn) and the AI writes the complete first draft: the chat
conversation, the question cards, the branches, the scoring and the
pass mark. Example chips get you started. The draft lands in the same
preview the import tab uses: you see the message count, the step count
and every warning before applying anything, and everything stays
editable afterwards. Prefer your own chatbot? The Blueprint modal also
carries the full copy-ready prompt, and the complete schema reference is
public at `/blueprint.md` (a pretty, readable copy lives at `/blueprint`).
2 credits per draft.
### Credit budget per plan
- Free: 0 credits/month (no AI access).
- Lite: 0 credits/month (no AI access).
- Creator: 40 credits/month.
- Studio: 80 credits/month.
You can top up credits with **credit packs** if you run out before the
month resets. See the [Plans](#plans) section.
---
## Import and templates
If you already have a WhatsApp `.txt` export, a Slack JSON dump, a
customer-DM screenshot, or a CSV of messages from a CRM, you don't
need to retype anything — ChatAnimate imports it directly. There are
four ways to get content into the editor.
### JSON Import / Export (Free)
Save the full conversation state as a JSON file, or re-import a JSON
file to restore state. Use for backups, for moving conversations
between accounts, or for sharing templates with teammates. Available on
every plan. Open the editor header → Import/Export JSON.
### CSV / TXT Import (Creator+)
Bulk-import up to 300 messages (Creator) or 1000 messages (Studio)
from a .csv or .txt file with sender/message columns. Useful for
importing real chat exports — WhatsApp .txt exports, Slack JSON
exports converted to CSV, etc. Open the editor header → CSV Import.
The import adapts to the editor's ACTIVE mode — the CSV columns stay
the same in every mode: Chat mode turns rows into message bubbles,
Comment mode into comment cards (sender = commenter name), Story mode
into story scenes (bounded by the 35-scene story ceiling), and
Notification mode into notification cards
(sender = notification title, content = body, timestamp = time label).
In Chat mode only, an optional `mode` column (thought / unsent /
static) sets each row's per-message mode; static rows form the
conversation's history block — on-screen from the first frame, never
animated, and capped by the plan's static-messages limit rather than
the message quota.
#### The CSV file format
The exact column layout, so people (and language models generating
files) can write importable CSVs without guessing. The header row is
required; every column except `sender` and `content` is optional and
falls back to a sensible default when left blank.
```
sender,type,content,delay,typing_speed,status,timestamp,context,mode
John,text,Hey! How are you?,2,medium,read,,1,
Sarah,text,I'm great thanks! You?,3,medium,read,,1,
John,text,Did you see the game last night?,2,fast,read,14:35,1,
Sarah,text,Yes!! What a match,2,medium,read,14:36,1,
John,text,Just shipped a new feature,2,medium,read,,2,
Sarah,text,Congrats! Looks amazing,2,medium,read,,2,
John,text,Remember when we first met at the conference?,2,medium,read,,1,static
```
Columns, left to right:
- **sender** (required) — the name shown as this row's author. Any
text works; two or more distinct names auto-promote the import to a
group chat. Missing entirely, the row falls back to "John".
- **type** — the row's message kind: `text` (default), `image`,
`voice` or `gif`. For media rows, `content` carries the public URL
of the file; a `voice` row may also set `voice_duration` (an extra
column, seconds of the voice bubble, default 3).
- **content** (required) — the message text (or the media URL for
image/voice/gif rows). Quote the field when it contains commas.
- **delay** — the pause in seconds before this row appears
(default 2; use 0 for an instant message with no pause).
- **typing_speed** — how fast the typing animation plays for this
row: `slow`, `medium` (default), `fast` or `instant`.
- **status** — the delivery tick under the bubble: `none`,
`delivered` or `read` (default).
- **timestamp** — a display-only time label (for example `14:35`);
shown under the bubble, never used for pacing.
- **context** — routes the row into a Context Switch tab (see
[Context Switch](#context-switch)). Rows sharing one context value
land on the same tab; blank rows go to the active context.
- **mode** — Chat-mode imports only: `chat` (default), `thought` (an
internal thought bubble), `unsent` (typed then deleted, sender-side
rows only) or `static` (on-screen from the first frame, never
animated). Ignored in the other import modes.
Column-name aliases: hand-written files often use natural headers, and
the importer resolves them. For the sender column it accepts `sender`,
`participant`, `participant_name`, `name`, `author`, `commenter`,
`username`, `user`, `from`, `person` or `account`; for the content
column it accepts `content`, `text`, `message`, `body`, `comment`,
`msg` or `caption`. The canonical `sender`/`content` headers always
win when present, and the preview step names the columns it detected.
Unknown extra columns are ignored, so older files keep working.
Participants and sides: the import maps the distinct sender names to
the chat's sides with the same rules the .txt export import uses (a
"You" / People-tab match takes the right side, the first other name
the left, a clean two-name file auto-detects). The preview step shows
the mapping plus any 1-on-1 collapse warnings before anything imports.
Limits and validation: rows are capped by the plan's save-messages
limit (the same cap as the composer; see the limits table). Static
rows do not count against that cap and are capped separately (5 on
Free, 10 on paid plans). Invalid values (an unknown `typing_speed`,
a non-numeric `delay`, a `mode` on a voice row) are flagged per row in
the preview instead of failing the whole file, and a hand-written
line with an unquoted comma in the content is repaired by re-merging
the surplus fields into the content column.
### .txt chat export import (Free)
Import a real chat export (.txt format) from WhatsApp, Telegram, Slack,
Discord or a generic text format. The parser auto-detects the format
and extracts messages, senders, and timestamps. Open the editor header
→ Import TXT.
#### The .txt export formats
The auto-detected parsers, so generated exports land cleanly. WhatsApp
is the most common: each message starts with the bracketed date and
time, then the name and the text.
```
[21/09/2026, 14:35] John: Hey! How are you?
[21/09/2026, 14:36] Sarah: I'm great thanks!
```
Telegram desktop exports put the name and timestamp on their own line,
with the message text on the line below (multi-line messages continue
until the next header line).
```
John, [21.09.2026 14:35:00]
Hey! How are you?
Sarah, [21.09.2026 14:36:12]
I'm great thanks!
```
Slack and Discord exports are usually JSON; upload the JSON file
instead (the same importer accepts Telegram JSON, Slack JSON and
Discord JSON formats). The generic parser accepts `Name: message` per
line (also `Name - message` and `Name | message`) and catches
everything else. Files are capped at 500 KB, and the same plan message
caps as CSV apply.
#### Participants and sides
Ever imported a chat where every message ended up on one side, or the
names got mixed up? The importer reads the people actually in the
conversation (the distinct sender names in the file) and maps them to
the chat's sides before anything lands: a sender matching "You" (or
the name set in the People tab) takes the right side, the first other
name becomes the left-side contact, and a clean two-person file
auto-detects first speaker right, second speaker left. The preview
step shows the mapping ("Maya on the right (You), Daniel on the
left") before you confirm, so a wrong guess is visible before it plays.
A file with a single speaker stays on the right side (with a note),
and a group-style file imported as 1-on-1 collapses the extra names
onto the left (with a warning pointing at Group mode).
### Quick Templates (Free)
Browse the quick-template gallery and load one into the editor. Each
template is a pre-built conversation you can customize. Open the
editor header → Templates.
---
## Export and output
Once your conversation looks right, you need it in the right shape
for the right destination — an MP4 for TikTok, a GIF for an email
embed, a 4K master for a client deliverable, a Presenter page for a
live pitch. ChatAnimate exports to three formats at three
resolutions, plus four special export types.
### MP4 Export (all plans)
The default video format. MP4 files play everywhere — social platforms,
browsers, video editors. Available on every plan at 480p; 1080p on Lite
and above; 4K on Creator and above.
### GIF Export (Creator+)
Export as an animated GIF instead of MP4. Useful for embedding in
emails, docs, and places that don't support video. Available on
Creator+.
### WebM Export (Creator+)
Export as WebM for web embedding. Smaller file size than MP4 for
equivalent quality. Available on Creator+.
### Resolutions
- **480p** — Every plan, including Free. On Free the export carries
the watermark; Lite+ is clean.
- **1080p HD** — Lite and above. Clean (no watermark).
- **4K Ultra HD** — Creator and Studio. No watermark.
### Watermark & Outro
- **Free** — Exports carry a small ChatAnimate watermark, and a
1.5-second "Made with ChatAnimate" outro is stitched to the end of
every Free export.
- **Lite+** — No watermark, no outro (clean exports).
- **Studio** — Custom watermark: upload your own logo to replace the
default branding. Pair with White Label (Studio owner-only) to remove
all ChatAnimate branding from embeds and presenter pages.
### Batch Export (Studio)
Upload a CSV and render up to 20 conversations in one batch. Open
Dashboard → Exports → Batch Export, drop your CSV, click Export. The page
shows a preview of every conversation before you submit, and you get an
email when each render is ready. The page's format guide has the full
column reference plus a downloadable example file.
### Email Export (Creator+)
Export the conversation as an email-campaign format. Useful for
marketing emails where you want to dramatize a customer conversation.
### Screenshot Export
Export a single frame of the conversation as a PNG image. Useful for
thumbnails and social cards.
### Muted Export
Toggle the audio track off in the export modal. Useful when you want a
silent video for autoplay environments (Instagram feeds, etc.). Note:
voice-over narration is exempt, if your messages carry voice-overs,
the export keeps the narration and mutes only the sound effects. For
a fully silent video, remove the voice-overs first.
### Export History (Creator+)
Open Dashboard → Exports to see all past exports with status and
download links. Re-download or re-render as needed. Select multiple
exports with the checkboxes and delete them in one go, and the storage
bar at the top shows exactly how much space those videos are using.
Video files are retained per plan:
- Free: 3 days.
- Lite: 3 days.
- Creator: 7 days.
- Studio: 90 days.
Running out of storage? Delete old exports you no longer need or click
Purge Stale to clear old uploads. Voice clips waiting to be exported
live on your device, so they retry automatically once space is free.
### Save Conversations (Creator+)
Persist conversations to your account for later editing. Creator can
save 20 conversations; Studio has unlimited saves. Free and Lite are
exports-only — they cannot save conversations. Open the editor bottom
bar → Save.
---
## Presentations, replays, and sharing
This section covers the four ways to share ChatAnimate content beyond
the editor: Presenter pages, Embed Player, public Replays, and QR codes.
It also covers Debrief analytics.
### Why presentations exist
Presentations are not just "another export format". They are a
fundamentally different way to share a ChatAnimate conversation, built
specifically for **live presentation scenarios** where a static MP4
falls short. The clearest examples:
- **Conferences and lectures** — A speaker wants to walk an audience
through a staged conversation in real time, with the ability to pause,
skip, and show evidence (the original screenshot, a supporting
document) on demand.
- **Courtrooms and legal proceedings** — A lawyer dramatizes a chain of
text messages for the judge and jury. The Presenter page shows the
conversation playing in real time, with the original screenshots
attached as evidence that can be opened fullscreen on demand.
Presenter notes cue the lawyer on what to say at each beat.
- **Sales demos and customer calls** — A sales rep stages a customer
testimonial as a chat and presents it on a live sales call. The
presenter controls let them pause for objection-handling, skip ahead
if the prospect is short on time, or jump back to a specific message
if a question comes up.
- **Internal training and all-hands** — A product manager walks through
a user-research finding in an all-hands meeting, with the conversation
playing in real time and the supporting evidence (interview clips,
survey results) attached to specific messages.
An MP4 is a passive video — press play, sit back, watch. A Presenter
page is a **live, controllable, evidence-backed** experience. The
presenter controls the playback; the audience sees the conversation
unfold beat by beat; the evidence is one click away whenever a point
needs substantiation.
### Presenter Mode (Studio)
Convert any conversation into a public shareable presentation page.
Open the editor header → Presenter Mode (Studio required). The
presenter is built on Chat mode scenes: it is an authoring workspace
over a conversation, so the toggle is available when the active scene
runs Chat mode (other creation modes show the requirement instead).
Publishing always works from the Present panel.
A Presenter page includes:
- **Opening screen** — Title, subtitle, description, and a "Start"
button.
- **The conversation itself** — Plays in real time, with the presenter
controlling playback (play, pause, skip, jump back).
- **Closing screen** — A summary, a call to action, and contact info.
- **Presenter notes** — Notes attached to messages, riding with the
presentation. Anyone on the live page can open the notes drawer with
the N key or the notes button, the same view the presenter has, so
they are shared material rather than private cues. Use them as a
script, as extra material on the training or session, or as your own
review of things. Write them in the Presenter Studio's Notes tab:
pick a message, type the note, repeat. When a message with a note is
playing, the notes button lights up so viewers know material is
attached there.
- **Evidence panel** — Attach screenshots, documents, or images to
specific messages. When the conversation reaches that message, the
evidence becomes available — click to open fullscreen.
The Presenter page is publicly accessible at `/presenter/{token}` — no
sign-in required to view. The owner can revoke the link at any time
from the dashboard.
### Embed Player (Studio)
Generate an embed code or shareable link to play the conversation
inline on any external site. Paste the embed code into your CMS,
docs site, or marketing page — the player renders inline with no
external platform dependency. Available on Studio. Open the editor
header → Embed Player.
### Public Replays (Free to share, Creator+ to view analytics)
Share a public replay link at `/replay/{token}`. Anonymous viewers can
play the conversation — no sign-in required. The owner gets analytics
on the Dashboard → Debrief page:
- **Dropoff histogram** — Where viewers stopped watching.
- **Completion rate** — What percentage of viewers watched to the end.
- **Share events** — When viewers shared the replay onward.
Available on Creator+ for analytics. The replay itself can be created
on any plan that can save conversations (Creator+).
### QR Code Overlay (Creator+)
Generate a QR code overlay on any video export. Enter a destination
URL (your website, a landing page, a signup form) and the QR code is
rendered as an overlay on the export. Available on Creator+. Open the
editor header → QR Code.
### Conversation Stats
View message count, total duration, and timing breakdown before you
export. Open the message list toolbar → Stats button. Useful for
planning export length and for verifying that the conversation fits
the platform's time limit (e.g. TikTok's 60-second cap for organic
posts). Available on every plan.
### Debrief Analytics (Creator+)
Per-replay analytics for shared replays. Open Dashboard → Debrief.
See dropoff histogram, completion rate, share events, and total view
count. Use it to understand which parts of your conversation are
engaging and which are losing viewers.
## Interactive Presentations
A Studio feature that turns a published Presenter page into an
interactive module: viewers answer questions, read documents and choose
paths while the conversation plays. Open the editor → the Presenter
workspace in the right panel → Interactions.
**You decide what it is.** The Presentation tab asks the one question
that matters: Training or Presentation? Training keeps the scores, the
pass marks, the certificates and the training framing. Presentation is
the same builder with clear-cut presentation words for viewers. The
choice changes only what viewers read, never what you can build.
**Start with AI or a template.** Describe the module in one sentence
(the audience, the topic, what people should learn) and the Interactive
Blueprint AI writes the first draft: the conversation, every question,
the branches and the pass mark. You preview the draft before applying
anything, and everything stays editable. Or start from a template
(Survey, Quiz, Compliance module, HR investigation, Sales roleplay,
Interactive story or Training module). Power users can copy the full
blueprint prompt and use their own chatbot.
**What you can build:**
- **Question gates** — nine kinds of answers: multiple choice,
checkbox, yes or no, rating, dropdown, short text, paragraph,
tap-the-picture and type-the-answer, with optional timeouts, required
answers and per-option scores.
- **Tap-the-picture questions** — upload a chat screenshot, a diagram
or a photo, mark the spots that matter and ask viewers to tap the
red flags. The classic phishing-awareness exercise, native to a chat
medium.
- **Type-the-answer questions** — viewers type the answer; every
accepted spelling matches (case and extra spaces do not matter).
Fill-in-the-blank knowledge checks without multiple-choice tells.
- **Feedback, info and document cards** — pauses that carry text or a
PDF the viewer must read. Documents can require an acknowledgement
that is recorded with the viewer's session, plus an optional minimum
reading time: the confirm button stays locked with a live countdown
until the viewer has spent that long with the document open.
- **Video watch requirements** — a video card can require that the
viewer actually watches a set fraction of the video (90 percent by
default) before continuing. Fast-forwarding does not count.
- **Media library** — upload files and name them once in the Media tab;
the interaction steps decide when each file appears (a video inside a
video card, a PDF inside a document card, an image inside a picture
card), so nothing flashes by surprise mid-conversation. The viewer's
Gallery shows every file with an honest preview: a real thumbnail
for images, a first-frame player for videos and a document tile that
opens the reader for PDFs.
- **Branching paths** — transitions on answers, scores and variables.
A sales roleplay can react differently to each choice. The Branch map
tab draws the whole flow.
- **The Simulate sandbox** — before publishing, walk the module as a
test viewer inside the Simulate tab. Every gate you pass becomes a
card on the path: the question, your answer and the branch it
triggered. Changed your mind? Pick another answer on any earlier
card and the simulation rewinds right there and plays the other
branch live, so you can check every path without starting over.
- **Scores and pass marks** — a pass score with two policies: show the
marks (viewers see their score and continue) or require a retake
(viewers retake the quiz until they pass; their best score is kept).
- **On-demand certificates** — viewers who pass can download a
certificate from the completion card. It is generated only when they
ask for it, prints or saves as PDF locally (one certificate page, no
page chrome) and nothing is emailed. The owner designs it in the
studio: five looks (Heritage Classic, Modern Minimal, Executive
Editorial, Tech Grid and Art Deco Luxe) browsed in a gallery with live
previews, an accent color, a signature line (typed in a script font or
the owner's own uploaded signature image), and the organization logo
from the presentation settings, all visible before publishing. Every
certificate carries a verification code anyone can check.
- **Access control** — public by default, or PIN-protected (five wrong
PINs lock the gate for five minutes), or restricted to invited people
only (see Presenter Assignments below).
**The intro text follows the viewer.** The subtitle or description you
write in the Presentation tab shows on the opening screen, stays under
the title during playback and returns on the closing screen, so the
framing never disappears mid-module.
**Progress survives a reload.** Viewers answer, watch and read across
several minutes; if the page reloads mid-module (a closed laptop, a lost
connection, a crash) the opening screen offers to resume exactly where
they left off, with their answers and score intact. Starting over is
always one click away too.
**Comfort while watching.** The player bar carries a zoom control for
the phone preview (the same cluster the editor uses), driven by the
plus, minus and zero keys on a keyboard. Presentations also work on a
phone: the layout adapts and the zoom pill stays within reach.
**Honest measurement:** sessions are anonymous by default (no names,
no emails, no raw IP data). Owners can turn collection off entirely.
**Insights in plain words.** The presentation's Insights page reads
like a report, not a database: how many of your runs reached each part
of the experience, the questions people missed (ranked by training
area), and the routes people actually took as a readable flow, answer
by answer. One click opens any viewer's own answers, times, path and
certificate. The CSV export is the full report: the headline numbers,
the per-question summary with miss rates, and every person's answers
on one row.
#### The blueprint format (for authors and language models)
Everything above has an exact machine-readable shape: the blueprint.
It is the JSON the in-app AI drafts, the format the studio's Import
tab accepts, and the format the publishing API converts on arrival —
so a language model (or a spreadsheet, or a script) can author a
complete interactive training as one file. The same document works
everywhere: paste it into the Import tab.
This section is the working summary. The complete standalone reference
(every step type, field, default and rule, plus the copy-paste prompt
for your own AI) is public at `/blueprint.md` — hand that file to any
chatbot, describe your training after it, and paste the JSON it
produces into the Import tab.
The overall shape:
```json
{
"version": 1,
"title": "The suspicious invoice",
"contexts": [ ...the other conversations the scenario can flow into (optional)... ],
"messages": [ ...the chat the viewer watches... ],
"steps": [ ...questions, cards, media and logic... ],
"settings": { "passScore": 20, "quizRetake": "enforce", "certificate": true }
}
```
`version` is always the number 1. `messages` and `steps` are both
arrays; include both. `settings`, `participants`, `groupName` and
`contexts` are optional. `title` is optional (the studio asks for it
separately when importing).
**Participants and sides.** The chat has exactly two sides: `right` is
the SENDER, the owner of the phone, "you", the person the viewer
identifies with (the trainee, the protagonist); `left` is the OTHER
person, the contact the chat is with. A message's `from` accepts, in
order of preference: `"left"` / `"right"` (the canonical values —
prefer these), a side alias (`"sender"`, `"me"`, `"you"`, `"self"` →
right; `"receiver"`, `"them"`, `"other"`, `"contact"` → left), or a
participant NAME from the declared participants. Omit `from` and the
sides alternate — a fallback, not a style: when the same person sends
two messages in a row, alternation puts the second one on the wrong
side. Always write an explicit `from` on every message. The optional
`participants` array declares the people and their sides:
```json
[ { "name": "Maya", "side": "left" }, { "name": "Daniel", "side": "right" } ]
```
`name` (required, unique, matched case-insensitively) is the exact
string a message's `from` references; `side` is `"left"` or
`"right"`, defaulting to first = the left-side contact, second = the
right-side sender, everyone else a left-side group member. On import
the names are applied to the conversation (the sender from the
right-side entry, the main conversation's contact from the left-side
one; a context's own `senderName` still wins for named conversations),
and the import's verdict shows the mapping — who lands on which side —
before anything is applied. A thought is always the right-side sender's
inner monologue — never write one for the left-side character.
**Group chats.** Declare 3 to 8 participants and the conversation
becomes a group chat — exactly what the engine's group chats do (a
Slack channel, a team chat, a family group). One participant is on the
right (the phone's owner); everyone else is a left-side member with
their own name, and every message's `from` uses the speaker's name so
the viewer always sees who said what. The optional `groupName` (max 60
characters) is the group's title — the chat header the viewer sees
(defaults to "Group Chat"). Groups shine for security simulations: a
suspicious message lands in a busy channel and the viewer must judge it
against the noise of real work talk. A group is still ONE conversation —
never split one group across contexts; a context is its own separate
conversation (a group context declares its own `participants` the same
way, and its title is its own `name`). Keep groups readable: 3 to 5
participants is the sweet spot; more than 8 is rejected.
**Messages** — the conversation the viewer watches. Each message:
```json
{ "from": "left", "text": "Did you see this invoice?", "delay": 1.5 }
```
- `from`: `"left"` or `"right"`, a side alias, or a participant name
(see Participants and sides above); a context's contact name (its
`senderName`) also resolves, to left. Omit it and the sides alternate.
- `text` (required): the message. Keep it short and human; 12 to 30
messages is the sweet spot.
- `delay`: the pause in seconds before this message appears
(0 to 60; omit for the natural default).
- `image`: a public image URL shown as this message's attachment.
Include it only when you have a real URL (see the URL rule below).
- `thought`: `true` renders the message as an internal thought bubble
instead of a sent message — the SENDER's inner monologue (the
right-side person), shown as an overlay on the phone.
- `typingSpeed`: `"slow"`, `"medium"` (the default), `"fast"` or
`"instant"`, for this message only.
- `note`: a presenter note attached to this message (max 4000
characters, at most 200 noted messages). Notes ride with the
presentation: anyone on the live page can open the notes drawer and
read them, so write them as shared material for the session (extra
background on the training, what to emphasize at this beat, a review
of what happened), never as private secrets. On the live page the
notes button lights up while a noted message plays.
- `context`: the NAME of the conversation this message belongs to
(see CONTEXTS AND CONSEQUENCES below). Omit it for the main
conversation.
**The important message rule.** Messages are the actual conversation
only. Never put explanations, coaching, corrections,
consequences-as-narration, question feedback or card content inside a
message unless a character would naturally say it. A sentence such as
"A few minutes later" is NOT a message (use a `delay` step or an info
card); a sentence explaining what the viewer did wrong is NOT a chat
message (use an info card); a sentence explaining the training lesson
is NOT a chat message unless a character naturally says it during the
scenario. The importer warns about messages that read like time skips
or stage directions.
**Steps** — the interactions. They run in order, top to bottom, in two
families. CARDS the viewer sees and interacts with: `question`,
`feedback`, `info`, `video`, `document`. Every card needs
`afterMessage`: the message NUMBER it appears after, counting from 1.
LOGIC the viewer never sees: `jump`, `score`, `delay`, `variable`,
`condition`, `playback`, `completion`. Any step may carry `id` (a short
lowercase name with dashes, like `"vat-check"`); give ids only to
steps you intend to route to, and keep them unique.
`question` — the viewer answers:
```json
{
"id": "vat-check",
"type": "question",
"afterMessage": 3,
"question": "What should Sam do first?",
"input": "multiple-choice",
"required": true,
"timeLimit": 30,
"answers": [
{ "text": "Check the invoice date", "points": 10 },
{ "text": "Approve it right away", "goTo": "pressure" }
]
}
```
- `input`: one of `multiple-choice` (the default), `yes-no`,
`rating`, `checkbox`, `dropdown`, `short`, `paragraph`,
`image-tap`, `text-match`.
- `answers` (2 to 6): used only with multiple-choice, yes-no,
checkbox, dropdown, image-tap and text-match. yes-no takes exactly
two. Do not use `answers` with rating, short or paragraph.
- Each answer may carry `points` (a positive number awarded when it
is picked) and `goTo` (where picking it leads; see ROUTING).
- `timeLimit`: seconds to answer. `required` defaults to `true`;
`false` lets the viewer skip.
- `area`: a short training-area tag like `"Identity verification"` (max
60 characters). It groups this question in the owner's evidence
report (which weak spots the team has). Use consistent area names
across related questions.
- image-tap (tap the red flags on a picture): each answer carries
`region`: `{ "x": 10, "y": 20, "w": 30, "h": 15 }` (percentages of
the picture), and the step may carry `imageUrl`. Omit `imageUrl`
when no real URL exists: the question still imports and the author
uploads the picture in the editor after import.
- text-match (type the answer): each answer's `text` is one accepted
spelling; matching is case-insensitive and trims extra spaces.
`feedback` and `info` — a card with no answer (`body` required,
`title` optional, optional `image` on the card):
```json
{ "type": "info", "afterMessage": 6, "title": "What just happened",
"body": "Sam asked for the invoice date first. That is the correct move." }
```
`video` — watch before continuing:
```json
{ "type": "video", "afterMessage": 8, "videoUrl": "https://example.com/safety.mp4",
"label": "The safety walkthrough", "requireWatch": 0.9 }
```
`videoUrl` is a public video URL, or omit it (the author picks the
file later). `requireWatch` is the fraction the viewer must actually
watch, 0.5 to 1, default 0.9. Fast-forwarding does not count.
`document` — a PDF to read:
```json
{ "type": "document", "afterMessage": 9, "documentUrl": "https://example.com/policy.pdf",
"label": "The expense policy", "acknowledge": true, "minSeconds": 120 }
```
`documentUrl` is a public PDF URL, or omit it. `acknowledge`: `false`
turns the read confirmation off. `minSeconds` keeps the document open
that long before the confirm button unlocks.
`jump` — skip ahead: `{ "type": "jump", "goTo": "finish" }`.
Its `goTo` is required.
`score` — award points outright: `{ "type": "score", "points": 5 }`.
Use for progress the viewer earns outside questions.
`delay` — a silent beat: `{ "type": "delay", "seconds": 2 }`
(1 to 30 seconds).
`variable` — remember something:
```json
{ "type": "variable", "ops": [ { "op": "set", "name": "chose_audit", "value": 1 } ] }
```
`op` is `set`, `add` or `increment`; `name` is the variable;
`value` is any JSON value. Useful with `condition` below.
`condition` — a fork:
```json
{ "type": "condition", "paths": [
{ "when": "score", "is": "atLeast", "value": 20, "goTo": "passed" },
{ "goTo": "recap" } ] }
```
Paths run top to bottom, first match wins. `is` is one of `equals`,
`isNot`, `atLeast`, `atMost`, `contains`. `when` names the value
compared: `score` (the default) or the `name` of a variable an
earlier variable step set. A path with no `when` is the fallback and
should be last.
`playback` — replay a slice of the conversation:
```json
{ "type": "playback", "fromMessage": 1, "toMessage": 4 }
```
Plays messages `fromMessage` to `toMessage` (1-based, inclusive) and
seeks there. Use for recaps, to revisit a branch, or as the target an
answer routes to when the chat itself should change (see BRANCHES OF
MESSAGES above). Cards only appear when the conversation plays across
their `afterMessage` position, so when you use playback steps, put the
cards that belong to a slice inside that slice's range.
`completion` — an ending, the finish screen:
```json
{ "type": "completion", "title": "Course complete",
"body": "Thanks for playing.", "showScore": true, "showRecap": true }
```
One or more — one per outcome. A single ending comes last; when the
training has different outcomes, each ending is the last step of its
own branch (see DIFFERENT ENDINGS below). It shows the score, the pass
result, the certificate link and the retake decision. `title` and
`body` are the ending's own custom heading and closing text; `showScore`
and `showRecap` default true.
**ROUTING.** By default each step continues to the step below it and
the last step ends the experience. `goTo` changes that — on an answer,
on a jump, on a condition path, or directly on any step (that step's
own exit). A `goTo` value must be one of: the `id` of another step in
this blueprint, exactly as written; `"next"` (the step below, the
default); or `"end"` (finish). Never invent a goTo that is not one of
your own step ids: first give that step an `id`, then use the same
string in goTo.
**BRANCHES OF MESSAGES (changing what the chat itself says).**
`messages` is a pool, not one fixed script: write the messages of
several different continuations in ONE array, then route each answer
to a `playback` step that plays its own slice. That step plays its
message range instead of the linear order, so the viewer literally
watches a different conversation unfold based on their choice. The
normal top-to-bottom order is NOT the flow: which messages play is
decided by playback steps, so never rely on linear execution to land
inside a later branch — enter every branch through an explicit
playback step. A branch needs all four: an answer routing to its
playback step; a playback range containing that branch's messages and
nothing else; a clear destination after the playback (its `goTo` or
the step below, usually the next question — or that branch's own
`completion` when the outcome differs); and no accidental linear path
through another branch. Every branch must end somewhere: a
`completion` step or `"end"` (a branch with no exit is the error the
importer rejects: "can never reach the end"). Put the cards that
belong to a branch inside that branch's range (their `afterMessage`
must sit inside the slice that plays), and rejoin the flow through the
branch's own `goTo` (or the step below it). Branches converge
intentionally: two answers that produce the same outcome may share one
branch; never duplicate a branch just to repeat the same conversation.
The safe path may simply continue the conversation (the character
adapts and the story moves on; no card after every correct answer).
Worked shape: messages 1 to 5 set the scene, a question after message 5;
wrong answers `goTo` `"scam-unfolds"` (a playback step for messages 6
to 12, with its own coaching card after message 9); the right answer
`goTo` `"safe-path"` (a playback step for messages 13 to 16); both end at
a completion — the SAME one when the outcome is the same, or each its
OWN ending when it is not (see DIFFERENT ENDINGS below). In the studio
this is the "New branch of messages"
row under a question's *Where each answer leads*; the sibling row
"New coaching card for this answer" produces the card-per-answer
pattern (an info card anchored at the question's own `afterMessage`).
A question and the cards its answers route to normally sit at the same
`afterMessage`, and the player opens the card that matches the answer
the viewer picked.
**DIFFERENT ENDINGS (one completion per outcome).** When the story
should end differently depending on the decision, give each outcome its
own `completion` step and route each branch to its own ending. The
clear path, every time: each answer that ends the story routes to its
own `playback` step (the answer's `goTo`); that playback step's own
`goTo` names that branch's `completion` step (the ending is reached
explicitly, never by array order); and each ending carries its own
`title` and `body` (the verdict for that outcome: "Correct decision" vs
"What went wrong"). Worked shape: `{ "id": "choice", "type":
"question", "afterMessage": 5, "answers": [ { "text": "Escort him
upstairs now", "goTo": "bad-ending" }, { "text": "Verify with James
first", "points": 10, "goTo": "good-ending" } ] }`, then `{ "id":
"bad-ending", "type": "playback", "fromMessage": 11, "toMessage": 20,
"goTo": "bad-finish" }`, then `{ "id": "bad-finish", "type":
"completion", "title": "What went wrong", "body": "Sam escorted an
unverified visitor..." }`, and the same shape for `good-ending` /
`good-finish`. Two rules keep it valid: a `completion` never carries
`goTo` (an ending is always terminal), and two branches never share one
completion id — though several answers whose outcomes are the same may
share one ending.
**CONTEXTS AND CONSEQUENCES (dramatize what happens next).**
`contexts` (optional, top level) declares the other conversations a
scenario can flow into: `[ { "name": "Unknown number", "senderName":
"+1 555 0104", "call": true } ]` (unique names, at most 4; `senderName`
is the contact shown at the top of that chat). `"call": true` (optional)
marks the conversation as a phone call instead of a chat: the phone
shows a realistic call screen (ringtone, pickup, a running timer, then
hang up) and the conversation's messages play as spoken voices, so every
message in a call conversation must be plain speakable text (no images,
no GIFs) and must carry `"context"`: the conversation's NAME. Any
context can be a chat or a call: there is no cap on call conversations.
A message carrying `"context":
"Unknown number"` plays inside that conversation instead of the main
one: on playback the phone visibly switches chats, exactly like a real
device.
Every conversation is a CHAT (text messages) by default. A context CAN
be a phone call instead: add `"call": true` to its `contexts` entry.
Every context chooses its own channel: a scenario may flow chat →
call → chat, and more than one context may be a call. The "Unknown
number" context that turns out to CALL is the strongest
consequence beat there is. For an unknown contact use a placeholder
phone number as `senderName`, ideally one that already appeared in the
main conversation: the channel the viewer handed over, resurfacing as
the attacker's, is what makes the consequence land. Name contexts like
chat contacts, not callers ("Maya (colleague)", "IT helpdesk", "Unknown
number").
The context rules (what the import enforces): the main conversation
has NO context field and is never declared; every additional
conversation MUST have its own declaration; every message `context`
MUST reference a declared name exactly; and every declared context
MUST actually be used by at least one message (a declared context no
message uses is NOT created on import — the importer warns, and the
studio never gains an empty conversation). A context is a real
conversation between people, never a card, narration, an explanation or
a question. Cards NEVER carry a `context` field; `context` applies only
to messages. A context switch happens ONLY through playback of the
messages carrying the new context: when a playback range executes those
messages, the phone visibly switches chats. Never explain the switch
inside the main conversation.
The consequence pattern (use it whenever a wrong decision has a
real-world cost): do NOT show the correction card immediately after
the wrong answer when the scenario is specifically designed around
consequences, because the consequence must happen in the conversation
first. The wrong answer does NOT open an explanation card; the scenario plays out (the requester thanks the viewer, the chat
continues, seemingly fine), and LATER the scenario switches to a
declared secondary context where the consequence is demonstrated
("Hi, I'm from Finance. Maya gave me this number, said you could
help...") so the viewer realizes their earlier decision opened another
door into the company; the consequence playback ends, and ONLY THEN an
info card explains what went wrong — what information was exposed, how
it was used, what the correct decision would have been, and why it
matters — anchored after the last message of the reveal and routed to
explicitly rather than left to appear by order. Then the flow routes
back to the next training point or the convergence point. This is
"consequences, not corrections": the cost of the mistake is SHOWN in
the chat itself, not merely explained. The consequence context is still
a conversation; the explanation of the consequence is a card. The main
conversation stays context-omitted; only the follow-on conversations
are named. Names referenced by messages but missing from `contexts` are
created automatically on import (the importer tells you).
Card/conversation separation: "A few minutes later" and every other
time-skip line (a `delay` step), "What just happened", "What went
wrong", "Correct answer", "The attacker used your information", "You
should have verified...", training explanations and correct-answer
explanations are NEVER messages — they belong in info or feedback
cards. A message should only exist if it is something a participant in
the conversation would actually send.
**VARIETY (do not turn every training into a quiz).** The conversation
itself is the training interface. Do not default to chat, question,
card, question, card, completion. Mix: decisions that change what the
chat says (branch-per-answer) rather than which card explains the
mistake; a scenario that CONTINUES after a decision (the viewer refuses,
the character adapts and the story moves on without any card
interrupting); questions only where the moment genuinely demands a
decision; one recap at the end instead of a coaching card after every
answer; info cards reserved for the one or two rules the viewer must
actually internalize.
**SCORING.** The running score starts at 0. Correct answers add their
`points`; `score` steps add theirs. `settings.passScore` is the number
of points needed to pass, and the completion screen compares the
running score against it.
**SETTINGS.**
```json
{ "passScore": 20, "quizRetake": "enforce", "certificate": true,
"typing": "instant", "reanswer": "allow" }
```
- `passScore`: points needed to pass, or `null` (the default) for no
pass mark.
- `quizRetake`: `"show"` (viewers see their score, the default) or
`"enforce"` (viewers retake until they reach passScore; requires
passScore).
- `reanswer`: `"keep-first"` (the default — an answered question stays
answered and the first answer is the one that scores) or `"allow"`
(viewers may reopen an answered question; the latest answer
replaces the first and the score follows it).
- `certificate`: `true` offers passing viewers a downloadable
certificate. Default `false`. For compliance training, not
presentations.
- `typing`: `"instant"` makes every message appear immediately with no
typing animation. Default `"typing"` (the realistic typed-out chat).
`"instant"` overrides any per-message typingSpeed.
**MEDIA PLACEHOLDERS (images, videos, PDFs).** video steps, document
steps, image-tap pictures, a message's `image` and a card's `image`
accept real public URLs. When your description gives you no real URL,
do not guess: omit `videoUrl` / `documentUrl` / `imageUrl` entirely and
write `label` as the author's instruction, for example `"label":
"Upload: the 2026 expense policy PDF"` or `"label": "The phishing email
screenshot (upload after import)"`. The step still imports and its
editor shows the upload lane for exactly that file, so the author
knows which file belongs where. A fabricated URL breaks the experience
for every viewer; an omitted field with a good label costs the author
one upload.
**COMBINATIONS THAT WORK TOGETHER.** Coaching card per answer: each
wrong answer carries its own `goTo` pointing at an info card anchored
at the same `afterMessage` as the question, and all cards meet again
at the next step. Branch of messages per answer: answers route to
playback steps with different ranges, so the chat itself changes.
Media then question: a video or document step first, then its `goTo`
or the step below leads into the question that checks understanding.
Score fork near the end: a condition on `score` sends passers straight
to the completion and sends strugglers to a recap playback step
first. Mixed depth: a branch may itself contain questions, videos and
documents, so one wrong turn can open a whole corrective sequence
before rejoining.
**The rules the importer enforces.** `version` must be 1. Every
question, feedback, info, video and document step needs `afterMessage`
(1-based, inside the message range). Choice questions need 2 to 6
answers. Every `goTo` must match a step id in this blueprint, or be
`"next"` or `"end"`. A playback range must be a real ascending range
inside the conversation. One or more completion steps: exactly one
when the training has a single outcome (it comes last), or one per
outcome when endings differ (each is the last step of its own branch;
see DIFFERENT ENDINGS — a completion never carries `goTo`, and a branch
that reaches no completion or `"end"` is rejected). Unknown
fields are ignored, never fatal. A declared context no message uses is
not created (the importer warns); a `context` field on a card is
ignored (cards are never part of a conversation); messages that read
like narration and anchors that reach past the last message produce
warnings too. `from` must resolve to a side (left/right, an alias, or a
declared participant name — anything else alternates and every such
message warns); a `thought` is always the right-side sender's; a
message's `delay` is the pause before it appears (0 to 60 seconds)
while a `delay` step is a silent beat between steps (1 to 30 seconds).
And NEVER invent a URL: `imageUrl`,
`videoUrl`, `documentUrl`, a message's `image` and a card's `image`
accept real public URLs only. When the description does not give you
one, omit the field: the author adds the file in the editor after
import. A fabricated link breaks the experience for every viewer.
When in doubt, produce a simpler valid blueprint rather than guessing
an option.
**A complete minimal example:**
```json
{
"version": 1,
"messages": [
{ "from": "left", "text": "Morning! Quick one before I head out." },
{ "from": "right", "text": "Sure, what's up?", "delay": 1.5 },
{ "from": "left", "text": "Finance says an invoice from our supplier looks wrong. Can you check it before the payment run?" },
{ "from": "right", "text": "On it. Sending it over now.", "delay": 2 }
],
"steps": [
{
"id": "first-move",
"type": "question",
"afterMessage": 4,
"question": "What should you check FIRST?",
"input": "multiple-choice",
"answers": [
{ "text": "The bank details against the contract", "points": 10 },
{ "text": "Pay it now, dispute later", "goTo": "wrong-move" }
]
},
{
"type": "info",
"afterMessage": 4,
"title": "Right call",
"body": "Bank details first. Changed bank details are the classic invoice red flag."
},
{ "type": "jump", "goTo": "finish" },
{
"id": "wrong-move",
"type": "feedback",
"afterMessage": 4,
"title": "Not yet",
"body": "Paying first means the money is gone if it is fraud. Always verify the details."
},
{
"id": "finish",
"type": "completion",
"title": "Module complete",
"showScore": true
}
],
"settings": { "passScore": 10, "quizRetake": "show" }
}
```
Paste that into the studio's Import tab and it becomes a runnable
module: the conversation plays, the question opens after message 4, the
wrong branch shows the feedback card, both paths meet at the
completion screen, and the score decides the pass result.
## Training solution pages
The corporate-facing landing family for Interactive Training: one page
per scenario, each carrying live training examples visitors can play
in the browser before signing up. The hub is `/solutions` and links
every page below (the pages cross-link each other the same way):
- `/solutions/security-awareness-training` — the awareness vertical:
suspicious messages employees learn to read, with scores and an
audit trail.
- `/solutions/phishing-simulation` — the phishing exercise people play
as a chat conversation. No email server, no platform.
- `/solutions/customer-service-training` — de-escalation and
difficult-customer roleplay on a phone.
- `/solutions/compliance-training` — code of conduct, harassment
prevention and data handling with acknowledgements and
certificates.
- `/solutions/employee-training` — onboarding, policy rollouts and
refreshers delivered as a link with a roster.
- `/solutions/scenario-based-training` — branching scenarios where
the decision has a consequence that plays out.
- `/solutions/sales-training` — objection handling drilled as private
conversation practice.
- `/solutions/workplace-safety-training` — toolbox talks and hazard
spotting for deskless teams.
- `/solutions/microlearning` — two-minute lessons delivered as chat.
- `/alternatives/no-lms-training` — the comparison page: the LMS
project versus a training link, with a side-by-side table.
**The live examples.** Every solution page carries a live-examples
section. Each example is a real published training opened straight
from the page: the card shows the title, a screenshot, how long the
exercise takes and a button that opens the training link in a new tab.
Examples are curated by the team through the admin dashboard and can
be attached to any of the categories above. When a category has no
published example yet, the section says the library is warming up and
invites builders to share theirs through the contact page.
## Interactive research solution pages
The second landing family under `/solutions`: the same interactive
engine pointed at listening instead of training. Five pages, each with
its own design and a live demo visitors answer right on the page:
- `/solutions/interactive-surveys` — the flagship: surveys that branch
on every answer. The playable demo walks a visitor through a real
branching survey and shows the answer log the builder receives.
- `/solutions/customer-feedback` — customer feedback and voice of
customer: scores with contextual follow-ups that route by score
band, stated reason and product area.
- `/solutions/conversational-research` — scenario research: UX
studies, concept testing and message testing where participants
answer from inside the situation instead of imagining it.
- `/solutions/interactive-assessments` — scenario-based assessments
and situational judgment tests with weighted scoring, pass marks,
retakes and certificates.
- `/solutions/interactive-polls` — polls with follow-up questions
that branch on the vote, stated honestly including what a
branching poll does not claim to do.
The `/presentations` page carries a "One engine. More than training."
section linking the whole family, the `/solutions` hub lists all five
pages in its interactive research section and the site footer links
the flagship and the research page directly.
## Presenter Assignments and training tracking
A Studio feature for training and compliance: the owner emails personal
links, the platform measures completion against explicit requirements.
Open Dashboard → Presentations → the Assign action on any row.
**The loop:**
1. Paste a list of emails (per-line validation, duplicates removed).
2. Set requirements: minimum active time, read-to-the-end coverage,
a pass score and required document acknowledgements. Match all or
any.
3. Optionally set a due date, a personal note and reminder preferences.
4. Send. Each person gets one personal link that keeps their progress
across visits, so a module can be finished over several sittings.
**What the platform measures (honestly):**
- Active time counts only while the tab is visible. Pauses count.
Hidden-tab time never counts.
- Coverage is the share of content actually consumed on the path the
viewer took. Someone who branches to path B is never penalized for
unread messages on path A.
- Playback speed is locked to 1x and forward seeking is limited to the
furthest message reached. Backward review is always free.
- The best quiz score is kept, so retakes never lower a result.
**For the owner:** a roster with completion rates, average time and
scores, per-person progress, acknowledgement state, reminder counts and
attempt counts. Each person with a recorded run has an Answers toggle
that shows what they actually answered: the option they chose on every
question (which branch), the spot they tapped on a picture and any text
they typed. A completed person's certificate has a copy-link button in the roster.
The campaign page also has a Copy share link button for the public
training URL (group chats, notice boards; restrict it to invited
people only with the assignment option if you want). Resend or revoke
any individual link. Export the roster as CSV for audits: one row per
person with their name, status, score, attempt count, the recorded
answers, acknowledgement timestamp and certificate verification code
(the one place where full emails appear, and every export is logged).
Automatic reminders have hard caps: never-started people get at most
two nudges, people mid-way get a weekly reminder at most, and past-due
reminders stop after three days. A daily digest email is available as
an opt-in.
Certificates for assigned completions carry the invitee's name and a
verification code anyone can check against the public certificate URL.
---
## Teams
When you're producing chat videos at scale — an agency with multiple
producers on one client roster, or an in-house content team sharing
brand kits across campaigns — you need more than one seat.
ChatAnimate supports team collaboration on the Studio plan. A team
has one owner and up to 3 members.
### Team seats (Studio)
Invite up to 3 team members via email. Invitations expire after 7 days.
Open Dashboard → Team (Studio required) to invite, resend, or revoke
invitations.
### Shared resources
Conversations and brand kits can be shared across the team. The owner
controls what is shared; members get read-write access to shared
resources.
### Team usage rollup
The owner sees a rollup of team usage — total exports, total AI
credits used, total storage — on the Dashboard → Team page. Members
see only their own usage.
### Roles
- **Owner** — The Studio subscription holder. Can invite and remove
members, manage billing, manage all shared resources.
- **Member** — Can use the team's Studio features (subject to the
team's monthly export and AI credit budgets). Can be granted access
to specific shared resources.
### White Label (Studio owner-only)
White Label removes all ChatAnimate branding from exports, embeds,
and presenter pages — built for agencies, SaaS founders, and brand
teams who need the final video to carry their identity end-to-end,
not ChatAnimate's. It is automatically applied on the Studio plan
as the team owner. Custom watermark replaces default branding.
Embeds and presenter pages show no ChatAnimate branding.
White Label pairs with the Studio Skin System (see the Studio Skin
System section above): click the floating Skin Selector dock at the
top-left of the canvas and pick the White Label skin, then open the
Customizer → Look → Appearance sub-tab to use the Studio Panel to
set your app identity, header, composer, bubble material,
typography, animations, and cinematic effects. The 15 quick-start
presets (Corporate Blue, Cyber Noir, Luxury Gold, etc.) let you
stand up a fully branded messenger in one click; the 9 collapsible
sub-cards let you fine-tune any individual setting.
The result is a chat video that carries your brand identity end-to-end
— your app name in the header, your icon in the status bar, your
accent color on the bubbles, your font on the text — with no
ChatAnimate logo or watermark anywhere in the export, embed, or
presenter page.
---
## Plans and pricing
ChatAnimate has 4 plans, billed monthly or yearly (yearly saves 21%).
### Free — $0 / $0
Try the editor. 1 export per month at 480p, with a ChatAnimate
watermark and outro. 1 skin (WhatsApp Android). 0 saved conversations.
0 AI credits. 1 scene per conversation. 3-day video retention.
### Lite — $5/mo or $48/yr
Uploads, 1080p HD, no watermark, curated backdrops (the built-in
pattern and video-loop library behind the phone or story) and the base
action beats between messages (intro cards, images, dramatic pauses
and notifications). 7 exports per month. 3 skins (WhatsApp Android,
WhatsApp iOS, Instagram). 0 saved conversations. 0 AI credits. 1 scene
per conversation. 200 MB image/voice storage. 3-day video retention.
### Creator — $19/mo or $180/yr (most popular)
AI Writer, brand kits, multiple scenes, all skins, 4K export, custom
backdrops (upload your own images and videos or paste any video
link, gameplay included) and the premium action beats (video, GIF,
audio interlude, narrator card, missed call). 20 exports per month.
All 20+ skins unlocked. 20 saved conversations. 40 AI credits per
month. 3 scenes per conversation. 1 brand kit. 500 MB image/voice
storage. 7-day video retention.
### Studio — $49/mo or $468/yr
Batch export, team seats, white label, translate, AI Story Writer.
200 exports per month. Unlimited saved conversations. 80 AI credits
per month. 5 scenes per conversation. 10 brand kits. 3 team members.
1 GB image/voice storage. 90-day video retention. White label
(owner-only). Custom watermark.
### Credit packs
Every paid allowance has a matching top-up pack: one-time purchases
that never expire and stack on top of your monthly plan quota. Buy
them on the pricing page or under Dashboard → Billing → Credit Packs.
- **AI credit packs** (for AI Writer, AI Story Writer, AI Comment
Writer, Screenshot to Animation, Translate, Testimonial Mode, Bulk
Conversation Pack and the Interactive Blueprint) — 10 credits for
$4.99, 30 credits for $11.99, 75 credits for $24.99.
- **Export packs** (extra video exports) — 3 exports for $3, 10
exports for $9, 25 exports for $20.
- **Voice-Over Character packs** (extra narration characters) — 5,000
characters for $4.99, 15,000 characters for $9.99.
Pack credits are consumed only after the month's plan allowance runs
out, and anything left keeps waiting — they sit on your account until
you use them, however long that takes.
### Billing portal
Manage your subscription in the billing portal. Open Dashboard → Billing →
Manage Subscription to:
- Upgrade or downgrade between plans.
- Switch between monthly and yearly billing.
- Cancel your subscription (cancels at the end of the current billing
period).
- Update your payment method.
- View billing history and download invoices.
### Refunds
Refunds are handled case-by-case via the contact form at `/contact`.
If you forgot to cancel before a renewal and haven't used the plan
since the renewal date, contact support within 7 days of the renewal
for a full refund.
### Deleting your account
Delete your account from Dashboard → Settings → Danger Zone. Password
accounts confirm with their password, social accounts type DELETE. The
deletion removes your profile, conversations, saved media, brand kits,
API keys and webhooks; an active subscription is cancelled so you are
not charged again. A confirmation email follows with a private feedback
link (valid for 30 days) that asks why you left, in your own words. The
action is permanent and previous data cannot be restored.
---
## Per-plan limits
All numbers below are the canonical limits sourced from the plan
configuration. If a number on the pricing page or in the editor
disagrees with this table, defer to the pricing page (`/pricing`) and
contact support.
| Limit | Free | Lite | Creator | Studio |
|---|---|---|---|---|
| Monthly exports | 1 | 7 | 20 | 200 |
| Saved conversations | 0 | 0 | 20 | unlimited |
| Monthly AI credits | 0 | 0 | 40 | 80 |
| CSV/TXT import messages | 20 | 30 | 300 | 1000 |
| Save messages per scene | 20 | 30 | 300 | 1000 |
| Export messages per scene | 20 | 30 | 50 | 50 |
| Slides per scene | 0 (disabled) | 0 (disabled) | 10 | 15 |
| Scenes per conversation | 1 | 1 | 3 | 5 |
| Batch exports | 0 | 0 | 0 | 10 |
| Team members | 0 | 0 | 0 | 3 |
| Brand kits | 0 | 0 | 1 | 10 |
| Image/voice storage | 0 MB | 200 MB | 500 MB | 1024 MB |
| Monthly voice-over characters | 0 (disabled) | 3,000 | 10,000 | 25,000 |
| Daily voice-over characters (burst cap) | 0 (disabled) | 40,000 | 40,000 | 40,000 |
| Slides max duration | 0s (disabled) | 0s (disabled) | 180s (3 min) | 480s (8 min) |
| Video retention | 3 days | 3 days | 7 days | 90 days |
| Experience steps per presentation | 0 (disabled) | 0 (disabled) | 0 (disabled) | 100 |
| Presenter documents per presentation | 0 (disabled) | 0 (disabled) | 0 (disabled) | 15 |
| Presenter sessions retention | 0 (disabled) | 0 (disabled) | 0 (disabled) | 60 days |
| Invites per assignment | 0 (disabled) | 0 (disabled) | 0 (disabled) | 500 |
| Assignments per presentation | 0 (disabled) | 0 (disabled) | 0 (disabled) | 50 |
### Notes on the limits
- **Monthly exports** is resolution-agnostic. A Creator user can spend all
20 exports on 4K if they want — there is no per-resolution cap.
- **Saved conversations** is the number of conversations you can persist
to your account for later editing. Free and Lite are exports-only —
they cannot save.
- **AI credits** reset monthly on your billing date. Unused credits
don't roll over. Top up with credit packs if you run out.
- **CSV/TXT import messages** is the cap per single import operation.
You can do multiple imports per conversation up to the per-scene
message cap.
- **Save messages per scene** vs **Export messages per scene** are
different caps. You can save a long conversation (e.g. 300 messages
per scene on Creator) for replay/presenter purposes, but exports are
capped at 50 messages per scene (Creator and Studio) to keep render
times predictable. When a scene exceeds the export cap the video
export button is disabled and the modal points you at the embed
code, QR code link, replay link or presentation link instead.
- **Story mode scenes** — every message in a story is one scene, and
stories hold up to 35 scenes on every plan (the lower of your plan's
save cap and 35: Free 20, Lite 30, Creator 35, Studio 35). Long
courtroom-style conversations belong in Chat mode, where the save
cap (300/1000) and the presenter page are built for them.
- **Slides per scene** — every slide is an image or a video, so decks
are capped at 10 slides per scene on Creator and 15 on Studio (the
lower of this cap and your save cap). Because 15 sits under the
export cap (50), a deck within the ceiling is always video-
exportable. Slides mode is Creator+ only, so Free and Lite show 0
(disabled).
- **Comments and notifications** — comment cards and notification cards
are messages, so they use the Chat caps above (save and export) with
no separate limits.
- **Scenes per conversation** — Creator can chain up to 3 scenes;
Studio up to 5.
- **Batch exports** — Studio can render up to 10 conversations in one
batch.
- **Team members** — Studio can invite up to 3 members (4 total seats
including owner).
- **Brand kits** — Creator can save 1 brand kit; Studio can save 10.
- **Image/voice storage** is the total storage for uploaded images and
voice notes across all your conversations.
- **Monthly voice-over characters** is the billed allowance — the number
of characters you can synthesize per billing cycle. Unused characters
don't roll over. Top up mid-cycle with one-time Voice-Over Character
packs (5,000 for $4.99, 15,000 for $9.99); pack characters never
expire.
- **Daily voice-over characters (burst cap)** caps synthesized speech at
40,000 characters per user per day (roughly 400 voiced messages) — it
resets at midnight UTC and exists purely to keep generation fast for
everyone. Voice-over itself is available from Lite up; voice clips
only count against your storage quota when a video export uploads
them.
- **Slides max duration** — Creator can render slides up to 3 minutes;
Studio up to 8 minutes.
- **Video retention** — How long rendered video files are kept on
your account before being removed. Re-render anytime from the
Exports dashboard.
---
## Quick FAQ
### Can I use ChatAnimate without signing up?
You can browse the `/examples`, `/features`, `/pricing`, `/faq` and
`/llms-full.txt` pages without an account. To use the editor or
export, you need a free account.
### Can I try ChatAnimate before paying?
Yes. The Free plan includes 1 480p export per month, with
no credit card required. Sign up, open the editor, build a
conversation and export.
### Do my credits roll over?
No. AI credits reset monthly on your billing date. Unused credits
don't carry over to the next month. Top up with credit packs if you
run out.
### Can I cancel anytime?
Yes. Open Dashboard → Billing → Manage Subscription → Cancel. Your
subscription cancels at the end of the current billing period. You
keep access until then.
### Can I get a refund?
Refunds are handled case-by-case. If you forgot to cancel before a
renewal and haven't used the plan since the renewal date, contact
support within 7 days of the renewal for a full refund. Use the
contact form at `/contact`.
### Can I upgrade or downgrade between plans?
Yes, anytime. Upgrades take effect immediately and you're charged the
prorated difference. Downgrades take effect at the end of the current
billing period — you keep the higher-tier features until then.
### Can I switch between monthly and yearly billing?
Yes. Open the billing portal and switch. The change takes effect on
your next billing date.
### What happens to my saved conversations if I downgrade?
Your saved conversations are preserved, but if you exceed the new
plan's saved-conversation cap, the oldest conversations become read-
only until you upgrade again or delete some. Your exports and AI
credits are not affected.
### What happens to my brand kits if I downgrade from Studio to Creator?
You keep all 10 brand kits but cannot create new ones until you have
fewer than 1 (the Creator cap). Delete brand kits from the Brand Kits
dashboard to get under the cap.
### Can I use ChatAnimate for commercial purposes?
Yes. All plans, including Free, allow commercial use of the exported
videos.
### Can I remove the ChatAnimate watermark?
Yes — upgrade to Lite or above. Free exports carry a small ChatAnimate
watermark plus a 1.5-second outro; Lite+ exports are fully clean (no
watermark, no outro).
### Can I put gameplay behind my chat or story video?
Yes. Backdrops are the feature for this: the stage layer behind the
phone (chat) or behind the story text. On the Backdrop → Video tab
(chat) or the Background → Videos tab (story), paste a link to your
gameplay footage (or any video — a screen recording, a timelapse, a
product loop). The linked video is imported, checked and used
automatically as the looping backdrop; your scene simply plays on top
of it. The curated pattern and video library starts on Lite; uploads
and pasted links are Creator+. See the Backdrops section under Skins
and appearance.
### Does ChatAnimate support my language?
The editor UI is in English. The chat content can be in any language —
ChatAnimate uses Unicode throughout, so non-Latin scripts (CJK,
Arabic, Cyrillic, etc.) render correctly. The Translate AI tool
(Studio) can translate conversations between 30+ languages.
### Can I import a real WhatsApp chat?
Yes. Export the chat from WhatsApp as a .txt file, then use the
"Import TXT" button in the editor header. The parser auto-detects the
WhatsApp format and extracts messages, senders, and timestamps.
### Can I import a Slack export?
Yes. Slack exports as JSON. Use the "CSV Import" button (after
converting the JSON to CSV) or the "Import TXT" button (if you have a
Slack .txt export). Creator+ required.
### Can I import a Discord export?
Yes. Discord exports as JSON. Convert to CSV and use "CSV Import", or
use the "Import TXT" button for .txt exports. Creator+ required.
### How long does a render take?
Most renders complete in 60-120 seconds. 4K renders and batch exports
take longer, up to 10 minutes per 4K video. You'll get an email when
the render is complete.
### Can I render at 4K on Creator?
Yes. 4K is available on both Creator and Studio. Free renders at
480p; Lite adds 1080p; Creator and Studio additionally support 4K.
### Can I use ChatAnimate offline?
No. ChatAnimate is a web-based tool. The editor and the service
both require an internet connection.
### Can I host ChatAnimate on my own servers?
No. ChatAnimate is a hosted SaaS. If you need on-premise rendering,
contact support about enterprise plans.
### Does ChatAnimate have a dark mode?
The editor is dark-themed by default. The public marketing pages
(`/`, `/pricing`, `/features`, etc.) are also dark-themed.
### How do I report a bug?
Use the contact form at `/contact` or email support. Include the
conversation URL (if applicable), the steps to reproduce, and a
screenshot or screen recording.
---
## Glossary
- **Scene** — A single message thread. Every conversation has at least
one scene. Multi-scene conversations chain scenes in sequence.
- **Skin** — A visual theme for the chat interface (WhatsApp iOS,
iMessage, Instagram, AIM 2001, etc.). 20+ skins available.
- **White Label skin** — The blank-canvas branded messenger skin
(Studio plan) that powers the Studio Skin System. Picking it via
the floating Skin Selector dock replaces the Appearance sub-tab
with the Studio Panel — 15 quick-start presets + 9 collapsible
sub-cards for end-to-end brand control.
- **Studio Panel** — The customization surface that replaces the
standard Appearance sub-tab when the White Label skin is active.
Exposes 15 quick-start presets and 9 collapsible sub-cards (App
Identity, Status Bar, Header, Composer, Bubble Presets,
Typography, Message Animations, Cinematic Effects, Quick Start).
Studio plan.
- **Studio Skin System** — The combination of the White Label skin
+ Studio Panel. The foundation of the White Label workflow.
- **Gradient builder** — A 2-5 color stop custom gradient builder
inside the Background → Gradients tab. Free plan. Coexists with the
58 curated palette swatches.
- **Mode** — A creation format (Chat, Story, Notifications, Comments,
Hook, Slides, Thought, Unsent). Each mode produces a different kind
of video.
- **Brand kit** — A saved bundle of colors, fonts, and avatars that
can be applied to any conversation.
- **Interstitial** — A card, media clip or cinematic event that
interrupts a conversation between any two messages (lock-screen,
time-jump, custom card, image, GIF, video, audio, missed call,
narrator card); the chat continues right after it.
- **Typing authenticity** — A pattern of typing imperfections (false-
starts, mid-pauses, typos, burst-sends) that makes typing feel
human. Deterministic — same seed produces same plan.
- **Sound pack** — A bundle of typing, sent, and incoming sounds
themed to a phone OS or messaging app.
- **Sound clip** — A per-message sound override.
- **Hook intro** — A cinematic opener that plays before the first
message.
- **Cinematic intro** — A 20-style futuristic opener (Creator+).
- **Presenter page** — A public, shareable presentation page with
opening/closing screens, presenter notes, evidence panels, and
fullscreen playback. Studio plan.
- **Replay** — A public, anonymous-viewer replay link. Owner gets
analytics.
- **Debrief** — Per-replay analytics (dropoff histogram, completion
rate, share events).
- **Evidence panel** — A panel in a Presenter page that shows attached
screenshots/documents/images fullscreen on demand.
- **Watermark** — The ChatAnimate logo overlaid on Free exports
(alongside the 1.5s outro). Lite+ exports are clean; Studio can
replace it with a custom logo.
- **White label** — Removal of all ChatAnimate branding (Studio owner-
only). Pairs with the Studio Skin System for end-to-end branded
messenger videos.
- **Credit** — A unit of AI usage. Each AI tool costs 1-3 credits.
Credits reset monthly; top up with credit packs.
---
## Notes for LLMs, crawlers and search engines
### What you may do with this document
- Quote, summarize, paraphrase, or cite freely.
- Render as plain text or convert to HTML.
- Use as context for answering user questions about ChatAnimate.
- Use as training data for chat animation / video generation tasks.
### Where to defer when in doubt
- **Per-feature matrix** (mode availability, plan badges, popularity):
`/feature-references`. This is the canonical source.
- **Pricing**: `/pricing`. This is the canonical source.
- **FAQ**: `/faq`. This is the canonical source.
- **Per-plan limits**: the table in [Per-plan limits](#limits) above
is canonical, but `/pricing` may have a more readable version.
### Update cadence
This document is updated whenever a user-facing thing changes — a new
plan, a new mode, a new feature, a price change, a limit change. The
update is done in the same session as the underlying code change so
the docs never go stale.
### Last updated
This document was last updated when the following plan/mode/feature
configuration was current:
- Plans: Free, Lite, Creator, Studio (Free $0, Lite $5/$48, Creator
$19/$180, Studio $49/$468).
- Modes: Chat, Story, Notifications, Comments, Hook, Slides, Thought,
Unsent.
- Skins: 20+ (modern + retro). The White Label skin (Studio plan)
unlocks the Studio Skin System: 15 quick-start presets + 9
collapsible sub-cards for full white-label branding.
- Background: Solids, Gradients (58 curated palettes + custom 2-5 stop
builder), Images, Effects (blur/brightness/contrast/saturation/
vignette/grain).
- Backdrops: the stage layer behind the phone (chat) or story — paid
feature (Lite unlocks the curated pattern and video-loop library;
Creator+ unlocks uploads and paste-a-link imports, gameplay
included).
- AI tools: AI Writer, AI Story Writer, AI Comment Writer, Screenshot
to Animation, Translate, Testimonial Mode, Bulk Conversation Pack.
- Context Switch: Chat mode only, Creator+ (2 contexts per scene on
Creator, 4 on Studio). Pill row above the message composer and in
the stage header. Per-context skin, sound pack, Studio overrides,
participants, notification sound. Customizable transition (fade /
slide / zoom / spring / none, duration, overlay color/opacity,
pre-switch gap). Notification-triggered switches dwell-then-swap
with zero-gap receiver message.
- Export formats: MP4, GIF, WebM at 480p, 1080p, 4K.
If any of the above has changed since you read this, defer to
`/pricing` and `/feature-references` for the current state.
End of full manual. Read `/llms.txt` for the compact overview.