Skip to the content.

Lindocode Digital

INNOVATE · BUILD · SCALE Portfolio — Web, Mobile, Backend and UI Systems

Premium web, mobile, and backend systems built with clarity, performance, and real-world purpose.


Studio · Digital Hub · Contact




LazyAuthor | User Guide

How to write, build, and export your story or book using LazyAuthor.


Table of Contents

  1. Creating your account
  2. Choosing your format
  3. Interactive Story Editor Walkthrough
  4. Book Editor - Walkthrough
  5. Common workflows
  6. Tips and best practices
  7. Troubleshooting

1. Creating your account

  1. Go to lazyauthor.lindocode.com.
  2. Click Sign in in the top navigation.
  3. On the login screen, click Sign up.
  4. Enter your email address and a password, then click Create account.
  5. Check your inbox for a confirmation email and click the link inside.
  6. Return to LazyAuthor and sign in with your credentials.

Your account is free. There is no subscription.


2. Choosing your format

After signing in you land on the Select screen. Pick the format that matches your project:

Format Best for
Interactive Story Branching fiction where the reader makes choices. Think choose-your-own-adventure, visual novel-style narratives, puzzle stories, or any story where the path changes based on decisions.
Book A standard linear ebook - novel, novella, short story collection, or non-fiction. Chapters read from top to bottom with no branching.

Click a card to open its editor. You can switch formats later via the account menu (top right) → Change mode. Switching does not delete your work in either format - they are stored separately.


3. Interactive Story Editor Walkthrough

When the story editor opens you will see three panels:


3.1 Your first scene

A new story starts with one scene called Opening. Click it in the scene list to select it.

Write your opening narrative

Click into the large textarea in the centre and start writing. This is the prose the reader sees first - set the scene, establish tone, introduce a character. Write as much or as little as you like.

Rename the scene

Click the large title field at the top of the editor (it says Opening by default) and type a more descriptive name, for example The Crossroads. Scene names are for your reference - they appear in the scene list and in choice dropdowns, but the reader never sees them.

Mark it as the start

The first scene is automatically the start. You will see a next to it in the scene list. Every story must have exactly one start scene - the reader always begins here.


3.2 Adding more scenes

Every path the reader can take needs its own scene.

  1. Click the + button at the top of the scene list.
  2. A new scene called New Scene appears in the list and is selected automatically.
  3. Rename it and write its narrative.
  4. Repeat for as many scenes as your story needs.

Tip - plan your branches on paper first. A simple three-choice story with two levels of branching needs at least 10 scenes (1 opening → 3 choice scenes → up to 9 outcome scenes). Knowing this in advance saves time.


3.3 Creating choices and branching paths

Choices are what make an interactive story interactive. They appear at the bottom of a scene as buttons the reader taps to continue.

Adding a choice

  1. Select the scene you want choices on.
  2. Scroll down to the Choices section (it is collapsed by default — click to expand).
  3. In the input row at the bottom:
    • Type the choice text in the left field, e.g. “Take the eastern path”
    • Select the target scene from the dropdown, e.g. Eastern Path
  4. Press Enter or click Add.
  5. The choice appears in the list. Add as many as you need.

Editing a choice

Click any field in an existing choice row to change the text or target scene directly.

Deleting a choice

Click × on the right side of the choice row.

Example - a simple two-choice scene

The path splits ahead. To the east the forest thickens. To the west, a faint light flickers through the trees.

Choices:

Each of those target scenes then has its own narrative and its own choices (or it is an ending). This is how you build a branching tree.


3.4 Writing a variable-driven story

Variables let your story remember things — the reader’s name, a score, whether they picked up an item. Without variables every reader has the same experience. With variables the story adapts to their choices.

Step 1 — Create a variable

  1. Click Variables in the toolbar (top right).
  2. Click + Add variable.
  3. Fill in:
    • Name — a short identifier with no spaces, e.g. courage or playerName. This is what you type in `` templates.
    • Label — a readable name shown in the editor UI, e.g. Courage or Player Name.
    • Type — choose number for scores, counters, and numeric comparisons. Choose text for names and words.
    • Default value — what the variable starts at. Use 0 for a counter, or leave blank for a name.
  4. Close the panel. The variable is now available everywhere in the editor.

