A clean and intuitive Markdown reader with real-time preview support, dark mode toggle, and drag-and-drop file opening. Compatible with macOS and Windows desktop environments.
- Real-time preview of Markdown rendered to HTML
- Dark mode toggle
- Drag-and-drop support for
.mdfiles (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)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
.mdfile from the “File → Open File” menu - Drag-and-Drop: Drag
.mdfiles directly into the app window - 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
- Supports drag-and-drop and live preview updates while avoiding multiple browser tabs
This project is licensed under a custom license:
- All contributors have full rights to use, modify, distribute, and use this project for commercial or non-commercial purposes.
- All other users may use and modify the code for non-commercial purposes only.
- Commercial use by non-contributors is strictly prohibited without explicit written permission from the project creator.
Please contact the project owner to request commercial licensing.
All contributions are welcome, including:
- Bug reports
- Feature suggestions
- Pull requests
- Documentation improvements