Marp's Fullscreen Presentation API | Generated by AI

Home 2026.04

Question: Why does Marp HTML export run in full screen in Safari, what technology does it use, and why normal HTML doesn’t have a full-screen option?

Answer:

Marp’s HTML export works in full-screen mode in Safari because it is built on top of the browser Fullscreen API plus a slide-style presentation layout (essentially a web app designed for presentations).

1. What Marp actually exports

Marp doesn’t export “just HTML pages” in the traditional sense. It exports a presentation web app, which typically includes:

So it behaves more like:

a mini PowerPoint running inside a browser


2. The key technology: Fullscreen API

Marp uses the browser’s built-in:

When activated, Safari (and other browsers) can:

This is why Marp can feel like a native presentation app.


3. Why Safari allows this nicely

Safari supports Fullscreen API well for:

Marp likely targets a full-screen <div> container, for example:

document.documentElement.requestFullscreen()

or a slide container like:

slideContainer.requestFullscreen()

Once activated, Safari switches into a “presentation mode-like” state.


4. Why “normal HTML” doesn’t automatically go full screen

Normal HTML pages do NOT enter fullscreen because:

(1) Security restriction

Fullscreen must be:

So normal websites just stay inside the browser UI.


(2) No layout enforcement

Regular HTML:

So even if fullscreen is enabled, it still looks like a webpage unless designed for it.


(3) Fullscreen is not default behavior

Browsers assume:


5. Why Marp feels different from normal HTML

Marp adds the missing pieces:

Feature Normal HTML Marp HTML
Fullscreen API Optional Actively used
Layout Flowing document Fixed slide viewport
Navigation Scroll Slide-based (JS)
Presentation mode None Built-in

So Marp is basically:

HTML + CSS + JS + Fullscreen API = presentation engine


6. Why it works especially well in Safari

Safari tends to:

So Marp’s slide structure aligns perfectly with Safari’s fullscreen behavior.


If you want, I can break down how to build a mini “Marp-like” system yourself using just HTML + CSS + 20 lines of JavaScript.


Back Donate