Step 2 — Display the variable in narrative

Inside any scene’s narrative body, type `` wherever you want the value to appear. At read time this is replaced with the current value.

Example:

You step forward. Your courage is at  — 
enough to face whatever lies ahead.

For inline arithmetic (display only, does not change the variable):

If you succeed, your score will be .

Step 3 — Modify the variable when a choice is made

  1. Expand a choice row in the Choices section.
  2. Click + Effect.
  3. Select the variable (courage), the operation (add), and the value (1).
  4. Close the effect row.

Now every time the reader selects that choice, courage increases by 1. You can stack multiple effects on a single choice — they run in order.

Operations available

Operation Does
set Assigns a fixed value, e.g. set courage to 5
add Adds a number, e.g. add 2 to score
subtract Subtracts, e.g. subtract 1 from health
multiply Multiplies, e.g. multiply score by 2

3.5 Gating choices with conditions

A condition makes a choice invisible to the reader unless a variable meets a threshold. Use this to lock paths behind decisions made earlier.

Setting a condition

  1. Expand a choice row.
  2. Click Set condition.
  3. Select the variable, an operator, and the comparison value.
    • Example: courage gte 3 — the choice only appears when courage is 3 or higher.
  4. The choice row shows the condition as a label.

Operators

Operator Meaning Example
eq Equals hasKey eq true
ne Does not equal mode ne easy
gt Greater than score gt 50
gte Greater than or equal courage gte 3
lt Less than health lt 10
lte Less than or equal attempts lte 2

Removing a condition — click Remove condition in the choice row.

Important — if all choices on a scene are hidden by conditions and the reader reaches it, they will be stuck. Always leave at least one unconditional choice as a fallback, or ensure your conditions cover all possible states.


3.6 Collecting reader input

A Player Input scene pauses the story and asks the reader to type something. The response is stored in a variable and can be used anywhere afterwards via ``.

Basic setup

  1. Select a scene and scroll to Scene type.
  2. Click Player input.
    • Your existing choices are preserved. They will be cleared automatically once you set a next scene below.
  3. In the Input scene config that appears:
    • Prompt — the question shown to the reader, e.g. “What is your name, traveller?”
    • Store value in variable — pick the variable that will hold the answer, e.g. playerName.
    • Next scene after submit — where the reader goes once they submit. Selecting this clears any leftover choices.

Choosing the input type

Under Input type, select:

Validation (optional)

If the answer needs to be a specific value:

  1. Expand Validation.
  2. Set the match type:
    • exact — the answer must match your value exactly.
    • contains — the answer just needs to include your value.
    • regex — the answer must match a regular expression pattern.
  3. Enter the Correct answer value (leave blank to accept anything).
  4. Write an Error message to show when the reader gets it wrong.
  5. Set On wrong answer → scene if you want wrong answers to branch elsewhere instead of retrying on the same scene.
  6. Set Max attempts if you want to limit retries before redirecting to the fail scene (0 = unlimited).

Time limit (optional)

  1. Expand Time limit.
  2. Enter a countdown in seconds (e.g. 30).
  3. Set On timeout → scene for where the reader goes when time runs out.

Submission limit (optional)

Useful for puzzles where a player should not be able to try forever:

  1. Expand Times limit.
  2. Set Max submissions (e.g. 3).
  3. Set On limit reached → scene for where to send the reader after hitting the cap.

3.7 Ending a branch

Every path must eventually reach an ending. An Ending scene tells the reader this branch of the story is complete.

  1. Select the scene that should end a branch.
  2. Under Scene type, click Ending.
    • If the scene has choices, a confirmation prompt will appear. Confirm to clear them and switch to ending type.
  3. Write your final narrative for this branch — the conclusion, the outcome, a reflection.

A story can have as many ending scenes as it has paths. The reader only ever reaches one.


3.8 Attaching media

You can enrich any scene with images, audio, and video.

Images

  1. Scroll to the Media section of the scene editor and expand it.
  2. Click the image upload area and select a file (PNG, JPG, WebP, GIF).
  3. The image uploads to cloud storage and appears as a thumbnail.
  4. To place it inline in your narrative, type [image] where you want it to appear. For a second image, use [image2], and so on.
  5. If you do not add a marker, the image appears after the body text automatically.
  6. To remove an image, click × on its thumbnail.

