# Monogatari > Visual Novel Engine Monogatari is a simple web visual novel engine, created to bring visual novels to the web. > Full content export — 149 documents. --- # Demo > Play with Monogatari live in your browser. Source: https://monogatari.io/demo
Taking you to the Monogatari demo…
--- # Contributors > The people who made Monogatari awesome. Source: https://monogatari.io/contributorsMonogatari is not the work of just one person — it's the work of everyone who has shared their experience, time, and knowledge to make it awesome for you. To all of these people: thank you!
Sponsors keep Monogatari free, open source, and growing. Support the project and you'll join the wonderful people below — every sponsor is featured right here on this page.
Prefer another way? You can also support via
With heartfelt thanks to everyone who has supported Monogatari over the years — your generosity helped keep it free and open source for everyone.
Alix LepinayPast SponsorIdea Contributor
Carmen LopezPast Sponsor
CesarPast SponsorIdea Contributor & Tester
codePast Sponsor
eyeteethPast Sponsor
Kazuto SenseiPast SponsorDocumentation Contributor & Tester
Michael Jay TuckerPast Sponsor
Tom NguyenPast SponsorIdea Contributor & Tester
Zhou Cong ArtPast Sponsor
ぷりPast Sponsor



































Built for the modern web — create and distribute visual novels that anyone can play pretty much anywhere. Free, open source, and designed so you can write your story as easily as if you were just writing it.
You don't need to be a developer. Monogatari's friendly language lets you write your story naturally — yet it's powerful enough for anything you imagine.
Images, video, music, sound effects — bring your scenes to life with any kind of media.
Built-in translation support so players can enjoy your story in their own language.
Save and load, animations, rewind, auto-play, text skipping, and more — out of the box.
Think of your game as a website: anything you've seen on the web is within your reach.
Plays beautifully on any screen, on any device, right out of the box.
Installable and playable offline, just like a native app.
Released under the MIT License — use it for anything, commercial or not, completely free.
Ship to the web, or build for Windows, macOS, Linux, Android, and iOS.
Monogatari is 100% open source and built collaboratively by people all over the world. Even if you're not a programmer, you can help.
Monogatari would not be possible without these awesome open source projects.
Monogatari is developed and distributed as a completely free product. Every little bit of support helps us keep building new features and maintaining the project.
Prefer another way? You can also support via
Monogatari's goal isn't competition — here are some other awesome open source engines worth checking out.

The most widely used visual novel engine — Python-powered, battle-tested, and behind thousands of released games.

A free HTML5 engine with a friendly, tag-based script and excellent mobile support.
A browser-based engine built on Phaser, with your whole story configured in simple YAML files.
Every story should be told before it's lost forever.
--- # Hide Text Box > Hide the dialog text box to show off the scene behind it. Source: https://monogatari.io/v2/script-actions/hide-textbox Section: Documentation ## Description ```text 'hide textbox' ``` The `hide textbox` action hides the dialog [text box](/v2/components/text-box), leaving only the background, characters and other visuals on screen. It's perfect for letting a dramatic scene, a CG, or an animation breathe without the interface in the way. Bring the text box back with [`show textbox`](/v2/script-actions/show-textbox). **Action ID**: `Hide::TextBox` **Reversible**: Yes **Requires User Interaction**: No ## Behavior When `hide textbox` runs: 1. The `To advance through the game, left-click or tap anywhere on the game screen or press the space key
Some useful information
This is the body of the message shown to the player.
` element. ## Content Areas | Name | Selector | Description | | :--- | :--- | :--- | | `title` | `[data-content="title"]` | The message title (only rendered when `title` is set) | | `subtitle` | `[data-content="subtitle"]` | The message subtitle (only rendered when `subtitle` is set) | | `body` | `[data-content="body"]` | The message body (only rendered when `body` is set) | ## Props | Property | Type | Default | Description | | :--- | :--- | :--- | :--- | | `title` | `string \| null` | `null` | The message title, rendered as an `
` | | `body` | `string` | `''` | The main message text, rendered as a `
` |
| `actionString` | `string` | `'Close'` | A translation key used for the close button's label, resolved with `monogatari.string ()` |
> [!NOTE]
> The title, subtitle and body props are rendered as-is (they are filled with the message text after variable replacement). Only `actionString` is treated as a translation key. The button text is therefore `monogatari.string (actionString)`, defaulting to the translated `Close` string.
## Blocking Behavior
The message modal blocks the game from proceeding while it is open. This is handled in two places:
- The [Show Message action](/v2/script-actions/message) sets a `blocking` flag while the modal is visible and rejects `shouldProceed` until the player clicks the close button.
- The component itself overrides `shouldProceed` to reject (`'Message Modal awaiting for user to close the modal window.'`), so any attempt to advance, auto-play or skip is prevented until the modal is removed.
The close button carries both `data-action="close"` and `data-close="message-modal"`. When clicked, the action's listener clears the blocking flag, removes the modal and lets the game proceed.
## Methods
The message-modal overrides several lifecycle methods. All of them simply remove the modal from the DOM when the relevant event occurs.
| Method | Behavior |
| :--- | :--- |
| `shouldProceed()` | Always rejects, blocking advancement while the modal is open |
| `willProceed()` | Removes the modal |
| `willRollback()` | Removes the modal so the game can revert to the previous statement |
| `onReset()` | Removes the modal when the game is reset |
| `willMount()` | Adds the `modal` and `modal--active` classes |
## Styling
```css
/* Main container (uses the shared .modal styles) */
message-modal {
/* Modal base styles inherited from the .modal class */
}
message-modal div {
width: auto;
padding: 1rem;
}
message-modal a {
color: #00bcd4;
}
/* Message content is left-aligned and selectable */
message-modal [data-ui="message-content"] {
text-align: left;
max-width: 100%;
}
message-modal [data-ui="message-content"] * {
user-select: text;
}
```
## Related
- [Show Message Action](/v2/script-actions/message) - Registers messages and shows this modal
- [Alert Modal](/v2/components/alert-modal) - A related confirmation modal opened from JavaScript
- [Text Box](/v2/components/text-box) - Displays regular dialog
---
# Text Input
> A flexible modal input component used by the Input action to collect text, numbers, and choices from the player.
Source: https://monogatari.io/v2/components/text-input
Section: Documentation
## Description
```markup