Labs · Greeting preview

Your first_mes,
as a real chat bubble.

Until now, seeing a finished greeting meant importing the card and starting a chat. Paste the first_mes — or drop the card file and flip through its alternate greetings: macros expand, *actions* italicize, quotes tint, all by real rendering rules. Switch to IM mode and find out exactly how many rapid-fire texts your 800-word opener turns into.

Freeruns in your browsernothing uploaded

Paste a greeting or drop a card — the bubble preview shows up here.

Where this tool comes from

Rendering rules align with the site's phone demo and the app's chat bubbles: *asterisk actions* italicize and soften, Chinese 「quotes」 and "English quotes" tint warm, ``` fences render monospace, blank lines break paragraphs. The IM splitter is a behavior-for-behavior port of the app's segmentation — the same rules that govern both playback count and history view: thresholds (60 CJK chars / 160 Latin), the English-period guard (abbreviation list + capital initials + decimals), and the 8-bubble cap with tail merge. Representative cases were carried into this engine's self-test. Ported 2026-07.

Card parsing reuses the same browser parser as the Card Checkup: PNG text chunks, JSON (V1/V2/V3) and charx containers, extracting first_mes and alternate_greetings in one pass. Token estimates use the common ratio of ~1.6 chars/token for CJK and ~4 for English.

What it can't do

Beautified-card HTML skins (the regex layer that turns markers into status bars and cards) are out of scope — import into the app for the full effect.

Macros expand with the char/user names you type; chat-state macros ({{lastMessage}} and friends) use placeholders. Token counts are character-ratio estimates — real tokenizers vary by 20–30%, read them as magnitudes.

FAQ

What's the difference between immersive and IM mode?

Immersive is the tavern-style block render: one message, one bubble — narration, actions and dialogue together. IM mode splits the same message into messenger-style bursts: split on line breaks, then by sentence enders if a single segment runs long, capped at 8 bubbles (overflow merges into the last one). Check both before publishing — a long scenery paragraph becomes a very different rhythm as a string of short texts.

How is the bubble count computed?

Same rules as the app's IM engine: split on newlines and drop blanks; if only one segment comes out and it's long (60 chars for CJK, 160 for Latin-dominant text), split again on sentence enders — with a false-positive guard for English periods, so Mr., 3.14 and J. K. don't get chopped; past 8 segments, the first 7 stay and the rest merge into the last. If this page says 6 bubbles, the app plays 6 bubbles.

How long is too long for a greeting?

Past roughly 3,000 tokens you get a yellow flag. A greeting isn't a one-time cost — tavern-family frontends may carry it on every request, so an oversized opener taxes the memory budget of every turn. If you need that much lore, move the worldbuilding into a worldbook that triggers on demand, and keep the greeting to the scene and the first line.

Can it preview beautified-card HTML?

No. This previews the text rendering layer: macro expansion, action italics, quote tinting, code fences, IM splitting. Beautified cards turn markers into HTML via regex scripts — that layer needs the app.

Related tools & reading

← All free tools

Greeting Preview — See Your first_mes as a Real Chat Bubble Before You Publish · Foreverse · Xinmeng