Audio

  1. In the Media section, upload an audio file (MP3, OGG, WAV).
  2. Options:
    • Autoplay — plays automatically when the reader reaches the scene.
    • Loop — plays on repeat.
    • Hide controls — autoplay continues silently with no visible player.
  3. Use [audio] in the narrative to position the player inline. Without the marker it appears after the text.

Video

  1. Upload a video file (MP4, WebM).
  2. Use [video] to position it inline.

3.9 Filling in story details

Open the Meta panel on the right side of the editor.

Field What to enter
Title The story’s title as it appears on the EPUB cover and metadata
Author Your name or pen name
Language Two-letter code: en for English, fr for French, zu for Zulu, etc.
Cover image Upload a cover image (JPG or PNG recommended). It appears on the EPUB cover page. Ideal dimensions: 1600 × 2400 px.

3.10 Styling your story

The Theme panel controls how the exported EPUB looks. Click Theme in the toolbar.

Typography — set the font family, size, line height, text colour, alignment, and first-line indent for body text.

Scene titles — control the size, weight, style (italic or normal), alignment, and whether decorative horizontal rules appear above and below each scene title.

Choice buttons — choose between outline or filled style, pick a colour, and set the corner radius (pill, rounded, or square).

Player input fields — style the text field and submit button shown on input scenes.

Images — set the maximum width and alignment for all images.

Divider — the symbol used for [break] markers. Default is * * *. Change it to anything: , , · · ·.

Changes preview in real time when you toggle to Preview mode on any scene.


3.11 Previewing a scene

Click Preview in the scene editor header (top right of the centre panel) to see how the scene will look and behave in the reader.

The preview shows:

Click Edit to go back to the editor.

Note — the preview uses default variable values. To test a full play-through with real branching, export the EPUB and open it in Lazy Reader.


3.12 Exporting your story

When your story is ready:

  1. Click Export EPUB in the top toolbar.
  2. The browser builds the EPUB file entirely on your device — no upload, no wait.
  3. A download starts automatically. The file is named after your story title.

The exported EPUB 3 file contains:

Open the file in Lazy Reader for the full interactive experience. It will also open in other EPUB 3 readers that support scripted content (Apple Books, Kobo, etc.), though some advanced features like timed inputs may behave differently.


3.13 Importing an existing story

If you have a previously exported LazyAuthor EPUB or any other EPUB:

  1. Click your email address in the toolbar → Import EPUB.
  2. Select the .epub file.
  3. If your current story has content, a confirmation prompt appears. Confirm to replace it.
  4. LazyAuthor parses the file and maps its scenes automatically.
  5. If any content could not be mapped (unsupported features, custom scripts), a yellow warning banner appears at the top of the editor. Dismiss it with × once you have read it.

Tip — importing and then exporting again is a good way to migrate older stories into the latest EPUB format.


4. Book Editor — Walkthrough

When the book editor opens you will see three panels:


4.1 Your first chapter

A new book starts with one chapter called Chapter 1. Click it in the chapter list to select it.

Write your chapter

Click into the textarea and write. Unlike the story editor there are no scene types, variables, or choices — just prose. Write the entire chapter here.

Rename the chapter

Click the title field at the top of the editor and type your chapter’s name, e.g. A City Without Shadows. The title appears in the chapter heading inside the EPUB and in the auto-generated table of contents.


4.2 Adding and reordering chapters

Adding a chapter

Click + Add chapter at the bottom of the chapter list. A new chapter is created after the last one and selected automatically.

Reordering chapters

Hover over any chapter row in the list — and arrows appear on the right. Click them to move the chapter up or down one position.

Deleting a chapter

Hover over any chapter row — a × button appears on the right. Click it to delete. The × is only shown when more than one chapter exists (a book must have at least one chapter).

Chapter numbers

Numbers are computed automatically from position. Chapter 1 is the first chapter in the list, Chapter 2 is second, and so on. You do not need to type chapter numbers — they are applied in the exported EPUB using the theme settings.


4.3 Writing chapter content

The textarea supports plain text with a few special markers:

Section breaks

Type [break] on its own line to insert a scene break divider. In the exported EPUB this renders as the symbol set in your theme (default: * * *).

