Three UX/DI wins in one canvas pass:
1. Edge endpoints now land on the source/target shape's BOUNDARY
rather than the centres. Lines no longer cut through nodes. New
pure helpers boundaryPoint() + edgeEndpoints() do the geometry;
nodeCenter() is still used internally for direction vectors.
2. Connect-mode preview line. Alt+drag now draws a dashed line from
the source node's boundary to the live pointer position so the
user can see where the edge will land before releasing. The original
code marked this 'visual feedback deferred to v2'.
3. Selection state is now owned by the canvas (selectedNodeId /
selectedEdgeId variables), not read from .selected DOM classes.
The controller can ask via api.getSelection(). Fixes the fragile
pattern in flowchart-controller.js where Delete/Backspace read
querySelector('.flowchart-node.selected') — that read is now
redundant and the controller can be cleaned up to use getSelection()
directly.
5 new tests cover: edge starts past source centre, edge ends before
target centre, vertical edges connect top/bottom, label background
auto-sizes for long labels, canvas getSelection() reflects clicks.
Amit Haridas
MarkdownConverter
A powerful cross-platform Markdown editor and document converter powered by Pandoc, built with Electron. 100% open-source with no proprietary dependencies.
Features
Markdown Editor
PDF Viewer & Editor
- Built-in PDF viewer - Open and view PDF files directly in the app
- Page navigation - Navigate pages with keyboard or buttons
- Zoom controls - Zoom in/out, fit to width, fit to page
- Rotation - Rotate pages left or right
- PDF Editor tools:
- Merge multiple PDFs
- Split PDFs by page range
- Compress PDFs
- Rotate pages
- Delete pages
- Reorder pages
- Add watermarks
- Password protection
- Remove passwords
- Set permissions
Export Options
- PDF - Export to PDF with customizable page sizes and orientation
- DOCX - Standard and Enhanced (template-based) Word export
- ODT - OpenDocument format
- HTML - Web-ready HTML export
- PowerPoint - PPTX presentation export
- EPUB - E-book format
- LaTeX - Academic document format
- RTF - Rich Text Format
- Export themes - Five visual styles (Modern, Classic, Sepia, Minimal, Elegant) for PDF and Word exports — recolored headings, links, and fonts
Advanced Features
- Custom headers & footers - Add headers/footers to exports with dynamic fields
- Page size configuration - A3, A4, A5, B4, B5, Letter, Legal, Tabloid, or custom sizes
- Visual flow chart editor - Build Mermaid flowcharts visually; drag nodes, connect edges, live preview. Insert at cursor.
- Batch conversion - Convert entire folders of markdown files
- ASCII Art Generator - 17 hand-coded fonts + 400+ FIGlet fonts; text banners, boxes, and templates; insert into editor, copy to clipboard, or save to file (Ctrl+Shift+A)
- Word templates - Use custom Word templates for enhanced exports
- Import documents - Import from 30+ formats (DOCX, PDF, HTML, etc.)
- MarkItDown import - Any file → Markdown via Microsoft MarkItDown. Bundled (MIT + PSF Python runtime) — no installation required for the core formats (PDF, DOCX, PPTX, XLSX, Outlook .msg, EPUB, HTML, images, ZIP, CSV, JSON, XML). For audio transcription and OCR, install
markitdown[all]system-side (multi-GB ML models; not bundled). - Excel export - Markdown tables to native .xlsx workbooks (one sheet per table)
- AI Assistant - Multi-provider AI help (OpenAI/Anthropic/Ollama/LM Studio): chat panel, summarize/improve/translate commands, grammar proofreading
- Inline comments - Anchor-based document comments in
.comments/sidecars with F8 navigation - Wiki-links & Backlinks -
[[Note]]links with click-to-create and a "what links here?" panel (local knowledge base) - Crash recovery - Session restore of open tabs and unsaved buffers after a crash
- Version history - Automatic pre-save snapshots with restore/diff/delete from the History panel
- Vim mode & snippet expansion - Vim keybindings toggle; Tab expands saved snippets
- Quick Note - Global scratchpad (Ctrl+Alt+Q) that appends to
notes/quick-notes.md - Real PDF encryption - Password protection, removal, and permissions actually work
- Offline math & diagrams - KaTeX bundled locally; PlantUML renders locally when the CLI is installed
Installation
Prerequisites
- Node.js (v16 or later) — only for development builds
- Pandoc — bundled inside the app, no install needed
- MarkItDown — bundled inside the app (MIT + embedded PSF Python runtime via PyInstaller), no install needed for PDF / DOCX / PPTX / XLSX / Outlook / EPUB / HTML / images / ZIP / CSV / JSON / XML
- Optional for advanced import only:
pip install "markitdown[all]"adds audio transcription (Whisper) and OCR (EasyOCR/Tesseract) — these are multi-GB model downloads and are not bundled for size reasons
Install Dependencies
npm install
Run the Application
npm start
Build for Distribution
# Windows
npm run build:win
# macOS
npm run build:mac
# Linux
npm run build:linux
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| New File | Ctrl+N |
| Open File | Ctrl+O |
| Open PDF | Ctrl+Shift+O |
| Save | Ctrl+S |
| Save As | Ctrl+Shift+S |
| Export | Ctrl+E |
| Ctrl+P | |
| Find | Ctrl+F |
| Undo | Ctrl+Z |
| Redo | Ctrl+Shift+Z |
| New Tab | Ctrl+T |
| Close Tab | Ctrl+W |
| Toggle Preview | Ctrl+Shift+V |
| Zoom In | Ctrl+Shift++ |
| Zoom Out | Ctrl+Shift+- |
| Command Palette | Ctrl+Shift+P |
| Zen Mode | F11 |
| Writing Analytics | Ctrl+Shift+A |
| Quick Note | Ctrl+Alt+Q |
| Universal Converter | Ctrl+Shift+C |
| Table Generator | Ctrl+Shift+T |
| ASCII Art Generator | Ctrl+Shift+A |
| Next Comment | F8 |
| Add Comment at Cursor | Ctrl+Alt+M |
| Flow Chart: Undo | Ctrl+Z |
| Flow Chart: Redo | Ctrl+Shift+Z |
| Flow Chart: Delete selected | Delete |
Themes
37 built-in editor themes, registered in src/main/ThemeRegistry.bootstrap.js.
Light (14)
| Theme | Id |
|---|---|
| Atom One Light (Default) | atomonelight |
| GitHub Light | github |
| Light | light |
| Solarized Light | solarized |
| Gruvbox Light | gruvbox-light |
| Ayu Light | ayu-light |
| Sepia | sepia |
| Paper | paper |
| Rose Pine Dawn | rosepine-dawn |
| Concrete Light | concrete-light |
| Catppuccin Latte | catppuccin-latte |
| One Light | one-light |
| Winter is Coming (Light) | winter-is-coming-light |
| Spring Light (seasonal) | spring-light |
Dark (22)
| Theme | Id |
|---|---|
| Dark | dark |
| One Dark | onedark |
| Dracula | dracula |
| Nord | nord |
| Monokai | monokai |
| Material | material |
| Gruvbox Dark | gruvbox-dark |
| Tokyo Night | tokyonight |
| Palenight | palenight |
| Ayu Dark | ayu-dark |
| Ayu Mirage | ayu-mirage |
| Oceanic Next | oceanic-next |
| Cobalt2 | cobalt2 |
| Concrete Dark | concrete-dark |
| Concrete Warm | concrete-warm |
| Catppuccin Frappé | catppuccin-frappe |
| Catppuccin Macchiato | catppuccin-macchiato |
| Catppuccin Mocha | catppuccin-mocha |
| Tokyo Night Storm | tokyo-night-storm |
| Synthwave '84 | synthwave-84 |
| Outrun | outrun |
| Winter is Coming (Dark) | winter-is-coming-dark |
High-Contrast (1)
| Theme | Id |
|---|---|
| Solarized Dark (High Contrast) | solarized-dark-hc |
The currently-selected theme persists across restarts via electron-store (key theme, default atomonelight). Adding a new theme is one register() call in the bootstrap + one CSS file under src/styles/themes/.
PDF Viewer
Open PDF files directly in MarkdownConverter:
- File > Open PDF or Ctrl+Shift+O
- Navigate pages with arrow buttons or page input
- Zoom controls: +/- buttons, Fit Width, Fit Page
- Rotate pages left or right
- Close PDF to return to editor
Bundled Dependencies, Legal Notices & Credits
MarkdownConverter ships as a self-contained package. Everything needed for the core workflows is bundled; a few large optional tools are detected from the system when present.
Bundled with the app
| Component | License | Role |
|---|---|---|
| Pandoc 3.9 | GPL-2.0+ (separate process) | 25+ export/import formats |
| FFmpeg (via ffmpeg-static) | GPL-3.0+ build (separate process) | audio/video tools |
| MarkItDown (MIT) + embedded Python runtime (PSF) | MIT / PSF | any-file → Markdown import (PDF/DOCX/PPTX/XLSX/Outlook/EPUB/images/ZIP) |
| sharp + libvips | Apache-2.0 / LGPL-2.1+ (dynamic) | image tools |
| KaTeX, marked, [highlight.js], [DOMPurify], [mermaid], [CodeMirror 6], pdf-lib (@cantoo fork), pdfjs-dist, JSZip, simple-git | MIT / Apache-2.0 / BSD-3 / MPL-2.0 | editor, preview, PDF, Git |
| JetBrains Mono & Fira Code fonts | SIL OFL 1.1 | editor typography |
GPL-licensed tools run as separate processes (never linked into the app) and their complete corresponding sources are offered in SOURCES.md. Full details: THIRD-PARTY-NOTICES.md, also available inside the app under Help → Third-Party Notices & Licenses.
Not bundled (used when installed)
LibreOffice (Office conversion), MiKTeX/TeX Live (LaTeX PDF), ImageMagick
(extra image formats), PlantUML + Java (local diagrams), Calibre (MOBI),
MarkItDown [all] extras (audio transcription / OCR).
Credits
Built on open source: [Electron], [CodeMirror], [marked], [KaTeX], [highlight.js], DOMPurify, mermaid, [pdf-lib], pdf.js, [sharp]/libvips, [Pandoc], [FFmpeg], [MarkItDown] by Microsoft, [simple-git], [JSZip], [JetBrains Mono], [Fira Code]. Thank you to all their authors and maintainers.
Open Source
MarkdownConverter is 100% open-source. All dependencies are permissively licensed:
- Electron - MIT License
- pdf-lib - MIT License
- pdfjs-dist - Apache 2.0 License
- marked - MIT License
- highlight.js - BSD 3-Clause License
- dompurify - Apache 2.0/MIT License
- docx - MIT License
- xlsx - Apache 2.0 License (SheetJS Community Edition)
License
MIT License - see LICENSE file for details.
Author
Amit Haridas (amit.wh@gmail.com)
Version
v4.13.0