Text formats
A story is written in one of three formats: Plain text, Markdown, or HTML. Plain is the default and the one to keep unless you want styled prose. Set it per scenario under Templates > Advanced, or later per story from the settings icon in the top bar.
This setting does not tell the AI anything. It only changes how text is displayed. The model is not automatically told which format you picked. See the prompts do not follow the setting below.
What the setting actually changes
It changes how beats are displayed and edited. Nothing else. The stored text is the same either way, and switching format never rewrites a message.
Plain text renders the model's output as-is, and gets three things the other two don't:
- You can click into any beat and type, with no edit button.
- Character names are highlighted in the prose and open that character's card when clicked.
- Quoted speech is tinted, and in-story search highlights its matches inside a beat.
Markdown renders headings, lists, tables, emphasis, and the rest of GitHub-flavored Markdown. HTML renders tags directly, including inline style attributes.
When using either one of those styles, you cannot edit the text just by clicking it. Instead you have to click the pencil in the hover toolbar, which shows you the raw source rather than the rendered result. That is deliberate: rendered text only lines up with the actual text in the "plain" style mode.
Text-to-speech is unaffected. The styling is stripped before a beat is spoken, so read-aloud works the same in all three.
The prompts do not follow the setting
Changing the format changes the renderer, not the model. Nothing tells the storyteller that it should be writing Markdown or HTML, so by default it keeps writing plain prose and you see plain prose with a different renderer behind it.
The built-in storyteller prompt prevents Markdown and HTML. It ends with an instruction to write two or three paragraphs with no lists, no headers, and no code blocks, which is most of what Markdown is for.
To get styled output you have to say so in the prompt yourself, under Advanced > tasks & prompts on the scenario, or Story settings > Tasks & prompts on a running story. The prompt to edit is Storyteller. If the scenario is also used for chats, edit Chat reply the same way.
An override replaces the whole prompt. It is not added to the built-in one. Whatever the storyteller normally does that you still want, including the speaker tags that give each character their own voice, has to be restated in your version. Start from the built-in text rather than a blank box.
Opening passages are written by you, not the model, so write them in the target markup yourself.
Before you switch formats
Switching mid-story does not rewrite earlier beats. They stay stored as written. When old plain-text beats are rendered as HTML, blank lines between paragraphs collapse and any literal < is read as a tag. Nothing is lost, and switching back restores the old view exactly.
HTML is sanitized, but not sandboxed. Scripts, event handlers, and javascript: links are removed, but style rules are not. A <style> block or a class in a beat applies to the whole app, not just that message. Keep that in mind for a scenario you imported rather than wrote, since the styling is included in it.
The background agents read the raw text. Summaries, character tracking, and memory all see your markup, tags included. It costs tokens and can end up quoted back inside a summary.