Markdown Reader is a clean and intuitive Markdown reader with real-time preview support, dark mode toggle, and drag-and-drop file opening. It is compatible with macOS and Windows desktop environments and built with pure Python and Tkinter.
- Real-time preview of Markdown rendered to HTML.
- Dark mode toggle.
- Drag-and-drop support for
.md,.html, and.pdffiles with automatic conversion to Markdown (requirestkinterdnd2). - Built with pure Python and Tkinter — cross-platform.
- Can be bundled as a macOS app using
py2app. - Opens preview automatically and avoids multiple browser tabs for a smoother experience.
git clone https://github.com/petertzy/markdown-reader.git
cd markdown-readerpython -m venv venv
source venv/bin/activate # macOS/Linux
# .\venv\Scripts\activate # Windows (cmd/powershell)For Mac users, you should first complete the preparation steps described in the PrepareForMacUser file.
For Windows users, WeasyPrint requires additional system libraries. Complete the preparation steps described in the PrepareForWindowsUser file before running pip install.
pip install -r requirements.txt💡 If drag-and-drop doesn't work on macOS, consider using the tkinterDnD2 fork.
python app.py- Open File: Choose
.md,.html, or.pdffile from the "File → Open File" menu. - Drag-and-Drop: Drag
.md,.html, or.pdffiles directly into the app window (HTML and PDF files are automatically converted to Markdown). - Dark Mode: Toggle via “View → Toggle Dark Mode”.
- Preview: Automatically opens in your web browser, only one tab is opened per session.
To bundle this app as a .app, install py2app and create a setup.py script:
rm -rf build dist
python setup.py py2appThe generated app will be located in the dist/ folder. You can launch it by double-clicking. To use it like a regular app, move it to your Applications folder.
deactivategit add .
git commit -m "Update" # Replace "Update" with a meaningful commit message
git push- GUI:
tkinter,tkinterdnd2 - Markdown Engine:
markdown2 - HTML Preview: Dynamically generated HTML opened in the default browser
- File Conversion:
html2textfor HTML,pypdffor PDF import - PDF Export: Browser-based print-to-PDF (no system dependencies required)
- Supports drag-and-drop and live preview updates while avoiding multiple browser tabs
This project is licensed under the MIT License.
See the LICENSE file for the full text.
All contributions are welcome, including:
- Bug reports
- Feature suggestions
- Pull requests
- Documentation improvements
Please see our CONTRIBUTING guide for more details on how to get started, submit changes, or report issues.