Markdown to PowerPoint

This page cuts a Markdown file into slides, at --- by default, the same place Marp and reveal.js cut, and writes a .pptx. It tells you the slide count before you press Start.

Need a document rather than slides? Markdown to Word turns the same file into a .docx.

  • No account
  • No watermark
  • No file limit
Drop your files hereor click to chooseNo size or count limit beyond what your own computer can hold.There is no upload bar here, because there is no upload. The file is opened by this page, on your machine.

Your files

A .pptx names fonts, it does not carry them. Pick what is installed where the deck will be opened.

Drop a file and the slide count appears here.

    Nothing chosen yet.

    A Markdown file on the left; on the right, the four slides it became.
    A sample file run through this tool. The file is generated by a script — nothing in it is real.

    What this tool does for you

    The parts worth knowing before you start.

    The slide count is there before you commit

    Drop the file and the number appears under it, and it changes when you change where the cut happens. A file with no --- anywhere becomes one very long slide, and you see that here.

    It cuts where the rest of the ecosystem cuts

    A --- on its own line is what Marp splits on and what the reveal.js Markdown plugin looks for by default. A file written for either of those comes out with the same number of slides here. If yours is only ## headings and no rules, switch the cut and watch the count change.

    Chinese, Japanese and Korean go in the right font slot

    A .pptx names fonts, it does not carry them, and PowerPoint looks up East Asian characters in a different slot from Latin ones. Leaving that slot empty can show boxes on a machine set up for English. Every run written here fills both slots.

    The outline never leaves the machine

    Unreleased numbers, a reorg, a board update. The outline is turned into slides inside your browser; no step sends it anywhere.

    How to use Markdown to PowerPoint

    Drop your .md file in. The slide count shows up straight away.

    Choose where it cuts: at --- only, or at headings as well. Then choose which font to name for Chinese, Japanese and Korean text.

    Press Start and download the .pptx. Open it in PowerPoint, Keynote, Google Slides or WPS.

    When people use it

    Your notes are already the talk

    You worked the argument out in a Markdown file and the meeting wants slides. The content does not need rewriting, it needs cutting.

    Someone else has to present it

    A .pptx is what gets asked for, and notes written as HTML comments land in the notes pane, which is where the presenter will look.

    A deck that is really a document

    Release notes, a status update, a checklist that has to be shown on a screen. One heading per slide.

    Questions about Markdown to PowerPoint

    Where exactly does it cut?

    At a --- on its own line. That is what Marp splits on, and the reveal.js Markdown plugin looks for the same thing by default. You can ask for headings on top of that: # alone, or # and ## together. Headings are additive the way Marp headingDivider is: a --- still cuts even when heading cuts are switched on.

    My file has --- under a line of text and I meant a heading

    In CommonMark that is an H2, the underlined kind. Here it is a slide break. Write ## Like this if you wanted a heading.

    What happens to images?

    Only images written as data URIs are put in the deck. Images with an http address are not fetched; they are counted and reported, so you know how many are missing.

    Will it look the same on the machine I present from?

    The text will be there; the exact face may not. A .pptx names fonts rather than carrying them, so if the font you picked is not installed where the deck is opened, PowerPoint substitutes something else and the line breaks shift a little. The East Asian font slot is filled, which is the difference between a substituted font and a row of empty boxes.

    How do I write speaker notes?

    An HTML comment on the slide: <!-- slow down here, they always ask about cost -->. That is the Marp convention. A line beginning Note: also works, which is what the reveal.js plugin reads. Marp directives such as <!-- paginate: true --> or <!-- _class: lead --> are recognised as directives and dropped, so they do not turn into notes or into text on a slide.

    What does not survive?

    Themes and slide layouts, background images, columns, footnotes, maths, emoji as pictures, and any HTML beyond <br> and comments. Headings, paragraphs, bulleted and numbered lists with their nesting levels, bold, italic, strikethrough, inline code, fenced code blocks, blockquotes, tables, links and speaker notes all come through.

    Does it produce a designed deck?

    No. Everything lands on one plain layout: title at the top, content below, dark text on white. There is no theme picker. If the deck has to carry a brand, get the content into PowerPoint here and apply your template there.

    Is the file really not uploaded?

    No. The .md is read inside this tab and the .pptx is assembled inside this tab. There is no server here that could receive it.

    Other tools