Twine is an open-source tool for telling interactive, nonlinear stories.

You don't need to write any code to create a simple story with Twine, but you can extend your stories with variables, conditional logic, images, CSS, and JavaScript when you're ready.

Twine publishes directly to HTML, so you can post your work nearly anywhere. Anything you create with it is completely free to use any way you like, including for commercial purposes.

Twine was originally created by Chris Klimas in 2009 and is now maintained by a whole bunch of people at several different repositories.

Editing a story in Twine 1.4.
A bird's-eye view of a story map in Twine 1.4.
The story list in Twine 2.0.
Editing a story in Twine 2.0.

Twine has been used to create hundreds of works. Here's a sample: