Skip to main content


Elm Story is a free, cross-platform design tool that helps authors, designers and students visually compose and publish immersive storyworlds. Featuring a virtual storyteller (DM), audiences experience branching narratives tailored to player choice.


Elm Story now supports storyworld compilation.

Read the devlog for more information on this pivotal early access release.


Documentation is under active development and is rapidly changing and incomplete.

0.7 updates are in-progress. Contributions are welcome!

If you have questions, please reach out on r/ElmStoryGames or join our community Discord server.

Platform Overview

Elm Story consists of 3 progressive layers. The first layer is production through the Elm Story app; a modern, cross-platform desktop application for Windows, Linux and macOS.

Example banner


Elm Story provides a dashboard for organizing your storyworlds, a visual editor for design and a hot-reload-supporting runtime engine (ESRE) for testing as you go.


Elm Story doesn't have a save button, instead opting to auto-save your progress to an internal database. You can import and export your storyworlds as portable data using the JSON format. This data is readable by Elm Story and 3rd party tools for use in existing pipelines that may include game engines like Godot, Unreal and Unity.


Elm Story supports storyworld export to PWA; an offline-ready, installable web app that works great on both desktop and mobile browsers. For hosting, use your own web server or free, 3rd party service like Neocities, Vercel, Netlify or Firebase.

With Cordova or Electron, wrap your storyworld in an app ready for iOS, Android, Windows and macOS app stores.


In 2022, Elm Story will expand to support direct export to hosting so that your storyworlds are made available on the Web and native mobile app, without having to jump through self-hosting technical hoops.