MarpItUp
MarpItUp is a VS Code extension that makes creating Marp presentations faster and more maintainable by:
- inserting slide templates via contextual menus
- managing reusable slide snippets
- handling image paste intelligently (cross-platform)
- keeping your Markdown clean and Marp-compatible
It is designed to stay simple, predictable, and close to Marp’s native workflow.
✨ Features
🧩 Slide snippets
No manual registration: snippets are discovered at build time.
The folder structure under:
resources/slide-snippets/
is mirrored into the editor menu:
MarpItUp: Insert slide
├── Basics
│ ├── title
│ └── content
├── Layouts
│ ├── two-columns
│ └── image-left
This keeps large snippet libraries manageable.
Paste images directly into Markdown (Ctrl+V / Cmd+V):
Works on Windows, macOS, Linux
Supports clipboard images and file copy-paste
Automatically:
- saves the image to disk
- converts it to PNG (via
sharp)
- inserts a relative Markdown link
Example output:

🧠 Smart defaults
- Images are saved relative to the current Markdown file by default
- Paths are always inserted as relative links
- Filenames auto-increment safely
⚙️ Configuration
All settings are optional.
{
"MarpItUp.pasteImages.enabled": true,
"MarpItUp.pasteImages.base": "file",
"MarpItUp.pasteImages.folder": "res",
"MarpItUp.pasteImages.filenamePattern": "image_{n}.png"
}
Settings reference
| Setting |
Description |
pasteImages.enabled |
Enable/disable image paste handling |
pasteImages.base |
"file" (default) or "workspace" |
pasteImages.folder |
Folder where images are saved |
pasteImages.filenamePattern |
Filename template ({n} = auto index) |
🧱 How snippets work
Each snippet is a simple Markdown file:
resources/slide-snippets/Basics/title.md
Example:
---
marp: true
---
# {{title}}
Snippets may use simple tokens like {{theme}}, replaced at insertion time.
🖱 Commands
| Command |
Description |
MarpItUp: Insert Slide |
Opens the slide picker |
Snippet-specific commands are generated automatically and do not need to be declared manually.
| Platform |
Status |
| Windows |
✅ |
| macOS |
✅ (TIFF / HEIC converted to PNG) |
| Linux |
✅ |
🛠 Development notes
- Snippets are injected into
package.json at build time
- Menus are generated automatically from the filesystem
sharp is used for image normalization and kept external to the bundle
- No runtime templating or Marp preprocessing is required
🎯 Philosophy
MarpItUp follows a few strict principles:
- No magic syntax: everything stays valid Markdown
- Filesystem is the source of truth
- Generated menus, not hardcoded ones
- Works even if you stop using the extension
📌 Roadmap (optional / ideas)
- Image replacement via identifiers
- CodeLens actions on images
- Snippet metadata (labels, tags)
- Per-slide image folders
- Alt-text prompt on paste
License
MIT