Import a published Storyline course (no .story file needed)
How Scormbusters recovers the real text, pictures, layers, quizzes and triggers from a Storyline HTML5 publish — including text hidden behind Storyline's font subsetting — and exactly what does not survive: JavaScript, motion paths and the few trigger forms Scenes cannot run the same way.
Last updated 8 min read
The .story file is gone, and all you have is the published output — a SCORM zip or a folder with story.html and html5/ in it. Storyline cannot open that.
Step by step
Check it is an HTML5 publish
Look for a folder called
html5/data/jsinside the zip. If it is there, the full import applies. If there is onlystory_content/with.swffiles, it is a Flash-era publish (see below).Upload the zip
From the dashboard choose Import and drop the zip. You can zip the published folder yourself; a wrapping folder or a zip inside a zip is fine.
Import and open in the slide editor
Storyline courses import onto the slide canvas (the Scenes editor), one lesson per scene. Open in editor takes you there.
Read the report, then rebuild what is listed
The report notes how many triggers, variables and states came across, and counts the trigger actions that did not, with why. Rebuild the ones the course actually needs.
Why Storyline cannot open its own output
Storyline publishes a player plus data, not a project. There is no menu in Storyline that turns a published folder back into a .story, and Articulate's own recovery options (temporary files on the author's machine, cloud backups) only help if they still exist on the machine that built the course. So the usual answers are: find the .story, rebuild from screenshots, or embed the old output as a web object and live with it.
The published data is much richer than it looks, though. That is what the importer reads.
Where the content actually is
A modern Storyline publish keeps everything in html5/data/js/: data.js lists scenes, slides and media, and each slide has its own file describing its layers and objects. There are no per-slide HTML pages to scrape — story_content/blank.html is an empty stub — which is why generic tools that read HTML find almost nothing.
The words on screen live in paths.js. Despite the name it is not glyph outlines: every line of text is kept as real characters in SVG text runs, linked from each object. Following that link recovers the typography a learner actually saw — headings, paragraph breaks, bullet text — rather than the shorter accessibility description.
Recovering text Storyline scrambled
Storyline embeds only the letters each font needs ("subsetting"), and in doing so it moves some characters to private codes in Unicode's Private Use Area. The code for "f" in one course might be the code for the "ffi" ligature or an emoji in another font in the same course. Read naively, words arrive with holes: "Studienfach" becomes "Studienach", "Unofficial" loses its middle.
The importer works out the mapping for each publish, font by font, by lining up each scrambled run against the same object's accessible text, and only trusts the mapping once it can rebuild the text exactly. If a few characters still have nothing to decode them against, they are counted in the report as Characters in a subsetted font so you can check those headings.
What comes across
- Every scene as a lesson, every slide with its size and every object in place: text, shapes, pictures, audio and video.
- Layers, with whether each starts visible.
- Alt text the author wrote, on the object it belongs to.
- Graded questions with their answer keys: multiple choice, multiple response, true/false, word bank, text entry, numeric (exact value), matching (drag-and-drop or drop-down), sequence and hotspot. Hotspot and drag questions are rebuilt so they need no dragging and work by keyboard. Where the author wrote feedback on layers, that text is used.
- Slide draws (question banks). When a scene drew some of a bank's slides at random, those slides come across as a bank that shows as many per attempt, keeps the same draw when a learner resumes, and redraws on a new attempt.
- The pass mark from the results slide, when there is one agreed mark.
- Closed captions as WebVTT tracks on their videos, with the words also kept as a transcript.
Triggers, variables and states
Storyline publishes every trigger in the slide data, next to the objects, and the importer rebuilds them as Scenes triggers that run in the preview and in the exported SCORM package:
- Jumps to another slide, the next or previous slide, or into a lightbox.
- Layers shown and hidden, including Storyline's default of hiding the other layers.
- Objects shown and hidden; an object that only a trigger shows starts hidden.
- Variables set, added to and toggled, with the course's own variables and their starting values. Storyline's built-in ones (review mode, last slide viewed and the rest) are left behind.
- Conditions: AND becomes "all of", OR becomes "any of", and an Else becomes a second trigger with the opposite condition.
- Object states that triggers switch to or test, by name and with their text.
- Media played and paused, and links opened.
A clickable shape with no words or picture of its own comes across as a hotspot, so its trigger has somewhere to live.
What does not come across
A trigger that would run differently here is left out and counted in the report, never approximated:
- Execute JavaScript, motion paths and animation triggers.
- Conditions on object properties (on stage, a quiz score), on Storyline's built-in Selected, Visited or Disabled states, or that mix AND with OR.
- Hover triggers that restore on mouse leave, cues on a layer's own timeline, drag-and-drop, key-press and collision events.
- Anything reading a variable that something left out — JavaScript, a text field, a slider — would have set; conditions comparing one variable with another; variables set from another value.
- Custom behavior on the player's Next and Previous buttons (Custom Next and Previous button behavior), and result-slide actions such as submitting, resetting or printing results (Result-slide actions).
- What states look like: their names and text come across, their colors and pictures do not.
- Question types with no equivalent: Likert and essay surveys (their text comes across), numeric ranges, questions whose choices are only pictures, and drag-and-drop questions whose items have no words to choose by.
Note: A course built mostly from JavaScript, motion paths or drag-and-drop — a software simulation, a game — keeps its slides and its simpler triggers. Check the report's trigger lines before you publish it.
Flash-era Storyline publishes
Storyline 1 and 2 publishes made before HTML5 output keep each slide as a Flash movie with no html5/ folder. Structure and media come across, but the text on the slides exists only as vector artwork inside the Flash files and cannot be read back. The report says Flash-era package. If you still have the .story, republishing it as HTML5 and importing that gives a full import.
If you do have the .story file
You can upload a .story file too; it is read directly and lands on the slide canvas, but without its triggers — only the HTML5 publish carries those in a form the importer reads. The published-output route is the one tested against real courses (eleven real Storyline publishes, from Storyline 2 in 2015 to Storyline 360 in 2026), so if you can publish the .story to HTML5 first, do.
Part of the documentation: Migrate.
Found something here that does not match what the product does? That is a bug in the guide — see all guides or tell us from the Help Center.