Skip to content
| Marketplace
Sign in
Visual Studio Code>Notebooks>mdpadNew to Visual Studio Code? Get it now.
mdpad

mdpad

Thomas Bekaert

|
6 installs
| (0) | Free
A lightweight markdown notepad inside VS Code
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
mdpad icon

mdpad

VS Code Marketplace Open VSX Installs CI License: GPL v3+

A lightweight markdown notepad inside VS Code. Type markdown and see it styled live — syntax stays visible but dimmed, content is formatted as you write.

mdpad demo

Quick Start

  1. Install mdpad from the VS Code Marketplace or Open VSX
  2. Click the mdpad icon in the activity bar (left side)
  3. Start typing markdown

That's it. Your notes persist across restarts, per workspace. Toggle to Global scope for notes that follow you across all workspaces.

Features

Writing

Muted-syntax editing

Markdown characters (#, **, *, `, ~~, ==) stay visible but dimmed. Content is styled live — headings are bold, bold is bold, code is monospace, and ==highlighted text== gets a yellow background.

Frontmatter

Type --- at the top of a note to create a YAML frontmatter block. Keys are muted, values stay readable. The closing --- is auto-inserted.

Use title: to set a custom page title that overrides the auto-derived one:

---
title: My Custom Title
---

Lists

  • Bullet and numbered list markers are styled with muted syntax
  • Tab / Shift+Tab to indent and outdent list items
  • Unordered lists automatically cycle markers by depth: - → * → +
  • Ordered lists renumber automatically when indenting or outdenting

Code blocks

Fenced code blocks get syntax highlighting for 19 languages including JavaScript, TypeScript, Python, JSON, HTML, CSS, SQL, Rust, Go, Java, C/C++, and more — see the full list below. Typing ``` auto-inserts the closing fence.

Section folding

Collapse H2 and H3 sections and frontmatter blocks (enable via mdpad.folding setting). Click the chevron at the right end of a foldable line to fold/unfold. Only sections with content can be folded.

GFM support

Headings, bold, italic, strikethrough, links, blockquotes, task lists, fenced code blocks, tables, and horizontal rules.

Organizing

Workspace & Global notes

Notes default to workspace scope — tied to the current project. Click the scope toggle in the title bar to switch to global notes, accessible from any workspace. The page picker lists notes from both scopes. Optionally sync global notes across devices via VS Code Settings Sync (opt-in, disabled by default).

Multiple pages

Create, switch, and delete note pages from the toolbar dropdown. Page titles are derived from the frontmatter title: field, or the first heading, or the first line of content.

Export

Run mdpad: Export Current Page to save the active note as a .md file.

Editor tab

Run mdpad: Open in Editor from the command palette to open mdpad as a standalone editor tab. This detaches it from the sidebar view.

Placing mdpad

mdpad lives in its own activity bar icon by default. You can drag it to any location in VS Code:

  • Explorer sidebar — drag the mdpad view into the Explorer panel
  • Secondary sidebar — drag it to the right side panel for side-by-side with code
  • Bottom panel — drag it next to Terminal and Problems

To move: right-click the mdpad view header and select Move View To..., or simply drag and drop.

Interacting

Keyboard shortcuts

Action Shortcut
Bold Cmd/Ctrl+B
Italic Cmd/Ctrl+I
Strikethrough Cmd/Ctrl+D
Inline code Cmd/Ctrl+K
Highlight Cmd/Ctrl+E
Heading cycle Cmd/Ctrl+H
Find Cmd/Ctrl+F
Search pages Cmd/Ctrl+Shift+F
New page Cmd/Ctrl+N
Previous page Cmd/Ctrl+Shift+[
Next page Cmd/Ctrl+Shift+]
Delete page Cmd/Ctrl+W
Focus mdpad Cmd/Ctrl+Alt+M
Indent list Tab
Outdent list Shift+Tab
Move line up Alt+↑
Move line down Alt+↓
Copy line up Shift+Alt+↑
Copy line down Shift+Alt+↓

All formatting and page shortcuts are scoped to when: mdpad.focused so they only fire when the mdpad editor has focus. The Focus mdpad shortcut (Cmd/Ctrl+Alt+M) is global — press it to jump to mdpad from anywhere, or press again to return to your editor.

Interactive elements

  • Checkboxes — click the rendered [ ] or [x] to toggle task list items
  • Links — Cmd+click (Mac) or Ctrl+click (Windows/Linux) to open URLs or file paths in the editor
  • Paste-as-link — paste a URL over a text selection to auto-wrap it as [text](https://github.com/tbekaert/vscode-mdpad/blob/HEAD/url)
  • Tables — columns align automatically as you type

Search

  • Find in note (Cmd/Ctrl+F) — search within the current page
  • Search across pages (Cmd/Ctrl+Shift+F) — search content across all pages in both scopes

Settings

Setting Default Description
mdpad.fontFamily "inherit" Font family. "inherit" uses the VS Code theme font.
mdpad.lineHeight 1.6 Line height in the editor.
mdpad.lineWrapping true Wrap long lines.
mdpad.folding false Enable section folding for H2, H3, and frontmatter.
mdpad.listIndentSize 2 Spaces per list indent level.
mdpad.lineNumbers false Show line numbers in the gutter.
mdpad.syncGlobalNotes false Sync global notes across devices via Settings Sync. Opt-in — once synced, data cannot be removed from the remote.

Theme-aware

Adapts to any VS Code color theme — dark, light, or high contrast.

Known Limitations

Uniform line heights

All lines in the editor share the same height. Headings are distinguished by bold weight, not font size. Inline code and code blocks use a monospace font but at the same size as body text.

This is a deliberate constraint: CodeMirror's vertical cursor navigation (arrow keys) uses pixel-based calculations that break when lines have different heights (from varying font sizes, padding, or margins). The issue becomes noticeable when scrolled — the cursor can jump multiple lines or land in the wrong position.

Code block fence editing

Clicking on a fenced code block delimiter (```) may snap the cursor inside the code block rather than onto the fence line itself. This is a CodeMirror behavior related to how nested language parsers handle the boundary between the fence and the code content. You can still edit fences by placing the cursor with arrow keys.

Supported code block languages

Full list of 19 languages with their fence aliases
Language Fence aliases
JavaScript js, javascript, ecmascript, node
TypeScript ts, typescript
JSX jsx
TSX tsx
Python python, py
JSON json, json5
HTML html, xhtml
CSS css
LESS less
Sass sass, scss
SQL sql
XML xml, rss, wsdl, xsd
Rust rust, rs
Java java
C / C++ cpp, c++, c
PHP php
Go go, golang
YAML yaml, yml
Markdown markdown, md

Contributing

Contributions welcome! Clone the repo and press F5 to launch the extension in a development host. Use .github/test-content.md for manual QA — paste it into mdpad to verify all features. See CONTRIBUTING.md for details.

git clone https://github.com/tbekaert/vscode-mdpad.git
cd vscode-mdpad
pnpm install

Before submitting a PR, verify your change:

pnpm lint
pnpm test:unit
pnpm test:e2e
pnpm test:integration

License

GPL-3.0-or-later

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft