{
  "benchmarkId": "single-file-vs-multi-file-html-presentation-2026-08-25",
  "title": "Single-file vs multi-file HTML presentation artifact evidence",
  "status": "reverified-production-artifact-corpus",
  "testedAt": "2026-08-25",
  "environment": {
    "productionAssetHost": "r.slidesfly.xyz",
    "verification": "Downloaded each current production index and compared exact bytes and SHA-256 with the maintained framework proof contract."
  },
  "artifacts": [
    {
      "framework": "Plain HTML",
      "version": "browser-standard HTML, CSS, and JavaScript",
      "shape": "single-file",
      "fileCount": 1,
      "uncompressedBytes": 3832,
      "indexBytes": 3832,
      "indexSha256": "b91c5bbb153a49599ad0c84a519392f3bfe80f53d131f2b0d2d36bda86273dc6",
      "productionAsset": "https://r.slidesfly.xyz/hPTjZDoztFZRUFkbDzGbgz/4/index.html",
      "source": "https://slidesfly.com/examples/plain-html/deck.html",
      "result": "byte-match"
    },
    {
      "framework": "Marp CLI",
      "version": "4.5.0",
      "shape": "single-file",
      "fileCount": 1,
      "uncompressedBytes": 110832,
      "indexBytes": 110832,
      "indexSha256": "bf620fb90c599ae6ca1188425e1d84033b1b8dcba2dffedfc5443a41a73f8521",
      "productionAsset": "https://r.slidesfly.xyz/0IL3JvWNsXBEpXA342r9ug/1/index.html",
      "source": "https://github.com/rare/slidesfly-integrations/tree/main/examples/marp",
      "result": "byte-match"
    },
    {
      "framework": "Quarto Reveal.js",
      "version": "1.10.18",
      "shape": "single-file",
      "fileCount": 1,
      "uncompressedBytes": 3463302,
      "indexBytes": 3463302,
      "indexSha256": "bc56b6fa5c214bf7d13658911c3e8e27dfb50e9d8c2eee1ecd55d6a9d2066313",
      "productionAsset": "https://r.slidesfly.xyz/CccBkNgODjjYOFcp7vABJV/5/index.html",
      "source": "https://github.com/rare/slidesfly-integrations/tree/main/examples/quarto",
      "result": "byte-match"
    },
    {
      "framework": "Slidev",
      "version": "52.18.1",
      "shape": "multi-file",
      "fileCount": 49,
      "uncompressedBytes": 803544,
      "zipBytes": 343533,
      "indexBytes": 3596,
      "indexSha256": "03e4d5ee614917178784854b1775c73066f4610127bdddbac022a1b1ef7fbad4",
      "productionAsset": "https://r.slidesfly.xyz/EPt8Npfya1DZNBm3cfFPHW/4/index.html",
      "source": "https://github.com/rare/slidesfly-integrations/tree/main/examples/slidev",
      "result": "byte-match"
    },
    {
      "framework": "Reveal.js",
      "version": "6.0.1",
      "shape": "multi-file",
      "fileCount": 46,
      "uncompressedBytes": 5127395,
      "zipBytes": 2675652,
      "indexBytes": 1654,
      "indexSha256": "c21712a5f88d90c5ad8c99292696c22dff6c69a7ba34550b1e7356e534a31bc3",
      "productionAsset": "https://r.slidesfly.xyz/nlTgWEixO2Ik0wYT9KsLDg/2/index.html",
      "source": "https://github.com/rare/slidesfly-integrations/tree/main/examples/revealjs",
      "result": "byte-match"
    }
  ],
  "decisionRules": [
    {
      "condition": "The finished deck and every required resource fit one reviewed HTML file.",
      "prefer": "single-file",
      "reason": "One upload object removes archive-root and relative-file omissions."
    },
    {
      "condition": "The framework emits a directory, or media and runtime assets should remain separately inspectable.",
      "prefer": "multi-file",
      "reason": "Preserve the complete build output and its relative resource graph instead of forcing inlining."
    },
    {
      "condition": "The only way to reach one file is to keep remote runtime dependencies.",
      "prefer": "multi-file",
      "reason": "A locally packaged runtime is more portable than a nominally single file that still depends on third-party URLs."
    }
  ],
  "notMeasured": [
    "page-load speed or network latency",
    "compression ratio across arbitrary decks",
    "cache performance",
    "framework-wide compatibility",
    "access control, analytics, or business value"
  ],
  "limitations": [
    "The corpus contains one maintained fixture per listed version, not every plugin, theme, font, media type, or custom build.",
    "A byte-matched index proves artifact identity for the retrieved file; it does not prove every viewer interaction or every secondary asset in this recheck.",
    "File count is an artifact property, not a quality score. Both shapes can be correct."
  ],
  "officialSources": [
    "https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Schemes/data",
    "https://sli.dev/guide/hosting",
    "https://revealjs.com/installation/",
    "https://github.com/marp-team/marp-cli",
    "https://quarto.org/docs/presentations/revealjs/"
  ]
}
