Framework compatibility matrix
| Authoring tool | Tested version | Publish artifact | Slidesfly path | Evidence status |
|---|---|---|---|---|
| Plain HTML | Browser-standard HTML, CSS, and JavaScript | One self-contained .html file | Anonymous up to 1 MB; Free account up to 5 MB | Built, scanned, and browser-tested |
| Reveal.js | 6.0.1 | index.html plus local dist and plugin assets | Root-level zip; authenticated Pro path | Built, extracted, and browser-tested |
| Slidev | 52.18.0 | Static dist directory with hash routing | Root-level zip; authenticated Pro path | Built, extracted, and browser-tested |
| Marp CLI | 4.5.0 | One generated index.html (110,832 bytes in the fixture) | Single-file path; account need depends on final size | Built and locally inspected |
| Quarto Reveal.js | 1.9.38 stable release | Self-contained HTML with embed-resources | Single-file path if the output fits the active size limit | Official-doc recipe; not locally built in this test pass |
Build the verified workflows
Plain HTML
slidesfly publish ./deck.html --title "HTML presentation" --jsonKeep scripts, styles, fonts, and images inline when you want the anonymous or Free single-file path. Remote script references are rejected.
Reveal.js 6.0.1
npm install
npm run build
cd build
zip -r ../revealjs-deck.zip .
cd ..
slidesfly publish ./revealjs-deck.zip --title "Reveal.js deck" --jsonThe tested fixture uses the Reveal.js 6 reveal.mjs runtime and keeps every dependency inside the archive.
Slidev 52.18.0
pnpm slidev build slides.md --base ./ --out dist
cd dist
zip -r ../slidev-deck.zip .
cd ..
slidesfly publish ./slidev-deck.zip --title "Slidev deck" --jsonUse hash routing for a deck served below a nested reader path. The verified fixture also disables remote font loading and supplies a local favicon.
Marp CLI 4.5.0
npx @marp-team/marp-cli@4.5.0 slides.md --output build/index.html
slidesfly publish ./build/index.html --title "Marp deck" --jsonThe tested fixture generated one 110,832-byte HTML file with its presentation runtime embedded. Always check the real output size because themes, images, and fonts change the result.
Quarto Reveal.js recipe
Quarto documents a single-file Reveal.js export through embed-resources. Add this front matter to the presentation, then render it:
---
title: "Quarto presentation"
format:
revealjs:
embed-resources: true
---
quarto render presentation.qmdPublish the resulting HTML only after checking its size and offline behavior. Quarto notes that dynamically loaded resources may not be embedded and that the Chalkboard plugin is incompatible with this option.
Constraints shared by every framework
- The deck runs in an opaque-origin sandbox without normal cookie, localStorage, or IndexedDB behavior.
- Uploaded content cannot navigate the top-level reader window.
- Bundle runtime scripts locally; uploaded remote script references are rejected.
- Test keyboard, pointer, touch, fullscreen, fonts, images, and code highlighting.
- Multi-file zip publishing requires an eligible authenticated plan and
index.htmlat the archive root.
How this matrix was checked
The plain HTML, Reveal.js, Slidev, and Marp fixtures live in the project's examples workspace. Builds were pinned, their output shapes and resource references were inspected, and the first three were exercised in a real browser. Quarto's row is based on its official publishing documentation and is explicitly not marked as locally verified.