Labs · Lorebook trigger

Paste a chat,
see which lorebook entries fire.

“Why didn’t my lorebook trigger” is the number-one lorebook headache — and the usual debugging method is edit, start a chat, squint. Drop a lorebook JSON and a few chat lines here instead: matched keywords get highlighted, constants get flagged, recursion chains get drawn, probability entries get a re-roll button. The engine is ported against SillyTavern 1.18 scan-and-activate semantics and runs entirely in your browser.

Freeruns in your browsernothing uploaded

Lorebook

Drop a lorebook JSON here, or click to pick

Tap to pick a lorebook JSON file

Accepts SillyTavern World Info exports · character card JSON (embedded book auto-extracted)

Chat text

Scan depth4

Load a lorebook, paste some chat — trigger results show up here.

How do you test a lorebook without starting a chat?

Paste the lorebook JSON and a few lines of chat above: every entry gets a verdict with its reason — matched keywords highlighted, secondary-key logic (AND_ALL / NOT_ANY and friends) spelled out, recursion chains drawn, probability entries re-rollable. The engine follows SillyTavern 1.18 scan-and-activate semantics and runs entirely in your browser, so you can iterate on an entry in seconds instead of burning test chats.

Lorebook not triggering — symptom, cause, fix

SymptomMost likely causeFix
Nothing ever triggersbook not bound to this character or chatcheck the binding first, toggles second
One entry never firesthe keyword is never actually said — aliases missingput every alias and nickname into the key list
Works early, dies in long chatstoken budget saturated by one oversized entryshrink entries; lower priority on nice-to-haves
Fires one turn, silent the nextkeyword drifted outside the scan windowraise scan depth, or promote the entry to constant
Random no-showsprobability below 100% — the roll missedthat's by design; re-roll it in the simulator to watch
Triggers, but the model ignores itentry too long and literaryrewrite as a telegraphic dossier, facts first

Where this tool comes from

The trigger engine is a line-for-line port of the lorebook activator inside the Foreverse app — an implementation aligned with SillyTavern 1.18's checkWorldInfo and pinned down by 60+ unit tests. The web build carries over the scan-and-activate phases: keyword matching (case, whole-word boundaries, CJK keys, regex keys), all four secondary-key modes (AND_ANY / AND_ALL / NOT_ANY / NOT_ALL), constants, recursive scanning (including the excludeRecursion / preventRecursion / delayUntilRecursion level machine), probability rolls, and inclusion groups.

Behavior alignment used the app-side unit test suite as gold: representative cases (CJK keys, case overrides, the four secondary modes, recursion chains, decorators) were carried into the web engine's self-test, and everything passes before shipping. Ported 2026-07.

What it can't do

It simulates which entries activate — not what finally lands in the prompt. A real run adds token-budget trimming (low-priority entries get cut when the budget runs out), injection ordering, and cross-turn sticky/cooldown counters. Those need session state a one-shot simulation doesn't have; entries carrying such settings get a "simulated stateless" badge.

Entries with a character filter are treated as unfiltered here — the page has no "who is speaking" context. And frontends differ on recursion and probability details; this page follows SillyTavern 1.18 semantics.

FAQ

How do I test if my lorebook is working?

Without this page: start a throwaway chat, say a sentence containing one entry's trigger key, and check the prompt log for the entry's text — repeat per entry, burning a message each time. With this page: paste the lorebook JSON and a few chat lines, press one button, and every entry reports fired / silent with the exact reason — matched keys highlighted, secondary-key logic spelled out, recursion chains drawn. Same SillyTavern 1.18 semantics, zero test chats.

Why isn't my lorebook entry triggering?

The four usual suspects, all flagged directly by this tool: ① the keyword never appears in the scan window — by default only the last 4 messages are scanned, so a keyword from ten turns ago doesn't count; ② the secondary-key condition fails — AND_ALL wants every key present, NOT_ANY wants none of them, and people mix the directions up constantly; ③ the entry is disabled, or it's a dead entry with no keys at all; ④ the probability roll missed — a 30% entry sitting out seven rounds in ten is working as designed.

What does recursive activation mean?

When entry A fires, A's own content joins the next scan pass — if B's keyword appears inside A's text, B fires too. That's recursion, and lorebook authors use it deliberately to build lore chains: mention the lighthouse, get the keeper, get the keeper's secret. This tool draws the chain ("triggered by the content of …") — information you can't see inside SillyTavern itself.

Will the simulation match a real chat exactly?

The scan-and-activate verdicts match (keyword matching, case, whole-words, secondary logic, recursion, probability, inclusion groups — all ported against SillyTavern 1.18 semantics). Three things a real run adds that this page doesn't simulate: token-budget trimming (low-priority entries get cut when too much fires), injection ordering, and cross-turn sticky/cooldown counters. Entries carrying those settings get a caveat badge.

Is my lorebook uploaded?

No. Parsing and simulation run entirely in your browser — the page keeps working offline once loaded. That's also why you can throw a 50,000-word book at it: there's no server in the loop.

Related tools & reading

← All free tools