Skip to content
| Marketplace
Sign in
Visual Studio Code>Formatters>Markdown Inline EditorNew to Visual Studio Code? Get it now.
Markdown Inline Editor

Markdown Inline Editor

CodeSmith

|
735 installs
| (5) | Free
WYSIWYG inline markdown editor - hide syntax, focus on content
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Markdown Inline Editor

Markdown Inline Editor icon

CI/CD Status VS Code Marketplace OpenVSX License: MIT

Typora-like Markdown editing in VS Code. See formatting inline (bold, italic, code, links, images, lists…) while Markdown markers stay out of your way — and reappear instantly when you edit.

Your files stay 100% standard Markdown. This extension uses editor decorations — it never rewrites your document.

  • Install: VS Code Marketplace • OpenVSX • Download VSIX
  • Quick links: Get started • Customize • Features • FAQ
  • Project: Repository • Changelog • Issues • Roadmap

Demo

Markdown Inline Editor demo

Tip: move the cursor onto a line to see faint “ghost” markers; click/select to reveal raw Markdown for precise edits.

Key features

  • 3-state syntax shadowing: Rendered → Ghost → Raw (context-aware visibility)
  • Distraction-free reading: hides **, ~~, backticks, links/images syntax, and more
  • Editing stays predictable: only the construct you’re working on reveals its raw Markdown
  • Clickable links (including autolinks like <https://example.com> and bare links like user@example.com)
  • Hover previews: links show targets, images show previews
  • Mermaid diagrams: renders fenced mermaid code blocks as inline SVG with hover preview (offline + theme-aware)
  • Theme-aware: matches your VS Code theme automatically
  • Configurable: tune ghost opacity, diff behavior, emoji rendering, and link click behavior
  • Task lists: click checkboxes to toggle
  • Diff-friendly by default: shows raw Markdown in diffs (Git, merge editor, Copilot inline diffs) unless you opt in
  • Fast: shared parse cache; designed to avoid lag on selection changes
  • Optional: emoji shortcodes (:smile:)

Why inline (instead of a preview pane)?

VS Code’s Markdown preview is great for reading. Markdown Inline Editor is for writing: it keeps you in the editor, reduces syntax noise, and reveals raw Markdown only where you’re editing.

More demos (videos)

  • Start here: Watch the feature
  • Mermaid: Watch inline Mermaid rendering
  • Task lists: Watch checkbox toggling + syntax shadowing

Get started

  1. Install:
    • VS Code Marketplace
    • OpenVSX
    • GitHub Releases
  2. Open a Markdown file (.md) to activate the extension. (It also supports editors with markdown/md/mdx language IDs once active.)
  3. Start typing – formatting appears inline while syntax is hidden (Rendered state).
  4. Move the cursor onto a line – syntax fades in for edit cues (Ghost state).
  5. Click/select inside formatted text – raw Markdown becomes fully visible (Raw state).
  6. Toggle anytime – Command Palette → Toggle Markdown Decorations (command id: mdInline.toggleDecorations) or use the editor title bar eye icon.

Requirement: VS Code 1.88+ (Cursor is supported too).

If decorations aren’t showing, see the FAQ.

Commands

  • Toggle Markdown Decorations (mdInline.toggleDecorations): Enable/disable inline Markdown rendering.

Recommended extensions (optional)

  • Markdown All in One: Shortcuts, auto-formatting, table of contents, preview, and more.
  • Mermaid Chart: Mermaid authoring tools and preview.

Syntax shadowing: 3-state model

The extension uses an intelligent 3-state syntax shadowing system that adapts syntax visibility based on your editing context:

Rendered State (Default)

  • Syntax markers are hidden – see only formatted content
  • Clean, distraction-free reading experience
  • Example: **bold** appears as bold with no visible markers

Ghost State (Cursor on line)

  • Syntax markers appear faintly (30% opacity by default, configurable)
  • Provides edit cues without cluttering the view
  • Only applies to constructs on the active line, not the entire document
  • Example: Cursor on a line with **bold** shows faint ** markers

Raw State (Cursor/selection inside construct)

  • Syntax markers are fully visible for direct editing
  • Precise scope detection – only the specific construct you're editing shows raw
  • Example: Cursor inside **bold** reveals the full **bold** syntax

Special behavior for structural markers:

  • Blockquotes, lists, and checkboxes stay fully rendered on active lines unless you directly click on the marker
  • Headings show raw # markers and remove styling when cursor is on the heading line
  • Ordered list numbers always remain visible

Configure ghost opacity: markdownInlineEditor.decorations.ghostFaintOpacity (default: 0.3) Configure emoji shortcodes: markdownInlineEditor.emojis.enabled (default: true)

Supported Features

The extension supports the following Markdown (and common GitHub-flavored) features with inline rendering and syntax hiding. Formatting appears inline while syntax markers stay hidden—click any text to reveal and edit raw Markdown.

Text Formatting

  • [x] Bold (**text**) • Details
  • [x] Italic (*text*) • Details
  • [x] Bold + Italic (***text***) • Details
  • [x] Strikethrough (~~text~~) • Details
  • [x] Inline Code (`code`) • Details

Structure

  • [x] Headings (# H1 through ###### H6) • Details
  • [x] Links ([text](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/blob/HEAD/url)) • Details
  • [x] Autolinks & bare links (<https://…> / user@example.com) • Details • [Issue #24](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/24)
  • [x] Images (![alt](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/raw/HEAD/img.png)) • Details
  • [x] Blockquotes (> quote) • Details
  • [x] Horizontal Rules (---, ***, ___) • Details

Lists

  • [x] Unordered Lists (-, *, +) • Details
  • [x] Task Lists (- [ ] / - [x]) • Details

Code

  • [x] Code Blocks (```lang) • Details
  • [x] YAML Frontmatter • Details • [Issue #27](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/27)
  • [x] Emoji Support (:smile:) • Details • [Issue #30](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/30)
  • [x] Mermaid Diagrams (```mermaid) • Details • [Issue #26](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/26)

Configuration

  • [x] Show Raw Markdown in Diffs • Details • [Issue #20](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/20)

Customize (optional)

Everything works out of the box. If you want to tune the experience, open Settings and search for “Markdown Inline Editor” (all keys start with markdownInlineEditor.).

  • Ghost markers visibility (decorations.ghostFaintOpacity, default 0.3)
    • Lower it for a cleaner look, raise it for stronger edit cues.
  • Diff view behavior (defaultBehaviors.diffView.applyDecorations, default false)
    • Keep false to review raw Markdown in diffs; set true if you want the same inline rendering in diffs too.
  • Single-click links (links.singleClickOpen, default false)
    • Opens links/images without Ctrl/Cmd-click, but may interfere with text selection.
  • Emoji shortcodes (emojis.enabled, default true)
    • Disable if you prefer seeing :shortcode: text.

Example settings.json

{
  "markdownInlineEditor.decorations.ghostFaintOpacity": 0.25,
  "markdownInlineEditor.defaultBehaviors.diffView.applyDecorations": false,
  "markdownInlineEditor.links.singleClickOpen": false,
  "markdownInlineEditor.emojis.enabled": true
}

Roadmap

Want to help? Pick an item below and open a PR (or add feedback in the linked issue/spec).

Work in progress

  • [ ] Default feature activation – configure which features are decorated by default • Spec

High priority

  • [ ] Tables • Spec • [Issue #23](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/23)
  • [ ] LaTeX/Math • Spec • [Issue #6](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/6)

Medium priority

  • [ ] Per-file toggle state • Spec • [Issue #28](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/28)
  • [ ] Column alignment in tables with markup • Spec • [Issue #21](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/21)
  • [ ] Image UX improvements • Spec
  • [ ] Highlighting support • Spec

Low priority

  • [ ] Mentions/References • Spec • [Issue #25](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/25)
  • [ ] Ordered list auto-numbering • Spec • [Issue #31](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/31)
  • [ ] HTML tags • [Issue #29](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/29) (spec TBD)
  • [ ] Footnotes • [Issue #32](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/32) (spec TBD)

Getting Started (Developers)

Quick Setup (TLDR)

git clone https://github.com/SeardnaSchmid/markdown-inline-editor-vscode.git
cd markdown-inline-editor-vscode
npm install
npm run compile
npm test

Press F5 to launch the Extension Development Host and test your changes.

Dependencies

Key Technologies:

  • TypeScript 5.9+ – Type-safe development
  • VS Code API 1.88.0+ – Editor integration and decoration system
  • remark – Markdown parser for precise AST-based parsing
  • unified – AST processing framework
  • remark-gfm – GitHub Flavored Markdown support
  • Jest – Testing framework

Runtime Requirements:

  • Node.js 20 or higher
  • VS Code 1.88.0+ (or Cursor IDE)

Production Dependencies:

  • remark-gfm, remark-parse, unified, unist-util-visit

Development Dependencies:

  • TypeScript, Jest, ESLint, VS Code extension tools

Architecture

src/
├── extension.ts          # Extension entry point and activation
├── config.ts             # Centralized configuration access
├── diff-context.ts       # Unified diff view detection and policy
├── link-targets.ts       # Unified link/image URL resolution
├── markdown-parse-cache.ts # Shared parsing and caching service
├── parser.ts             # Markdown AST parsing (remark-based)
├── parser-remark.ts     # Remark dependency helper
├── decorations.ts        # VS Code decoration type definitions
├── decorator.ts          # Decoration orchestration
├── decorator/
│   ├── decoration-type-registry.ts  # Decoration type lifecycle
│   ├── visibility-model.ts          # 3-state filtering logic
│   ├── checkbox-toggle.ts           # Checkbox click handling
│   └── decoration-categories.ts    # Decoration type categorization
├── link-provider.ts      # Clickable link provider
├── link-hover-provider.ts # Hover provider for link URLs
├── image-hover-provider.ts # Hover provider for image previews
├── link-click-handler.ts # Single-click navigation handler
├── position-mapping.ts   # Position mapping utilities (CRLF handling)
└── */__tests__/         # Comprehensive test suites
    ├── parser/__tests__/              # Parser tests
    ├── markdown-parse-cache/__tests__/ # Parse cache tests
    ├── diff-context/__tests__/        # Diff context tests
    ├── link-targets/__tests__/        # Link target resolution tests
    ├── link-provider/__tests__/       # Link provider tests
    ├── image-hover-provider/__tests__/ # Image hover tests
    ├── link-hover-provider/__tests__/  # Link hover tests
    └── link-click-handler/__tests__/   # Click handler tests

How it works:

  1. Parser (parser.ts) – Uses remark to parse Markdown into an AST and extract scopes
  2. Shared Cache (markdown-parse-cache.ts) – Single parse cache instance shared across all components
  3. Decorator (decorator.ts) – Orchestrates decoration management with 3-state syntax shadowing
  4. Scope-based detection – Precisely identifies markdown constructs for context-aware syntax visibility
  5. 3-state model – Rendered (hidden), Ghost (faint), Raw (visible) states adapt to editing context
  6. Hover providers – Show image previews and link URLs on hover (use shared cache)
  7. Click handler – Optional single-click navigation for links and images (uses shared cache)

Testing

The project maintains comprehensive test coverage with 438+ passing tests across 33 test suites:

  • Parser tests (parser/__tests__/) – Core markdown parsing logic
  • Parse cache tests (markdown-parse-cache/__tests__/) – Shared caching and LRU eviction
  • Diff context tests (diff-context/__tests__/) – Diff view detection and policy
  • Link target tests (link-targets/__tests__/) – Link/image URL resolution
  • Image hover provider tests (image-hover-provider/__tests__/) – Image preview hover functionality
  • Link hover provider tests (link-hover-provider/__tests__/) – Link URL hover functionality
  • Link click handler tests (link-click-handler/__tests__/) – Single-click navigation behavior
  • Link provider tests (link-provider/__tests__/) – Clickable link provider functionality

Run tests with npm test or npm run test:watch for development.

Installing

npm install

Key Commands

Command Description
npm run compile Compile TypeScript to JavaScript
npm run bundle Bundle with esbuild
npm test Run all tests
npm run test:watch Run tests in watch mode
npm run test:coverage Generate coverage report
npm run lint Run ESLint
npm run validate Run docs lint + tests + build
npm run package Create .vsix package
npm run clean Clean build artifacts
npm run build Full build (compile + bundle + package)
npm run release Automated release workflow

Executing

Option 1: VS Code Launch Configuration

Create .vscode/launch.json with the extension host configuration, then press F5 to launch the Extension Development Host.

Option 2: Manual Build & Test

npm run compile
npm run package
code --install-extension dist/extension.vsix

Contributing

Contributions are welcome! This project follows Conventional Commits and maintains high code quality standards.

Quick Start

git checkout -b feat/my-feature
# Make changes, write tests
npm test && npm run lint
git commit -m "feat(parser): add support for definition lists"

Contribution Guidelines (TLDR)

  • Read first: CONTRIBUTING.md for detailed workflow
  • Code style: TypeScript strict mode, JSDoc comments, comprehensive tests
  • Commit format: <type>(<scope>): <description>
    • Types: feat, fix, docs, style, refactor, perf, test, chore
  • Testing: All changes must include tests
  • Performance: No regressions – maintain efficient code execution

See CONTRIBUTING.md for full contribution guidelines and AGENTS.md for agent roles and architecture details.

Known Limitations & Reporting Bugs

Known Limitations

  • Tables – Table syntax hiding is not implemented yet • [Issue #23](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/23)
  • Math formulas – KaTeX/MathJax support is planned • [Issue #6](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/6)
  • Ordered list auto-numbering – Planned (numbers remain visible today) • [Issue #31](https://github.com/SeardnaSchmid/markdown-inline-editor-vscode/issues/31)
  • H1 heading clipping – Text can go out of window when H1 is on first line • #4
  • Very large files – Files over ~1MB may parse more slowly (see FAQ)
  • Sidebar button – A "Markdown Inline" button appears in the activity bar for Mermaid rendering (hidden webview). You can ignore it—it's not interactive. See FAQ for details.

Reporting Bugs

If you encounter an issue not covered in the FAQ, please open an issue with:

  • VS Code version
  • Extension version
  • Steps to reproduce
  • Expected vs. actual behavior
  • Screenshots/GIFs if applicable

For common issues and solutions, see the FAQ.

License

MIT License – See LICENSE.txt

Acknowledgments

Special thanks to these projects, which inspired or enabled this extension:

  • markdown-inline-preview-vscode by domdomegg – Original concept and codebase for using VS Code decorations to hide markdown syntax (MIT License, Copyright (c) Adam Jones (domdomegg))
  • Markdown Inline Preview by markdown-inline-preview – Horizontal rule implementation using border-bottom approach that prevents editor width expansion
  • Markdown WYSIWYG by remcohaszing – Decoration-based markdown editor with similar approach
  • markless by tejasvi – Advanced decoration-based markdown editor with Mermaid and LaTeX support
  • Typora – Original inspiration for the inline markdown editing concept
  • Obsidian – Markdown-based knowledge management application that inspired the editing experience
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft