HTML Presentation: Export, Share and Test a Browser Deck
Why people present from a single HTML file, what a good one needs (keys, notes, print to PDF), where Reveal.js, Marp and Slidev exports break, and how to make an old deck editable.
An HTML presentation can be useful when you need to open slides in a browser without presentation software. A single file is convenient to carry and share, but only works offline if its images, fonts and scripts are available locally. Before a talk, test the exported file on the actual device with the network disconnected.
Why present from an HTML file at all
A browser reduces the need for a particular presentation app. It does not remove every compatibility issue: missing fonts, unsupported browser features and external resources can still change the result. Test the file on the Mac, Windows machine or Chromebook you expect to use.
It is also easy to share. Put the file on any static host and the deck becomes a link you can paste into a chat or a follow-up email. People open it on their phone without installing anything, provided the page and its resources are accessible.
What a good single-file HTML presentation needs
Opening in a browser is the easy part. Check the controls and print layout before using the exported deck in a talk.
Test the navigation keys and your clicker rather than assuming every export handles the same inputs. Check how speaker notes are displayed: a separate presenter view can keep them private, but ToSlides HTML uses a same-screen overlay. Leave that overlay closed while sharing with the audience. Also inspect the print preview to see whether slides fit cleanly on separate pages.
The last check is the one people skip. Copy the file to a different folder, turn off the network, and open it. If the slides still look right, it really is a single file. If fonts fall back to Times or images turn into broken icons, it was quietly depending on something else.
Reveal.js, Marp and Slidev, and the catch with exports
Reveal.js, Marp and Slidev are three common options for authoring web slides. Reveal.js uses sections to structure slides, Marp works from Markdown, and Slidev uses Vue. Their exported files and resource requirements differ, so inspect the output rather than treating every HTML file as self-contained.
Inspect what the exported HTML actually contains. A Reveal.js deck usually loads its library, theme and plugins from separate files or a CDN. A Slidev build is a single-page app: the HTML is often a near-empty shell, and the slides only exist once its JavaScript runs. Marp's HTML export is more self-contained, but images referenced by relative path still have to travel alongside it. Move any of these to a locked-down machine and check that its required files and network access are available before the talk.
Maintenance also matters. If colleagues need to revise the deck, choose a format and editor they can use, and include the source text with the exported file.
Turning an existing HTML presentation into something editable
The HTML slide editor on ToSlides is meant for that situation. You import or paste the HTML, and it is parsed in your browser rather than uploaded. Files can be up to 5 MB and 100 slides. It recognises decks exported from ToSlides or EndTo, static Reveal.js sections (vertical slides are laid out in reading order, and embedded Markdown and speaker notes are read), Marp exports, Slidev static snapshots that contain the actual slide pages, and other static pages with a clear slide container.
What it does not do is run the original file's scripts. That is a deliberate safety choice, and it has consequences: complex styling, scripts, animations, audio, video and interactive widgets are not guaranteed to survive. A Slidev SPA that is only a JavaScript shell cannot be reconstructed, because there are no slides in the HTML to read. Remote https images load only if you tick the option to allow them, and relative-path images whose files are missing are flagged so you know what to re-add.
Once a deck is in, the content becomes Markdown. You can rewrite text, fix tables and edit notes, switch to one of the themes, and export again as a single HTML file, an editable PPTX or a printable PDF. The exported HTML carries its own theme, keyboard navigation, speaker notes and print styles. Images linked from the web still need a connection, so if you are presenting offline, check those slides first.
Say you inherited a 40-slide Reveal.js deck from last year's workshop and need to update a dozen dates. Importing it, editing the Markdown and exporting a fresh file is usually faster than setting up the old project, finding its plugins and remembering how the build worked. Check the imported content carefully and decide whether the lost styling or behaviour matters for this workshop.
Writing a new one from scratch
If there is no old deck, you can skip the import step. The Markdown slide editor splits slides on ---, treats a Note: line as speaker notes and exports the same kind of single-file HTML. Rehearse it once from the exported file, not the editor, since that is the version you will actually be standing in front of.
What this can't do yet
The importer reads structure and text, not behaviour: it does not run the original scripts, so complex CSS, animations, audio, video and interactive elements may be lost, and a Slidev SPA that is only a JavaScript shell cannot be restored. Imports are capped at 5 MB and 100 slides. On the output side, ToSlides ships four themes, with no animated transitions, motion graphics or drag-and-drop layout canvas, and exported HTML still needs a connection for images hosted elsewhere. Notes use a same-screen overlay, not a private presenter window.
Frequently asked questions
Can I present an HTML presentation without an internet connection?
Yes, if everything it needs is inside the file. Test by copying it to a new folder with Wi-Fi off. Images linked from the web, or a framework loaded from a CDN, will not appear offline.
Will my Reveal.js animations survive the import?
Probably not. The HTML slide editor reads static Reveal.js sections, including vertical slides, embedded Markdown and notes, but it does not run scripts, so animations, fragments and plugin effects are not guaranteed to come through.
Why can't my Slidev deck be imported?
A standard Slidev build is a single-page app whose HTML is mostly a JavaScript shell. With no slide content in the markup there is nothing to read. A static snapshot that contains the real slide pages can be imported instead.
Is the HTML file uploaded to a server when I import it?
No. The editor parses the file locally in your browser. It also does not execute any scripts from the original file, and remote images only load if you choose to allow them.
Can I turn an HTML deck into PowerPoint?
Yes. After importing, you can export an editable PPTX at 16:9, as well as a fresh single-file HTML deck or a PDF from print. The layout follows the chosen theme rather than the original CSS.