The city fell silent as Venn stepped into the plaza.

[break]

Three hours later, the shadows returned.

Image placement

After uploading images (see Adding images), type [image] where you want the first image to appear, [image2] for the second, and so on.

She opened the letter.

[image]

The handwriting was unmistakable.

If you do not add markers, images are placed at the end of the chapter automatically.


4.4 Adding images to a chapter

  1. In the chapter editor, click the + Image button (in the media area below the textarea).
  2. Select an image file (PNG, JPG, WebP, GIF).
  3. It uploads to cloud storage and appears as a thumbnail.
  4. Type [image] in the chapter body to place it inline, or leave it out to have it appended at the end.
  5. To remove an image, click × on its thumbnail.

You can attach multiple images to a single chapter. They are embedded inside the exported EPUB.


4.5 Filling in book details

Open the Meta panel on the right side of the editor.

Field What to enter
Title The book’s title, used on the cover page and in the table of contents
Author Your name or pen name
Description A short synopsis written into the EPUB metadata (not shown in the reader, but visible in library apps)
Language Two-letter code: en, fr, zu, etc.
Cover image Upload a cover (JPG or PNG). Ideal dimensions: 1600 × 2400 px.
Chapter start at Use this when your book has front matter that should not be numbered. Set it to 1 if your first chapter in the list is a prologue — the prologue will have no number, and the second chapter in the list will be Chapter 1. Leave it at the default if all chapters should be numbered from 1.

4.6 Styling your book

Click Theme in the toolbar.

Body text — set font family, size, line height, text colour, body margin, text alignment (left or justify), and first-line indent.

Chapter number — toggle the Chapter N label above each title on or off. Change its colour and letter spacing to match your aesthetic. Many literary books use a small, spaced-out label like C H A P T E R O N E.

Title rules — decorative horizontal lines above and below the chapter title. Toggle them on, then set the line colour and width (e.g. 40% centres a short rule).

Chapter title — font size, weight, style (italic or normal), and letter spacing.

Divider — the symbol for [break] markers. Common options: * * *, , , · · ·, .

Table of contents — the TOC is generated automatically from your chapter titles. Style the heading colour, letter spacing, and the dot colour of the leader lines between title and page number.


4.7 Previewing a chapter

Click Preview in the chapter editor header. An iframe renders the chapter exactly as it will appear in the exported EPUB:

Click Edit to return to the editor.


4.8 Exporting your book

  1. Click Export EPUB in the toolbar.
  2. The EPUB 3 file builds in the browser on your device.
  3. The download starts automatically, named after your book title.

The exported file contains:

The file is compatible with Kindle (convert with Calibre), Apple Books, Kobo, Google Play Books, and any standard EPUB 3 reader.


4.9 Importing an existing file

Import an EPUB

  1. Account menu → Import EPUB.
  2. Select a .epub file.
  3. Confirm the replacement if your book has content.
  4. Chapter content is mapped automatically.

Import a Word document

  1. Account menu → Import .docx.
  2. Select a .docx file.
  3. Confirm the replacement.
  4. LazyAuthor splits the document into chapters based on heading levels (Heading 1 becomes chapter breaks).

Both import methods replace the current book. Your previous work is gone once you confirm — make sure to export first if you want to keep it.


5. Common workflows

5.1 Name the player and use it throughout

Goal — ask the reader their name at the start and address them by name in later scenes.

  1. Open the Variables panel. Add a variable:
    • Name: playerName
    • Label: Player Name
    • Type: text
    • Default: (leave blank)
  2. In your opening scene, set the scene type to Player input.
    • Prompt: “What is your name, traveller?”
    • Store in variable: playerName
    • Next scene: your second scene (e.g. The Road Ahead)
  3. In The Road Ahead and any later scene, write `` wherever you want to address the reader.

    Welcome to the crossroads, . 
    The choice ahead will define your fate.
    

5.2 Track a score and show it on an ending screen

Goal — award points for brave choices and reveal the total on an ending scene.

  1. Add a variable:
    • Name: score
    • Type: number
    • Default: 0
  2. On each choice that deserves points, add an effect:
    • Variable: score · Operation: add · Value: 10
  3. Create an Ending scene. In the narrative:

    Your journey is complete.
       
    Final score:  points.
       
    You faced every challenge with courage. A true hero.
    

    The `` expression displays the calculated value — it does not hide content. To conditionally show entire sentences, put the condition on a choice that leads to one of two different ending scenes.


