Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Hugo theme for creating HTML slide presentations with Reveal.js from markdown content, with shortcodes and customization.

A quick and easy way to generate markup for mailto links without having to worry about the annoying formatting.
reveal-hugo is a Hugo theme that converts markdown content into HTML slide presentations built with Reveal.js, giving static-site users a Git-friendly way to author and publish decks. Developed by joshed-io, the theme registers a custom output format and lets you create multiple slides from a single markdown file by separating them with --- on blank lines.
reveal-hugo is a Hugo theme for Reveal.js that takes Hugo content files (markdown with front matter) as input and produces a fully client-side HTML presentation as output. It requires Hugo v0.93.0 or newer for the current release, and supports installation either as a Hugo module or as a traditional git submodule. The theme is authored and maintained by joshed-io, and its live documentation and demo site is reveal-hugo.dzello.com.
--- surrounded by blank lines; the first slide goes in _index.md and additional markdown files in the same section append slides in order.id, class, background, transition, transition-speed, and many other per-slide attributes by adding the slide shortcode above the slide content; a data- prefix is added automatically where needed.data directory and render them anywhere with the slide shortcode's content attribute, e.g. {{% slide content="slides.thankyou" /%}}.math code block, the math shortcode, or inline $...$ syntax; the MathJax scripts activate automatically when a math block or shortcode appears.custom_theme_compile to build a SCSS/PostCSS Reveal.js theme from the assets folder, letting you override color variables like $backgroundColor directly.[[params.reveal_hugo.plugins]] entries in hugo.toml or front matter, specifying name, source, and optional css files so the theme loads their JavaScript and stylesheets.static folder out of the box, while reveal_cdn and highlight_cdn let you switch to a CDN when preferred.s), code syntax highlighting, and MathJax formulas in their teaching materials.content/_index.md, add outputs = ["Reveal"], and run hugo server to get a live-reloading deck at localhost:1313.content/ted-talk/ with its own _index.md to generate a standalone presentation accessible at a sub-path.\tag*{(1)} P(E) = {n \choose k} p^k (1-p)^{n-k} inside a math code block for a compiled presentation.data/slides.toml and render them on multiple pages with {{% slide content="slides.thankyou" /%}}.After creating a Hugo site, install the theme either as a Hugo module (hugo mod get github.com/joshed-io/reveal-hugo) or a git submodule, then add the Reveal output format and set theme in hugo.toml. Create content/_index.md with outputs = ["Reveal"] and write slides separated by ---. Finally run hugo server; the presentation is generated as index.html in the root or section folder.
layouts and static from the theme into your site.The latest version of the theme requires Hugo v0.93.0 or newer. If you're using an earlier Hugo version, you can use a previous release of the theme for compatibility.
Separate slides in your markdown by placing a line containing only --- with blank lines above and below it. Each segment becomes a slide in the presentation, and multiple markdown files in the same section append their slides to the section's deck.
Yes. Add a note shortcode with your note text, or use the notes attribute on the slide shortcode. During the presentation, press s to open a separate speaker window that shows the notes and a timer.
Yes, by default the theme loads Reveal.js and highlight.js from your site's static directory. To use a CDN instead, set reveal_hugo.reveal_cdn and reveal_hugo.highlight_cdn in your configuration.
Yes, you can write equations in a math code block, use the math shortcode, or wrap inline math in $...$. The theme activates the required MathJax scripts automatically when a math code block or shortcode is present.
