Compatibility matrix

Choose the right Slidesfly upload shape for your HTML slide framework

The framework matters less than the artifact it produces. Use one self-contained HTML file when possible; use a root-level zip when the deck needs local runtime assets.

Last tested: July 28, 20268 minute reference

Framework compatibility matrix

Authoring toolTested versionPublish artifactSlidesfly pathEvidence status
Plain HTMLBrowser-standard HTML, CSS, and JavaScriptOne self-contained .html fileAnonymous up to 1 MB; Free account up to 5 MBBuilt, scanned, and browser-tested
Reveal.js6.0.1index.html plus local dist and plugin assetsRoot-level zip; authenticated Pro pathBuilt, extracted, and browser-tested
Slidev52.18.0Static dist directory with hash routingRoot-level zip; authenticated Pro pathBuilt, extracted, and browser-tested
Marp CLI4.5.0One generated index.html (110,832 bytes in the fixture)Single-file path; account need depends on final sizeBuilt and locally inspected
Quarto Reveal.js1.9.38 stable releaseSelf-contained HTML with embed-resourcesSingle-file path if the output fits the active size limitOfficial-doc recipe; not locally built in this test pass

Build the verified workflows

Plain HTML

slidesfly publish ./deck.html --title "HTML presentation" --json

Keep 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" --json

The 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" --json

Use 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" --json

The 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.qmd

Publish 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.html at 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.