Write your talk in Markdown, present it in the browser with a speaker view on your phone, let the audience follow it on theirs, and export it to PDF or PowerPoint. SliDesk is a single Bun binary: there is no node_modules, no front-end app to maintain, and nothing to configure before your first slide.
# My talk
## Hello 👋
Each `##` starts a slide.
/*
Speaker notes, only visible in the speaker view.
*/
## Agenda .[#split]
!include(slides)
slidesk my-talk # present at http://localhost:1337, with live reload
slidesk -l fr my-talk # the same talk, in French
slidesk export my-talk # my-talk.pdf (or -t pptx)
Why SliDesk
- Your audience follows on their phone. SliDesk serves your talk live while you present: the room opens it, or scans a QR code on your first slide, and follows your slides as you change them, with links to click and code to copy. Only you drive it. In the room over the network, or from anywhere with slidesk.link. How →
- One talk, many languages. Slides hold
$$variables$$, the words live in en.lang.json, fr.lang.json… and --lang picks one. No duplicated deck to keep in sync.
- Includes. Split a talk across files and directories with a single
!include(slides).
- A real speaker view. Current and next slide, notes, timers and checkpoints, drivable from your phone with a QR code, and only by you.
- Bring your existing decks.
slidesk import turns a PowerPoint, Google Slides, Slidev or reveal.js deck into a SliDesk talk.
- Your brand in one command.
slidesk design https://your-company.com makes a theme with the colours, fonts and logo of your website.
- Share it everywhere. Export to PDF or PPTX, save a static site for GitHub or GitLab Pages, or host it on slidesk.link in one command.
- Present from a terminal.
--telnet serves a text version of your talk. Yes, really.
- Extensible. Themes, templates, components and plugins, shared on the hub.
| Marp | Slidev | reveal.js | Typst | SliDesk |
|---|
| Authoring format | Markdown | Markdown + Vue | HTML / Markdown | Typst markup | Markdown |
| Install footprint | Node / CLI | Node project | Node project | single binary | single binary |
| Multi-language from one source | ✗ | ✗ | ✗ | ✗ (scriptable) | ✅ |
| Directory includes | ✗ | per file | per section | per file | ✅ |
| Audience follows on their own device | ✗ | on the network (--remote) | via plugin + server | ✗ | ✅ network or hosted |
| Speaker view with timers | limited | ✅ | ✅ | via pdfpc | ✅ |
| Import PowerPoint / Slidev / reveal.js | ✗ | ✗ | ✗ | ✗ | ✅ |
| Present from a terminal | ✗ | ✗ | ✗ | ✗ | ✅ |
| Theme generated from a website | ✗ | ✗ | ✗ | ✗ | ✅ |
| Code highlighting | ✅ | ✅ | ✅ | ✅ | via plugin |
| Math (LaTeX) | ✅ | ✅ | ✅ | ✅ | via plugin |
| Overview of all slides | ✗ | ✅ | ✅ | via pdfpc | ✗ |
| Draw on slides while presenting | ✗ | ✅ | via plugin | via pdfpc | ✗ |
| Live preview in the editor | ✅ | ✅ | ✗ | ✅ | ✗ (live reload in the browser) |
| Export slides as images | ✅ | ✅ | via DeckTape | ✅ | ✗ |
More in Why SliDesk?
Install
brew install gouz/tools/slidesk # macOS / Linux
bunx slidesk # anywhere Bun runs
Windows (slidesk_windows.zip), Linux and macOS binaries and a .deb package are attached to every release, and a Docker image is on Docker Hub as gouz/slidesk. See the installation guide.
Get started
slidesk create my-talk # scaffold a talk
slidesk my-talk # present it, edits reload live
Then follow the tutorial, or ask your AI assistant: slidesk skills adds the SliDesk skills for Claude Code to your project.
Going further
License
MIT