I’ve made a lot of PowerPoint presentations over the years, but I don’t like it. I spend too much time trying to format my slides and fighting with the GUI, and I think the abundant graphics choices encourage bad practices.
Because of that, I’ve been transitioning to making my slides in Markdown. It took me a few presentations to get there, but the slide deck I’m working on now was faster to build and less frustrating than if I'd done it in PowerPoint, and it has the look I wanted. Plus, I think this is feasible for non-programmers as well, if you’re comfortable with a little bit of code.
For context, Markdown is a simple 'language' that uses symbols like asterisks and hashtags to create headings, bold text, and lists, as well as to embed links and images. It's essentially a user-friendly abstraction of HTML, the standard markup language for web pages. When you write in Markdown, it's converted to HTML behind the scenes*. You can also use CSS (Cascading Style Sheets) to style this HTML, like changing the font or color. And if you need fine-grained control beyond what Markdown offers, you can even insert HTML directly into your Markdown, depending on the tool you’re using.
If you use Jupyter notebooks or write readme files for your git repos, you've likely used Markdown. Here’s an example of how Markdown gets translated into formatted text:
Benefits of Markdown for Presentations 📈
1. Text-based tools. I don’t use drag-and-drop tools to build my code, and it’s for many of the same reasons that I don’t like using them for presentations. I want to be able to see everything that’s going on in a slide via text, without hidden formatting, and to easily search both text and formatting. Also, when my charts or graphs change, with Markdown I don’t need to copy and paste the new images – I can embed a link to the figure itself and simply re-output the presentation when needed. Finally, having everything in a text-based tool means I can easily compare versions side by side via git.
2. Easy formatting changes: If you want to add a style, you can do it via CSS – and just once, at the front of your presentation. With CSS, you can make changes to your entire deck in seconds. Want all your headers to be blue? One line of code. Need to adjust the font size everywhere? Done in an instant. I’ve tried to do this in PowerPoint and it’s never worked consistently; I’m sure there’s a way, but if I haven’t found it in over a decade, I’m not going to. And you don’t need to write your own CSS – there are many online tools to help, and it’s also something that large language models are really helpful for—both because they’re good at it, and because you can easily tell whether the output works.

3. Cleaner look: Markdown encourages a minimalist style. That’s not going to be appropriate for every presentation, but it was the look I wanted. I liked not being tempted to use elaborate formatting or graphics, and my slides look more uniform.
My Process 🛠️
1. Marp in VSCode: To actually make my slides, I use the Marp extension in VSCode. I like that I can see a live preview and that I can export using ctrl-shift-p and the GUI as opposed to the command line. Quarto is another popular Markdown-based tool, and there are many others as well.
2. CSS and HTML for formatting. I use CSS for both presentation-wide formatting and to define specific classes that I want to format differently. For instance, my recent presentation has a section header class which I used to visually distinguish each section via different background and font colors. I also used inline HTML to adjust the size of an image or make other tweaks specific to one slide. (Just make sure to enable HTML in your settings in VSCode!) Some markdown tools may not support CSS or HTML.
What Do My Slides Look Like? 🎨
In general, I’m trying to go for a less wordy, more minimalist look. Below is an example. (The picture below is actually a screenshot of the larger animation that I’m using.)
But when I needed something slightly more graphically complicated, Claude 3.5 Sonnet generated this for me with a combination of CSS and HTML:
You could certainly put more text on the slide if you wanted to, and you can easily add columns and tables.
What if you want something more complicated? Anything you could put on a webpage, you can write as HTML. It’s just a question of how much work you want to put in. I tried to mimic a PowerPoint template slide with a timeline and complicated formatting just to see if I could. It didn’t go well, but I’m confident that if I’d really wanted to, I could have gotten there.
Conclusion 🎓
Transitioning from PowerPoint to Markdown for slide creation has let me focus more on content and less on formatting. While there's a learning curve, the benefits have been well worth it:
1. Text-based tools that allow for easier version control and searchability
2. Simple, powerful formatting changes with CSS
3. A cleaner, more minimalist aesthetic that’s still scalable if you want to do something more complicated
If you're tired of wrestling with PowerPoint and want more control over your presentations, give Markdown a try.
___________________
*This is a simplification. You can also output your markdown as PDFs or in other formats. In some tools, the HTML will be an intermediate step between the markdown and the other format. In others, it may convert directly, or with a different intermediate step.
Yes, I've done a few presentations with Jupyter Notebooks or Quarto, and I like the markdown aspect of these tools so I can focus on content while I'm organizing my thoughts. Then I rely on the theme/css to make it uniform and look pretty.
I love this! I use Markdown for my blog. I would love to have the proposal team write a deal response in Markdown. Then we can commit to GitHub instead of using MS Word/ Track changes on SharePoint. I will give Markdown for PPT a shot, since PPT gives me stress.