5.3 Lock a choice behind an item

Goal — a choice (e.g. “Unlock the door”) only appears if the reader picked up a key earlier.

  1. Add a variable:
    • Name: hasKey
    • Type: text
    • Default: false
  2. On the choice where the reader picks up the key, add an effect:
    • Variable: hasKey · Operation: set · Value: true
  3. On the scene with the locked door, add the choice “Unlock the door” → target: Inside the House.
  4. Expand that choice → Set condition:
    • Variable: hasKey · Operator: eq · Value: true
  5. Add a second choice “The door is locked. Move on.” → target: The Lane (no condition — always visible as a fallback).

Readers who did not find the key will only see the second choice.


5.4 Build a timed puzzle

Goal — the reader has 30 seconds to type the correct code word. Too slow and they fail.

  1. Add a variable:
    • Name: codeAttempt
    • Type: text
  2. Create the puzzle scene and set its type to Player input:
    • Prompt: “Enter the access code before the alarm triggers:”
    • Store in: codeAttempt
    • Next scene: Access Granted
  3. Under Validation:
    • Match type: exact
    • Correct answer: LAZARUS
    • Case-sensitive: off (so lazarus also works)
    • Error message: “Wrong code. Try again.”
    • On wrong answer → Wrong Code (a scene with “The alarm sounds.”)
    • Max attempts: 3
  4. Under Time limit:
    • Countdown: 30
    • On timeout → Time’s Up (a scene with “The door locks permanently.”)

5.5 Write a book with a prologue

Goal — the book list starts with a prologue, then Chapter 1, Chapter 2, etc.

  1. Create your first chapter and title it Prologue.
  2. Create your second chapter and title it the actual first chapter title.
  3. In the Meta panel, set Chapter start at to 1.

In the exported EPUB, the prologue will have no chapter number label. The second chapter in the list will be labelled Chapter 1, the third Chapter 2, and so on.


6. Tips and best practices

Plan before you write Draw your scene tree on paper or in a simple diagram tool before opening the editor. A story with 5 choices per scene and 3 levels deep has 156 possible scenes. Know roughly how big you want it before you start.

Name scenes clearly Scene names are shown in every choice dropdown. Vague names like Scene 12 or New Scene make it impossible to navigate a large story. Use names like Forest Entrance, East Path — Day 2, Ending — Coward’s Way so you always know what you are looking at.

Use one ending per branch, not one global ending Avoid funnelling all paths into a single ending scene. Each distinct outcome should have its own scene — this gives you room to write a tailored conclusion for each path.

Keep variable names short and consistent score is better than playerCurrentScore. hasKey is better than playerHasPickedUpTheKey. Short names are easier to type in `` templates and condition fields.

Test with Preview before exporting Use the Preview toggle on key scenes to check that your narrative reads correctly, variable expressions look right, and conditions hide the right choices. Export only when you are happy with the result.

Export early and often Do not wait until the story is finished to export. Export a draft, open it in Lazy Reader, and experience it as a reader would. You will notice problems (confusing branching, missing scenes, awkward prose) that are invisible in the editor.

Back up before importing Importing replaces your current work. If you want to keep your current story, export it to an EPUB first. That export is your backup.

Use the break marker generously [break] renders as a visual divider between sections of a scene or chapter. Use it wherever there is a time skip, a change of location, or a shift in perspective. It gives readers a clear signal that something has changed.

Cover image dimensions Use a 1600 × 2400 px image (2:3 ratio) for covers. Wider or square images will work but may appear letterboxed in some readers.


7. Troubleshooting

The Export EPUB button does nothing or the download never starts

My story’s choices do not appear in the preview

A conditioned choice is never showing up

The player name variable shows `` in the preview instead of a value

I imported a .docx and the chapters are not split correctly

The EPUB looks unstyled when I open it in Apple Books / Kobo

Audio autoplay does not work

The sync status shows “Save failed”

I accidentally deleted a scene


Terms · Privacy

© Lindocode Digital · South Africa