📖 About
Working with documents in VS Code or Cursor often means switching between multiple formats — Word specs, PowerPoint decks, Excel spreadsheets, scanned PDFs, and more. But your editor speaks Markdown.
This extension bridges that gap. It converts any document to Markdown using anydoc (a Rust-based extraction engine), and exports Markdown back to Word, PowerPoint, Excel, PDF, EPUB, HTML, RTF, and ODT — all without leaving your editor.
🎯 Key Highlights
- 🔄 Bidirectional — Import any format to Markdown, and export Markdown to 8+ formats
- 📄 20+ input formats — doc, docx, pptx, xlsx, odt, ods, odp, rtf, epub, csv, pdf, and more
- 📊 8 export targets — PDF, DOCX, PPTX, XLSX, EPUB, HTML, RTF, ODT
- 🦀 Rust-powered extraction — Fast, accurate conversion via anydoc (WASM)
- 📝 pandoc-wasm — EPUB, RTF, and ODT exports via pandoc running in WebAssembly
- 🖨️ PDF with Mermaid — Diagrams rendered as real SVG graphics via Chrome
- 🔒 Privacy-first — Everything runs locally, no data leaves your machine
- 🖥️ No bundled browser — Uses your installed Chrome/Chromium for PDF
✨ Features
| Feature |
Description |
| Any → Markdown |
Convert 20+ document formats to clean Markdown |
| Markdown → PDF |
With Mermaid diagrams rendered as real SVG graphics |
| Markdown → DOCX |
Microsoft Word document |
| Markdown → PPTX |
PowerPoint presentation (slides separated by ---) |
| Markdown → XLSX |
Excel spreadsheet (from Markdown tables) |
| Markdown → EPUB |
E-book format via pandoc-wasm |
| Markdown → HTML |
Standalone HTML page |
| Markdown → RTF |
Rich Text Format via pandoc-wasm |
| Markdown → ODT |
OpenDocument Text via pandoc-wasm |
| Preview |
Preview any document as Markdown without saving |
| Context menus |
Right-click in editor, explorer, or use Command Palette |
| Category |
Extensions |
| Microsoft Office |
.doc, .docx, .docm, .ppt, .pptx, .pptm, .pps, .ppsx, .ppsm, .pot, .xls, .xlsx, .xlsm, .xlsb |
| OpenDocument |
.odt, .ods, .odp |
| Other |
.rtf, .epub, .csv, .pdf |
📦 Installation
Open VS Code / Cursor, launch Quick Open (Ctrl+P / Cmd+P), and run:
ext install jcendal.any-markdown-converter
Or search for Any Markdown Converter in the Extensions sidebar.
🚀 Usage
Convert a document to Markdown
Right-click any supported file in the Explorer sidebar or within the editor, then select Any Markdown Converter: Convert to Markdown.
You can also use the Command Palette (Cmd+Shift+P / Ctrl+Shift+P) and search for Convert to Markdown.
Right-click any .md file in the Explorer sidebar or within the editor, then select Any Markdown Converter: Export Markdown to...
A quick pick menu will appear with all available export formats.
Preview as Markdown
Use the Command Palette to run Any Markdown Converter: Preview as Markdown to see a preview of any supported document without creating a file.
Other access methods
- Command Palette —
Cmd+Shift+P / Ctrl+Shift+P → search for Any Markdown Converter
- Editor title bar — top-right area when a supported file is active
The output file is saved alongside the source file and opens automatically.
⚙️ Settings
Configure via File → Preferences → Settings and search for markdownConverter.
| Setting |
Default |
Description |
chromePath |
Auto-detect |
Absolute path to Chrome/Chromium executable (for PDF export) |
pdf.pageSize |
A4 |
A4, Letter, Legal, A3, A5, Tabloid |
pdf.orientation |
portrait |
portrait or landscape |
pdf.fontSize |
13 |
Base font size in pixels for PDF export |
pdf.showPageNumbers |
true |
Show page numbers in PDF footer |
pdf.mermaidWaitMs |
4000 |
Time to wait for Mermaid rendering (1000–30000 ms) |
openAfterExport |
true |
Open the generated file after export |
Configuration examples
Landscape A3 for large documents:
{
"markdownConverter.pdf.pageSize": "A3",
"markdownConverter.pdf.orientation": "landscape"
}
Extra time for complex Mermaid diagrams:
{
"markdownConverter.pdf.mermaidWaitMs": 10000
}
Minimal PDF without page numbers:
{
"markdownConverter.pdf.showPageNumbers": false,
"markdownConverter.openAfterExport": false
}
🔧 Requirements
For PDF export, a Chromium-based browser must be installed:
| Browser |
macOS |
Linux |
Windows |
| Google Chrome |
✅ |
✅ |
✅ |
| Microsoft Edge |
✅ |
✅ |
✅ |
| Brave Browser |
✅ |
✅ |
✅ |
| Chromium |
✅ |
✅ |
— |
The browser is auto-detected. If detection fails:
{
"markdownConverter.chromePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
For EPUB, RTF, and ODT export, pandoc-wasm is downloaded automatically on first use (one-time setup).
All other conversions work out of the box with no additional dependencies.
🏗️ How It Works
┌── anydoc (Rust/WASM) ──────────────────────────────────────────┐
│ │
┌───────────┐ │ ┌──────────────┐ ┌──────────────────────┐ ┌────────┐ │
│ doc/docx │─┤ │ anydoc │ ──▶ │ Markdown │ │ .md │ │
│ pptx/xlsx │ │ │ (Rust WASM) │ │ │ │ │ │
│ pdf/epub │ │ └──────────────┘ └──────────────────────┘ └────────┘ │
│ odt/csv │ │ │
└───────────┘ └────────────────────────────────────────────────────────────────┘
┌── Export engines ──────────────────────────────────────────────┐
│ │
┌───────────┐ │ md-to-docx ─────────────────────────────────▶ .docx │
│ │ │ pptxgenjs ──────────────────────────────────▶ .pptx │
│ .md │─┤ exceljs ───────────────────────────────────▶ .xlsx │
│ │ │ puppeteer-core + Chrome + Mermaid.js ──────▶ .pdf │
│ │ │ marked ────────────────────────────────────▶ .html │
└───────────┘ │ pandoc-wasm ───────────────────────────────▶ .epub/.rtf/.odt│
│ │
└────────────────────────────────────────────────────────────────┘
Import (Any → Markdown)
- The file is processed by anydoc, a Rust-based document extraction engine compiled to WASM
- Text, tables, images, and structure are extracted and converted to clean Markdown
Export (Markdown → ...)
🔒 Privacy
This extension runs entirely on your local machine:
- ✅ No telemetry or analytics
- ✅ No data collection or transmission
- ✅ Document content never leaves your computer
- ✅ The only network request is loading Mermaid.js from
cdn.jsdelivr.net (PDF export)
🐛 Known Issues
| Issue |
Workaround |
| Complex Mermaid diagrams render incompletely |
Increase pdf.mermaidWaitMs (e.g. 8000 or 15000) |
| Chrome not found for PDF export |
Set chromePath manually in settings |
| pandoc-wasm first-use download is slow |
One-time setup — subsequent exports are instant |
| Some scanned PDFs extract poorly |
Quality depends on the document's text layer |
🤝 Contributing
Contributions, issues, and feature requests are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'feat: add amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
🙏 Acknowledgements
This extension is built on top of these excellent open-source projects:
| Library |
Role |
| anydoc |
Rust-based document extraction engine (any format → Markdown) |
| marked |
Markdown parser for HTML and PDF generation |
| puppeteer-core |
Headless Chrome automation for PDF rendering |
| Mermaid.js |
Diagram rendering as SVG in PDF output |
| md-to-docx |
Markdown to Word document conversion |
| PptxGenJS |
Markdown to PowerPoint presentation generation |
| ExcelJS |
Markdown tables to Excel spreadsheet conversion |
| pandoc-wasm |
EPUB, RTF, and ODT export via pandoc in WebAssembly |
| semantic-release |
Automated versioning and release management |
📜 License
MIT © Jorge Cendal