A branching video, also called a story branching video, stops at a decision point and plays a different next scene depending on what the viewer picks or answers. Each option on screen links to a destination: another time in the same video, or a different video. Paths can split and rejoin, remember earlier choices, and change with a quiz score or with data the viewer brings along, and the report can show the path each viewer took. In the 28-second safety example below, pick what a forklift operator should do first and watch the next scene change.
How a branching video works
A two-option product tour and a feature-length interactive film use the same five parts:
- A decision point, where the video stops and asks. The scene before it gives the viewer enough context to choose.
- Options: buttons, hotspots on objects in the frame, or the answers to a question.
- A destination for each option. In Mindstamp, the Change Time action jumps to another time in the same video, and Switch Video opens another video.
- An exit at the end of every branch: a jump to a shared scene, the next decision, or an ending. In a single file, a branch with no exit plays straight into the next branch on the timeline.
- Memory, when a later scene needs it: a variable that stores the choice.
The forklift demo uses all five. Three buttons appear at 5.1 seconds and hold the video until the viewer clicks one. Each button stores the choice in a variable named selected_route and jumps to its result scene. The first two result scenes end with an automatic jump to the debrief at 21.8 seconds, the third plays into it, and the debrief shows "Your route: {{selected_route}}".
Branch inside one video or across several
You can build branches inside one file or across separate videos, and both methods are on every Mindstamp plan (how to use video branching).
With one file, you edit every scene into a single video and connect the scenes with Change Time. The whole path is recorded in one view, and the project uses one video in your library. This suits short scenarios and most first projects. The forklift demo is one 28-second file.
With separate videos, each branch is its own video connected by Switch Video. Each one gets its own report, so you can count how many people reached it, and each one counts toward the videos in your library (what counts as a video). Switch Time starts the next video after its intro, and Switch to Previous Video returns the viewer to the video and time they left, which suits a short detour. Use separate videos for long branches and for scenes you reuse in other projects. Variables go with the viewer when they switch, so a later video can greet them by name or show only the options that fit an earlier answer (how variables carry over).
Types of video branches
Branches differ in what decides the path, and one video can mix several types. The forklift demo is a choice branch, and its Replay button adds a loop back to the decision.
| Branch type | What decides the path | Typical use | How to build it |
|---|---|---|---|
| Choice | The option the viewer picks | Scenarios, product tours by use case, support triage | Buttons or hotspots with Change Time or Switch Video |
| Answer | The answer to a question, or whether it was correct | Knowledge checks with remediation | A question with an action on each answer |
| Score | The running score across several questions | Pass and fail endings, certification practice | The cScore or wCount variable in a conditional rule |
| Rule-based | Data the viewer brings: a link parameter, a lead capture field, an earlier answer | Role-based onboarding, regional compliance content | Navigations with conditional logic that run with no click |
| Retry loop | A wrong choice or answer | Safety drills, "try again" practice | Change Time back to the explanation, with a way out after repeated misses |
| Detour and return | The viewer asks for more detail | A side demo, a definition, a policy excerpt | Switch Video, then Switch to Previous Video |
| Hub | The topic the viewer picks from a menu | Training libraries, FAQ videos, webinar replays | Buttons that jump to each section; each section ends with a jump back to the menu |
These types describe a single decision. For the overall shape of a story, such as a full tree or paths that split and rejoin, and the number of scenes each shape needs, see our guide to creating a choose-your-own-adventure video.
You can try several of these types in published examples. The customer onboarding fork starts with the customer's goal, the router troubleshooter branches on the light the viewer sees, and the warehouse safety skill router sends each learner to a refresher, a guided comparison, or a harder example before a follow-up question.
Buttons, hotspots, or a question at the decision
Buttons state the options in words, which suits a decision a learner or a buyer has to make. Hotspots let the viewer click an object in the frame, such as a valve or a shelf, which suits "find the problem" tasks. A question suits a choice that is also a test. Mindstamp records a button click as a click, and it records a question answer with whether it was correct, so only the answer counts toward the viewer's score. To score a scenario decision, make it a multiple-choice question, mark the correct answer, and set an action on each answer that sends the viewer to the matching branch. A question pauses the video while it is open.
Branching logic: variables, conditions, and scores
A simple branch needs only a click action. Logic lets the video pick the path for the viewer, or change a later scene, based on what it already knows.
Variables store what the viewer chose
A variable holds one fact about the viewer, such as role = manager. A value can come from:
- a button, hotspot, or question answer,
- a Set Variable navigation that runs at a set time,
- a link parameter such as ?role=manager, or a personalized link,
- lead capture fields such as name and email.
To show a value on screen, put the variable name in double braces, as the demo's debrief does with {{selected_route}}. Variables are available on supported plans.
Conditions decide which route appears
Conditional logic shows or hides an interaction based on a variable. Open the interaction, go to Variables & Logic, turn on Conditional Logic, and write a rule such as Show if role Equals manager (conditional logic guide). A rule can use Equals, Does not equal, Exists, Does not exist, Contains, Does not contain, Is a number less than, Is a number greater than, or Matches Regex. One interaction can test two conditions joined by AND or OR, and the player checks the rules again each time a variable changes. Conditional logic is on supported plans.
When you put the rule on a navigation, the route runs with no click. For example, to send each role to its own section at 0:30:
| Interaction at 0:30 | Rule | Result |
|---|---|---|
| Change Time navigation | Show if role Equals manager | Jumps to the manager section at 0:45 |
| Change Time navigation | Show if role Equals agent | Jumps to the agent section at 2:10 |
| Two buttons, Manager and Agent, that pause the video | Show if role Does not exist | The viewer picks a role; each button sets role and jumps to its section |
Our personalized navigation guide adds three rules for this setup. Place all the navigations for one decision at the same time, write rules that cannot be true at the same time, and always add a route for viewers with no value. Store fixed values from buttons or answer choices instead of free text, because Equals ignores capital letters but not spelling or spaces. The editor shows every interaction and does not set variables, so test each value from the share link in a private browser window, for example with ?role=manager added to the address.
Scores route learners to pass and fail paths
Mindstamp scores the question types that can have a correct answer: free response, multiple choice, choose all that apply, dropdown, number, and date. While the learner watches, the player keeps running totals in automatic variables:
- cScore, the correctness score as a whole percentage (the video's score settings decide which questions count),
- cCount and wCount, the numbers of correct and incorrect answers,
- pScore, the percentage of scored questions the learner has answered.
Conditional logic turns these into pass and fail routes. "Is a number greater than" does not include the value itself, and the player rounds cScore to a whole percentage, so a pass mark of 80% is the rule Show if cScore Is a number greater than 79. Give the pass ending that rule, give the review route Show if cScore Is a number less than 80, and place both at the same time. To send a learner back after a second wrong answer, put Show if wCount Is a number greater than 1 on a button that jumps to the explanation. Our help article on passing scores and retries explains how attempts count, and the try again guide shows how to count attempts with a variable.
Decide what the score measures before you place questions. Some scenario tools score each ending or add up points along the path. In Mindstamp, the score comes from questions, so put a scored question at each decision that should count, and keep preference choices, such as topic or role, as buttons so they do not change anyone's score.
Check the score settings before you build a scored branching video. In the video's Settings, under Viewer experience, Questions in score has two options. All questions, the default for new videos, counts every scored question in the video, and a question the learner never answered counts as wrong. That includes the questions on branches the learner did not take. Questions that use conditional logic do not count. Answered questions only counts just the questions the learner answered. A second setting, Answer that counts, uses the first answer to each question by default, or the most recent one. For a video with scored questions on more than one branch, choose Answered questions only, or turn on conditional logic for each question that sits on a single branch.
If you send results to an LMS, the SCORM package reports the same score (SCORM export). With All questions, a learner who took one branch loses points for the questions on the others. If every learner must meet the same standard, keep the scored questions on the shared path. The completion checkpoint follows the playback position, so put the shared ending at the end of the file and choose a checkpoint inside it, such as 90%, that every path reaches.
How to map a branch structure before you build
Draw the map before you shoot or open the editor. A map catches missing exits and cosmetic choices while they are still cheap to fix.
- Write each decision and the point it makes. If you cannot say what a choice teaches or reveals about the viewer, cut it.
- List the options and the consequence of each. Every option should change what the viewer sees next.
- Give each scene an ID, a start time or a video, and an exit.
- Decide what the video must remember, which variable stores it, and which later scene uses it.
- For each rule, add the route for a viewer with no value.
- Count the paths. Each one is footage to shoot and a route to test.
Written as a map, the forklift demo has six scenes. The same columns work as a build sheet in the editor and as a test checklist.
| Scene | Time | What plays | Interactions | Exit |
|---|---|---|---|---|
| Setup | 0:00 to 5.1 s | A forklift approaches a blocked travel aisle, with a marked pedestrian aisle beside it | None | Plays into the decision |
| Decision | 5.1 s | The frame holds while the options show | Three buttons; each sets selected_route | Stop and secure the area: 6.2 s. Move the obstruction with the forks: 11.4 s. Drive through the pedestrian aisle: 16.6 s |
| Result 1 | 6.2 to 11.3 s | Hazard controlled | Automatic Change Time at 11.3 s | Debrief at 21.8 s |
| Result 2 | 11.4 to 16.5 s | Unsafe branch: the unknown object may be unstable or outside the approved task | Automatic Change Time at 16.5 s | Debrief at 21.8 s |
| Result 3 | 16.6 to 21.7 s | Unsafe branch: the pedestrian aisle is not an alternate forklift lane | None | Plays into the debrief |
| Debrief | 21.8 to 28 s | The lesson, and "Your route: {{selected_route}}" | A Replay button that clears selected_route and jumps to 5.1 s | End |
You can open the same example on its own forklift obstruction example page. For a training scenario that does not exist yet, our free branching scenario generator drafts a decision tree with choices, consequences, and endings from a short description. Have someone who knows the job review the draft. When the branches are separate videos, open More in the Mindstamp video menu and choose See branching to check the map of video-to-video paths. Mindstamp lists any destination that is not yet published under Unpublished Video Branches, and a switch to an unpublished video does not run.
Rules for each decision point
- End the scene before a decision on a held frame, and leave clear space where the options will appear.
- To make the video wait for a choice, set the button's Pause to At show time with Pause Length set to Until Interaction. For a timed choice, set a pause of 5 to 60 seconds, then put the default path next on the timeline, because the video plays on when the time runs out (pause options).
- Label each option as an action, such as "Stop and secure the area", so the viewer judges the action itself.
- Open each result scene with the consequence. The viewer has made a choice and wants to see the result.
- Give each loop a way out, such as a Continue button after two misses.
- In a one-file build, turn off Allow Seeking in the Design settings, because a viewer who drags the seek bar can land in a branch they did not choose. On supported plans, Prevent passing required interactions stops viewers from seeking past a question they have not answered (stop skipping ahead).
How to measure branching paths
A play count cannot tell you which path a viewer took. Mindstamp records each click and answer against the viewer, with its timecode, so you can answer these questions from the per-viewer report:
| Question | What to look at | Where |
|---|---|---|
| Which option do viewers pick at each decision? | The count of each option | The Interactions report, or the variable column in a views export |
| Where do viewers leave? | Furthest point, compared with the time of each decision | The Views report; drop-off by section on supported plans |
| Did the path change the result? | Correctness or a follow-up answer, grouped by path | A views export with variables and correctness |
| How many viewers reached a branch? | Views of each branch video | Each branch video's own report (Switch Video builds) |
For the path counts, filter Views to the video, select Export CSV, choose Raw views, and select Include Interactions, Variables, and Location. The file adds one column for each variable, so a pivot table on selected_route counts the sessions on each path and compares their scores. A views export can hold up to 5,000 rows (reports across several videos). When the branches are separate videos, use the same variable names in every video so the columns line up, and put the videos in a group so you can filter the whole project at once.
Watched percentage needs care in a one-file build. It counts the unique seconds a viewer played, divided by the length of the video (what each figure measures). A viewer who finishes any one path in the forklift demo plays only about 16 of its 28 seconds, so the report shows less than 60% watched for a viewer who saw a complete story. Jumps also make a viewer's last point differ from their furthest point. To count finished viewers, use a signal at the shared ending instead: a click on the final screen, or a Set Variable navigation at the debrief that writes a value such as finished = yes into the export.
Then use the numbers to change the video:
- If almost every viewer picks the same option in a training scenario, the wrong options may be too easy to rule out. Write them as mistakes a real person makes.
- If many viewers leave at a decision, the prompt may be unclear or the scene before it too long.
- If one path has much lower scores on the follow-up question, rewrite that branch's explanation.
- If a branch is rarely reached and teaches nothing the other paths do not, cut it and save the footage and testing time.
Which platforms support video branching for training content?
Most interactive video and scenario tools can branch. They differ most in scoring and in what the report shows for each learner. We checked each vendor's own pages on October 1, 2026.
| Platform | How branching works | Scoring and LMS | Reporting the vendor lists |
|---|---|---|---|
| Mindstamp | Buttons, hotspots, or question answers jump within a video or switch to another video; variables and conditional logic on supported plans | Scored questions; score-based routes; SCORM package for an LMS on supported plans | Each viewer's choices, answers, and path, with timecodes |
| Hihaho | Jumps and linked videos, among more than 20 interaction types | Questions; SCORM package or xAPI for an LMS | Views, completion rates, answers, response times, and clicks |
| Stornaway | A Story Map flowchart editor that links scenes into branches | Quiz scores; SCORM score, pass, and completion data on the Premium plan | Watch times, drop-off points, and buttons clicked on the Hosting plan; the Editing plan does not publish |
| H5P Branching Scenario | Each choice leads to another node: a video, an interactive video, a course presentation, text, an image, or image hotspots | A score for each ending, or points collected along the path; runs on H5P.com, in an LMS through LTI, or in WordPress and Moodle | Not described on the Branching Scenario page |
| BranchTrack | No-code scenario simulations; you can attach files, images, and videos | SCORM or xAPI export on every plan, including a free plan for one simulation | Learner analytics (Insights) on paid plans |
| Vimeo | The Interactive studio adds hotspots, time triggers, and overlays; a time action jumps or pauses within the same video | Quizzes with a quiz score sent through SCORM; learner seats needed for LMS tracking | Analytics on each interactive video's page; the Interactive studio and quizzes need an Enterprise plan (Vimeo help) |
Match the tool to the main job. BranchTrack is built for scenario simulations. Stornaway is built around story maps for projects that are a branching story first. H5P keeps a scenario inside a course that already runs on H5P. Mindstamp fits when the branches sit on real video and the same video also needs scored questions, lead capture, or a report of each viewer's path. We compare Mindstamp with Hihaho, Stornaway, H5P, BranchTrack, and Vimeo in more detail, and our overview of interactive video platforms covers tools without branching too.
For a rollout to hundreds of employees, check how each tool identifies the learner. A Mindstamp SCORM package reads the learner's name and ID from the LMS and passes them to Mindstamp, so the Mindstamp report and the LMS show the same person. The completion report then gives one row per person with a score for each video. For the rest of a training rollout, see Mindstamp for training.
Common questions
Can I create decision-based video flows without coding?
Yes. In Mindstamp, you pause the timeline at the decision, add a button, hotspot, or question, and choose Change Time or Switch Video as its action. Variables and conditional logic are settings in the same editor. Code is optional, for example to read player events on your own website. Our step-by-step guide to making an interactive video walks through the full build.
How do I make an interactive video like Bandersnatch?
Netflix's 2018 interactive film Black Mirror: Bandersnatch gave viewers two options at each decision and ten seconds to choose before a default played. An early choice of breakfast cereal came back later in a TV advert, and some endings closed off depending on earlier choices. You can build each mechanic with settings covered above: buttons with a timed pause, a variable, and conditional logic. Our choose-your-own-adventure guide breaks down the film's mechanics, and you can play the choose-your-own-adventure horror film example built in Mindstamp.
Can you build a branching video in Unreal Engine?
Yes, if you are building a game, a kiosk, or another app. Unreal Engine 5.8's Media Framework plays video through a Media Player asset, with File Media Source assets for local files and Stream Media Source assets for URLs, and a Media Texture that renders the picture (Epic Games documentation). Blueprint functions such as Open Source load the next clip, and you can bind events to playback states such as the end of a video. You build the choice interface and the branching logic yourself, and viewers need your app. For video that plays from a link or an embed, with reports, an interactive video platform needs no engine work.
Do branching videos work on phones and tablets?
Yes. Viewers tap instead of click. Test every path on a computer and on a phone such as an iPhone or a tablet such as an iPad, in the default browser, upright and turned sideways. Long option labels and small hotspots are harder to tap on a small screen. Our mobile publishing checklist lists the other checks.
Sources and further reading
- Dataintelo, global interactive video software market report: a paid market-sizing report cited in an earlier version of this article. Its public page does not show its method, so we do not quote its figures.
- SundaySky, 2025 video marketing statistics (February 2025): a vendor roundup of video marketing statistics.


