Marp to Google Slides: the honest paths (and a shortcut)
Marp has no direct Google Slides export, so every route goes through a converter or an intermediate file and loses fidelity. Here are the paths that actually work, and a shortcut for when what you really wanted was a deck you can share as a link.
If you built a deck in Marp and now need it in Google Slides, you have already hit the wall: there is no button for it. Marp is a great Markdown-based deck tool, but Google Slides is not one of its export targets, so you have to route around it. This post lays out the routes that actually work, what each one costs you, and a shortcut for the common case where Google Slides was a means to an end, not the end itself.
Why there is no direct path
Marp renders slides from Markdown using HTML and CSS, and it exports to HTML, PDF, PNG, and PPTX. Google Slides is a different system with its own layout model and its own file format. There is no shared format between them that preserves everything, so any move from Marp to Google Slides is a translation, and translations between slide formats always approximate. That is not a knock on Marp; it is true of moving between almost any two presentation tools. It just means you should expect some cleanup on the other side.
The paths that work
There are two realistic routes, and they trade off differently.
- Marp to PPTX, then import to Google Slides. Export your deck as PPTX from Marp, upload it to Google Drive, and open it with Google Slides. This is the most reliable route because both ends are supported: Marp makes PPTX, Google Slides imports PPTX. The cost is cleanup. Spacing, fonts, backgrounds, and code blocks often need fixing afterward, because PPTX and Google Slides do not render them identically.
- md2gslides, Markdown straight to Slides. Tools like md2gslides use the Google Slides API to build a deck from Markdown directly. For simple text-and-bullet decks this can be cleaner than the PPTX hop, because it skips one format. The cost is setup: you need to install it, authorize API access, and accept that custom Marp styling will not carry over faithfully. It is best when your deck is mostly plain content, not heavily styled.
Both get a Marp deck into Google Slides. Neither is one click, and both leave you doing some repair each time the content changes, because every edit means running the conversion again.
The question worth asking first
Before you commit to a conversion pipeline you run every time, it is worth being honest about why you want Google Slides. For most people the answer is one of these:
- So others can open it without installing anything. A link anyone can view in a browser.
- So people can comment or collaborate. Sharing for feedback rather than editing the Markdown together.
- Because a link is easier to send than a file. You want to hand over a URL, not an attachment.
Notice that none of those actually require Google Slides specifically. They require a deck that lives at a URL and opens in any browser. Google Slides is one way to get that, but it costs you a conversion and a format you did not write in. If the goal is a shareable, viewable deck, there is a more direct way to get one.
The shortcut: keep the Markdown, share a link
Plain starts from the same place Marp does, your content as Markdown, but its output is a web page instead of a file. You write or paste your outline, it renders to a deck you present in the browser, and you share it as a link. There is no export to Google Slides because there is nothing to export: the deck already lives at a URL that anyone can open with no install and no account.
| Marp then Google Slides | Plain | |
|---|---|---|
| Source | Markdown, portable text you own | Markdown, portable text you own |
| Getting to shareable | Convert via PPTX or md2gslides, then fix | It is already a web page at a URL |
| Fidelity | Approximated across formats, cleanup each time | What you see is what you share, no conversion |
| Sharing | A Google Slides link after the import | A link straight from your deck, no install to view |
| Updating it | Re-run the conversion after each edit | Edit any element in place, the link stays current |
If you genuinely need the deck inside Google Slides, because a team workflow is built around it, the PPTX route above is the reliable one. But if Google Slides was just how you planned to share the thing, a web link does that job without the round trip, and it stays current when you edit instead of forcing another conversion.
The short version
Marp cannot export to Google Slides directly, so you go through PPTX or md2gslides, and you accept some cleanup each time. That is fine when Google Slides is a hard requirement. When it is not, and it usually is not, what you actually wanted was a deck you can share as a link and that anyone can open. Plain gives you that from the same Markdown you would have written for Marp, with no conversion step and nothing to repair.
For more on writing decks in Markdown, read why Marp Markdown is great until your slides need edits or the fuller rundown of Markdown to Google Slides options. If you came from another Markdown deck tool, see the Slidev alternative guide. Otherwise, the fastest way to feel the difference is to paste your Marp outline in and get a shareable deck back. Try Plain and skip the conversion.