How to Share a Slidev Presentation Online
Slidev is a fantastic way to build a talk. You write slides in Markdown, drop in Vue components when you need something interactive, and get a polished, developer-friendly deck. Then comes the part nobody enjoys: getting it online. Search for how to share Slidev online and you land on the official hosting guide, which tells you to build a static site and deploy it yourself to Netlify, Vercel, or GitHub Pages. That is a fine workflow if you already run one of those, but it is a lot of ceremony for a deck you just want to send someone.
There is a shorter path. Slidev can export your entire presentation as a single self-contained HTML file, and Shipslides will host that file for free behind a shareable link and an embed. No repo, no build pipeline, no host to configure. This post covers the exact build command and the upload flow.
Build a single-file Slidev deck
From the folder containing your slides.md, run the build with the single-file flags:
npx slidev build --base ./ --single-file
That produces a standalone dist/index.html with all of your Vue components, styles, and the Slidev runtime inlined into one document. A few notes on the flags:
--single-fileis what collapses the usual multi-asset build into one HTML file. Without it you get a normaldist/folder with separate JS and CSS you would have to host together.--base ./makes all asset references relative, so the file works no matter what URL it is served from.
If your slides include presenter notes you would rather not ship, add --without-notes:
npx slidev build --base ./ --single-file --without-notes
That keeps everything you wrote in the presenter comments out of the compiled file, which matters because a self-contained HTML deck is fully readable by anyone who opens the source.
What runs in a sandbox, and what does not
Shipslides serves every uploaded deck inside a locked-down iframe sandbox. This is the honest tradeoff, and it is worth understanding before you build. Compiled Vue interactivity runs fine: click-to-reveal (v-click), component state, animations and transitions, Shiki-highlighted code blocks, and KaTeX math all render and behave exactly as they do locally, because Slidev bakes them into the file at build time.
What is blocked is runtime network access — external fetch and XHR calls do not go through. The sandbox exists so that hosting an arbitrary HTML file from anyone cannot phone home, exfiltrate data, or load third-party trackers. In practice a normal Slidev talk never needs to fetch anything at runtime, so this is invisible. It only bites if you built a component that pulls live data from an API mid-presentation; bake that data into the deck at build time instead.
Upload and share
Once you have your dist/index.html, publishing it is a single step:
- Open the Shipslides upload page.
- Drag
dist/index.htmlonto the drop zone. - Get a shareable link and an embed snippet back immediately.
That is the whole flow. No Git push, no deploy hook, no waiting on a build to go green. When you update the deck, rebuild and upload again. If you want to compare this to hosting other kinds of decks, see our guide on sharing any HTML presentation and how to host a reveal.js deck without GitHub Pages. You can also read more about Slidev on Shipslides.
The point of Slidev hosting should be sharing the deck, not standing up infrastructure. Build the single file, drop it in, send the link. That is the fastest way to host a Slidev deck and publish a Slidev presentation without touching a static host.
Frequently asked questions
Do interactive Vue components work in the shared deck?
Yes. The --single-file build compiles your Vue components and their runtime into the HTML, so click handlers, v-clicks, transitions, and any local component state run exactly as they do in slidev dev. The one limit is anything that reaches the network at runtime — external fetch or XHR is blocked in the sandbox for security — so a component that lazy-loads data from an API will not fetch. Anything self-contained works.
How do I hide presenter notes?
Add the --without-notes flag to the build: npx slidev build --base ./ --single-file --without-notes. Slidev keeps your per-slide notes out of the compiled bundle, so nothing you wrote in the presenter comments ships in the file you upload.
Do code highlighting and LaTeX math render?
Yes. Slidev renders Shiki syntax highlighting and KaTeX math at build time and inlines the results, so code blocks and LaTeX formulas display without any runtime dependency or network call. They render correctly inside the sandbox.
Can I embed the deck on my own site?
Yes. Every deck you upload gets both a shareable link and an iframe embed snippet you can paste into your blog, docs, or landing page. The embed is sandboxed the same way the standalone link is.
Have a Slidev deck ready?
Upload the single-file HTML build and get a free, sandboxed, shareable link.
Upload to Shipslides