Publish your Twine story online as a playable link
Drop the .html file Twine exports (up to 10 MB) or a ZIP with images and audio (up to 25 MB) on ship.page for a free playable link, no signup. It goes live over HTTPS in seconds and stays up for 30 days, or 90 days with a free account.
A file. A folder. A fresh start.
Your static site, one link away.
Uploading publishes your file. The link is public but unlisted, not password-protected, so leave out secrets and confidential content.
- Output from Twine Build > Publish to File
- 1 HTML file
- Max upload size for a single HTML file
- 10 MB
- Free limit when bundling images and audio
- 25 MB ZIP
- Free link lifetime with no account
- 30 days
How to export from Twine and get a playable link
Export your story as HTML in Twine
Open your project in the Story Map (or select it in the Story Library), open the Build tab, and click Publish to File. Twine saves one HTML file to your computer containing the story format, all passages, the story stylesheet, and the story JavaScript.
Bundle images or audio if your story uses them
Twine does not embed images or audio inside the published HTML file. If you link to local media using relative paths, rename your exported file to index.html and put it in a folder alongside your media folder, or compress them together into a .zip file.
Drop the HTML file, folder, or ZIP on ship.page
Drag your single .html file, folder, or .zip archive into the browser uploader on this page. You do not need an account or a credit card.
Share the link or QR code with players
Your story goes live in seconds on its own HTTPS subdomain. Copy the URL or download the PNG QR code from the success screen so friends or playtesters can open it in any browser.
Comparing ways to put a Twine story online
| Option | Account needed | Best for | Catch |
|---|---|---|---|
| ship.page free | No; a free account keeps it 90 days | Quick playtest links and private sharing | 30 days without an account, 25 MB ZIP limit, new link on re-upload |
| ship.page Pro | Yes ($4/month) | Same-link updates during playtests and password protection | Costs $4/month, no custom domains |
| itch.io | Yes (free) | Releasing a public HTML5 game up to 500 MB extracted | Default 10% revenue share, adjustable from 0% to 100% |
| GitHub Pages | Yes (free) | Developers already using GitHub | Needs a GitHub account and a public repository on GitHub Free |
Which Twine story formats work?
Every bundled Twine story format works out of the box, including Harlowe, SugarCube, Chapbook, and Snowman. Because Build > Publish to File compiles the story format, passages, CSS, and JavaScript into one static HTML file, any browser can run it without a server.
If you only have text, custom styles, and macros, you can use a direct HTML to link upload. Keep the file under the 10 MB single-file limit and drop it right in.
How do I include images and audio in a Twine upload?
A published Twine file only stores text and code; images and audio are not embedded in the HTML. Your passages must reference external media by a full URL or by a relative path like images/map.png.
To keep everything self-contained without hosting files elsewhere, use a relative path and upload a folder or a ZIP file. Rename your exported story to index.html so ship.page knows which file to open as the homepage.
- Rename your exported Twine HTML file to index.html.
- Keep your media folder in the same directory as index.html so relative paths match.
- Drag the whole folder or a .zip archive into ship.page (a single top folder inside a ZIP is unwrapped automatically).
- Stay within the free limits: a folder upload holds roughly 7 MB of files, and a ZIP takes up to 25 MB (100 MB unpacked) and 100 files.
Tip: Pro ($4/month) raises the archive limit to 100 MB per ZIP (400 MB unpacked) and 10,000 files if your game has a large soundtrack or illustration library.
Where can I host a Twine game for free?
If you want a public game page for a finished game, itch.io hosts HTML5 games for free. It takes a single .html file or a ZIP with index.html at the root (up to 1,000 files, 500 MB extracted, and 200 MB per file), and lets you set your revenue share anywhere from 0% to 100% (10% by default).
If you just want to share an HTML game privately with a friend, playtester, or teacher without creating an account, ship.page is faster. Every page is served with a noindex header so search engines leave it out, and uploads are never listed anywhere public.
For developers who already use Git, GitHub Pages is another option for free HTML5 game hosting: it is free for public repositories on GitHub Free, with published sites up to 1 GB and a 100 GB monthly soft bandwidth limit.
How do I update my story or keep the link forever?
Unclaimed uploads stay online for 30 days. Sign in with Google or an email link to claim the page, and it stays online for 90 days at no cost.
Free pages cannot be edited in place; uploading a new build from Twine creates a new URL. If you are running an active playtest and want to fix typos without sending a new link, Pro is $4 a month and lets you re-upload over the same link, remove expiry, and add a password.
Questions
How do I export a Twine story as HTML?
In Twine, open the Story Map for your project or select it in the Story Library, open the Build tab, and click Publish to File. The Build tab also has Play, Test, Proof and Export As Twee, but Publish to File is the one that saves a file that opens in a browser.
How do I upload a SugarCube or Harlowe game?
Build > Publish to File puts the story format, Harlowe or SugarCube, into one HTML file along with your passages, stylesheet, and JavaScript. Just drag that exported .html file onto ship.page to get a live link in seconds.
Why are my images or audio missing after I upload my Twine HTML file?
Twine does not embed images or audio inside the published HTML file; they must be linked by an external URL or a relative path. If you use relative paths, rename your HTML file to index.html, place it in a folder next to your media files, and upload the whole folder or a ZIP file to ship.page.
Can people find my Twine story on Google?
No. Every page hosted on ship.page is sent with a noindex header that tells search engines not to index it, and ship.page has no public list of uploads. Only people who have your exact link can read your story, and Pro users ($4 a month) can also lock the page with a password.
Keep reading
- Share an HTML game
- Free HTML5 game hosting
- Host a Bitsy game
- Host a single HTML page
- Turn a ZIP into a website
Drop your Twine file for a link
Drag your published HTML file or media ZIP into the box above to get a playable HTTPS link and QR code in seconds.