Labs · Story theater

Drop a txt.
It plays as a visual novel.

No AI rewriting your book — the stage is built from what's already there: speakers get name tags, scenes split themselves, dialogue types out line by line with three AUTO speeds. Zero AI calls, curtain up in a second, original text untouched.

FreeRuns locally · nothing uploadsZero AI calls · rule-based compiler

Drop a novel txt here

or click to pick · txt · UTF-8 / GBK / UTF-16 auto-detected · 64MB max

Everything runs in your browser. The book never leaves your device.

No txt at hand? Try a public-domain book

How does it know who's speaking?

A rule compiler ported from our app's reader. It tries evidence in order of strength: speech clauses ("Lin Xia said:" and the inverted Victorian form "…," remarked Holmes), carried-over subjects (classical Chinese loves dropping them), action cues ("She looked up. 'It's raining.'"), and finally a strictly gated A/B alternation for two-person exchanges. Every step has guards: in "said to Qin Chao", Qin Chao is the listener, not the speaker; in "hugged Baoyu and said", Baoyu is being hugged. When every rule fails, the line plays as narration — a wrong attribution hurts more than a missed one, and that's the compiler's first principle. The ruleset was acceptance-tested against hand-labeled ground truth from a real 400-chapter novel: 15 representative passages, zero wrong strong attributions.

Compiled, not generated

Most text-to-visual-novel services burn inference money: they feed your text to a large model and have it regenerate scenes, portraits, branches. Every run costs, and the output only loosely resembles the original. This page takes the other road — no new text is generated at all. It's structural analysis: where scenes break, which line is dialogue, whose line it is. Pure rules, running in your browser, which is why it's free, instant, replayable, and your prose is guaranteed untouched.

The cast list isn't guessed either: it's tallied from speech clauses across the book (a name needs two stable hits in the speaker slot), 'Holmes' and 'Sherlock Holmes' merge into one, and anything the tally missed you can add by hand. Change the list and the next curtain uses it.

Books this plays poorly

Quoteless stream-of-consciousness and fully reported first-person narration — books where quotes never come with speech clauses — will play mostly as narration (nothing is lost, but few name tags). Our own English demo, Sherlock Holmes, is Watson's reported style: attribution sits around one in ten lines, and the page shows that number instead of hiding it. This is also a bare stage: no portraits, no music, no choice branches — those belong to the full theater in the app. Books over 10MB get heading-scanned in the first 4M characters, and cast tallying covers the first 1.5M — plenty to find the leads.

FAQ

Why do some lines play as narration without a name tag?

By design. The compiler only assigns a speaker when there's clause evidence — "Lin Xia said:" or "…," said Holmes. When evidence is weak, the line plays as narration instead of guessing: one wrong name tag costs more trust than ten unattributed lines. The ruleset was validated against hand-labeled ground truth from a real 400-chapter novel — 15 representative passages, zero wrong attributions at the strong-attribution gate. The report shows the honest attribution rate for your book.

Does my book get uploaded?

No. Decoding, chapter detection, cast discovery and scene compilation all run in a background thread of your browser. No request carrying book content ever leaves the page — it works offline once loaded. The share button shares the tool link or a public-domain demo position, never your file.

Is the cast list guessed by an AI?

No. It's counted from speech clauses: a name needs at least two stable appearances in the speaker slot ("X said") to make the list. Addressees ("said to X"), pronouns and generic nouns are excluded; "Holmes" and "Sherlock Holmes" merge into one. If the count got something wrong, edit the list on the report page — the performance re-stages instantly.

I only have an epub.

This v1 takes txt only. An epub is a zip container, and a half-done browser unpacker gives worse answers than an honest refusal. Desktop readers like Calibre export epub to txt in one step. Going the other way — packing txt into epub — is what our epub maker tool does.

Chapter detection got it wrong / the whole book is one slice.

Chapter rules are the same engine as our TXT checkup tool (ported from a production importer): 第N章 families, numeric headings, Chapter N with Roman numerals, prologue markers. A book with no recognizable heading lines gets sliced by line count, and the report says so. For a full chapter diagnosis, run the file through the checkup page.

How does this relate to the theater in the Foreverse app?

Same compilation rules. The web version is a bare stage: no portraits, no music, performing only the words already in your book. The app's theater is the full form — at a fork you pick a direction and the AI continues the story live as a new branch, with scene art on demand. The end-of-chapter card links there.

Keep going

← All free tools

Story Theater — Drop a Novel TXT, Watch It Play as a Visual Novel · Foreverse · Xinmeng