MDBridge - Markdown Compatibility Enhancement
approvedby lee
GFM rendering, Notion import, LaTeX enhancement, and standard Markdown export for Obsidian. - This plugin has not been manually reviewed by Obsidian staff.
MDBridge
GFM rendering, Notion import, LaTeX enhancement, and standard Markdown export for Obsidian.
Features
Free Features
- GFM Strikethrough — Render
~~strikethrough~~syntax in all contexts including tables - GFM Task Lists — Interactive checkboxes with click-to-toggle state persistence
- GFM Footnotes — Enhanced footnote rendering with hover preview and styled backlinks
- GFM Definition Lists — Render
Term: definitionsyntax as styled<dl>elements - LaTeX Enhancement — Block (
$$...$$) and inline ($...$) formula rendering powered by KaTeX - Chemical Equations — mhchem syntax support for chemistry formulas (e.g.,
\ce{H2O})
Pro Features
- Notion Import — Convert Notion HTML exports to Obsidian-compatible Markdown
- Callout blocks → Obsidian callouts
- Toggle blocks → Nested lists
- Database tables → Markdown tables
- Automatic UUID cleanup in filenames
- Standard Markdown Export — Export Obsidian notes to standard Markdown
- Wikilinks → Standard Markdown links
- Plugin metadata stripping
- Task list normalization
- Format cleanup (line endings, whitespace, trailing newlines)
- Batch Operations — Import/export entire folders or vaults
Installation
From Obsidian Community Plugins
- Open Obsidian Settings → Community Plugins
- Click "Browse" and search for "MDBridge"
- Click "Install" then "Enable"
Manual Installation
- Download the latest release from GitHub Releases
- Extract
main.js,manifest.json,styles.css, andstyles/into your vault's.obsidian/plugins/mdbridge/folder - Enable the plugin in Obsidian Settings → Community Plugins
Usage
GFM Rendering
All GFM features are enabled by default. Toggle them in Settings → MDBridge:
- Strikethrough:
~~deleted text~~ - Task Lists:
- [ ] Todo/- [x] Done - Footnotes:
[^1]references with[^1]: definition - Definition Lists:
Term\n: Definition - LaTeX:
$E = mc^2$(inline) or$$\int_0^1 x^2 dx$$(block) - Chemistry: Use
```chemcode blocks with\ce{2H2 + O2 -> 2H2O}
Notion Import (Pro)
- Export your Notion pages as HTML
- Run the command "MDBridge: Import from Notion export"
- Select the exported folder
- Notes are converted and saved to your specified target folder
Markdown Export (Pro)
- Export current file: "MDBridge: Export current file to standard Markdown"
- Export entire vault: "MDBridge: Export to standard Markdown"
Exports convert Obsidian-specific syntax to standard Markdown for cross-tool compatibility.
Configuration
Access settings via Settings → MDBridge:
| Setting | Description | Default |
|---|---|---|
| Strikethrough | Render ~~text~~ in all contexts | On |
| Definition lists | Render GFM definition lists | On |
| LaTeX formula enhancement | KaTeX rendering for math | On |
| Interactive task lists | Click checkboxes to toggle | On |
| Show completion dates | Append date when task checked | Off |
| Footnote enhancement | Improved footnote rendering | On |
| Hover preview | Show footnote content on hover | On |
Development
Prerequisites
- Node.js 18+
- npm
Setup
npm install
Build
npm run build # Production build
npm run dev # Development build with watch mode
Test
npm test # Run all tests
npx jest --verbose # Run with verbose output
Project Structure
mdbridge/
├── src/
│ ├── main.ts # Plugin entry, lifecycle, commands
│ ├── renderer.ts # GFM rendering (strikethrough, footnotes, task lists, def lists)
│ ├── latex.ts # LaTeX/KaTeX rendering (block/inline math, chemistry)
│ ├── importer.ts # Notion HTML → Markdown conversion
│ ├── exporter.ts # Obsidian → Standard Markdown export
│ ├── settings.ts # Settings panel UI
│ ├── license.ts # Pro feature gating
│ ├── import-modal.ts # Import folder selection modal
│ ├── export-modal.ts # Export folder selection modal
│ └── types.ts # Shared types and defaults
├── __tests__/
│ ├── renderer.test.ts # GFM rendering tests
│ ├── latex.test.ts # LaTeX/KaTeX tests
│ ├── importer.test.ts # Notion import + edge cases + license tests
│ ├── exporter.test.ts # Markdown export + edge cases + E2E pipeline
│ └── settings.test.ts # Settings and license integration tests
├── styles/ # KaTeX CSS (auto-copied on build)
├── styles.css # Plugin styles
├── manifest.json # Obsidian plugin manifest
├── esbuild.config.mjs # Build configuration
├── CHANGELOG.md # Version history
├── LICENSE # MIT license
└── package.json
Troubleshooting
LaTeX formulas not rendering
- Ensure "LaTeX formula enhancement" is enabled in Settings → MDBridge
- Check that the
styles/katex.min.cssfile exists in your plugin folder - Try reloading the plugin (disable then re-enable)
- Use
$...$for inline and$$...$$for block formulas
Notion import shows "No HTML files found"
- Export your Notion pages as HTML (not Markdown or CSV)
- The source folder must contain
.htmlfiles - Nested folders are searched recursively
Wikilinks not converted during export
- Enable "Convert wikilinks" in the export modal
- Wikilinks inside code blocks are intentionally preserved
- Path-style wikilinks (
[[Folder/Note]]) are supported
Free tier import limit
- Free tier allows up to 5 files per import
- Upgrade to Pro for unlimited imports
- Pro activation: Settings → MDBridge → License → Enter key
Plugin not loading after install
- Check that
main.js,manifest.json, andstyles.cssare all present - Verify
minAppVersionin manifest matches your Obsidian version - Check the developer console (Ctrl+Shift+I) for error messages
Tech Stack
- TypeScript 5.x — Primary language
- Obsidian Plugin API — Plugin framework
- KaTeX — LaTeX/chemistry rendering
- turndown.js — HTML → Markdown conversion (import)
- esbuild — Build tooling
- Jest — Unit testing (118 tests across 5 suites)
License
MIT — See LICENSE for details.
Changelog
See CHANGELOG.md for version history.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.