A premium browser-based markdown editor with live preview
Built by Luxardo Labs
LuxMark is a markdown editor that runs entirely in your browser. No server, no build process, no npm install — just vanilla JavaScript, ES6 modules, and CDN dependencies. Everything stays private in your browser's localStorage.
- Live Preview — real-time rendering as you type
- Syntax Highlighting — CodeMirror with markdown mode
- Keyboard Shortcuts —
Ctrl/Cmd+Bbold,Ctrl/Cmd+Iitalic - Auto-Save — saves to localStorage every 30 seconds
- Resizable Panes — drag the divider to adjust editor/preview ratio
- Word/Character/Line Count — document statistics in the status bar
- Font Selector — choose preview font (System Sans, Poppins, Georgia, Courier New, and more)
- Width Selector — toggle between Wide and Full preview width
- GitHub Flavored Markdown (GFM) — tables, strikethrough, task lists
- Math Equations — LaTeX via KaTeX (
$E=mc^2$and$$...$$blocks) - Footnotes — academic-style references with
[^1]syntax - Syntax Highlighting — code blocks with language detection via Highlight.js
- HTML Support — embed custom HTML directly
- Emoji Support — full emoji rendering in content and headers
- Copy MD — raw markdown source
- Copy HTML — rendered HTML markup
- Copy Rich — styled content for Word/Google Docs
- Copy Clean — lightweight HTML + plain text for Slack and chat apps
- MD — markdown source file
- HTML — standalone HTML document
- PDF — professional PDF via jsPDF + html2canvas
- TXT — plain text extracted from rendered preview
- Light Mode — clean default theme
- Dark Mode — Monokai editor theme, easy on the eyes
LuxMark uses ES6 modules, so it needs to be served over HTTP (not file://).
# Python 3
cd src && python -m http.server 8000
# Node.js
cd src && npx http-server
# Then open http://localhost:8000# Run the pre-built image (no clone needed)
docker run -d -p 8080:8080 --name luxmark ghcr.io/luxardolabs/luxmark:latest
# Or build from source
docker build -t luxmark .
docker run -d -p 8080:8080 --name luxmark luxmark
# Access at http://localhost:8080See docs/DOCKER.md for full deployment guide including reverse proxy, multi-arch builds, and security details.
- Fork this repository
- Enable GitHub Pages in settings, set source to
mainbranch,/srcdirectory - Access at
https://[username].github.io/luxmark
luxmark/
├── src/ # Web application
│ ├── index.html # Main application entry
│ ├── css/styles.css # All styling (vanilla CSS)
│ ├── js/
│ │ ├── app.js # Main controller
│ │ ├── editor.js # CodeMirror wrapper
│ │ ├── markdown-parser.js # Marked.js configuration
│ │ └── storage.js # localStorage manager
│ ├── images/ # App images
│ ├── favicon.ico
│ └── welcome-to-luxmark.md # Welcome document for new users
├── docker/ # Nginx configurations
│ ├── nginx.conf # Server block config
│ └── nginx-main.conf # Main nginx config
├── docs/ # Documentation
│ └── DOCKER.md # Docker deployment guide
├── Dockerfile
├── compose.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
└── README.md
| Component | Library |
|---|---|
| Editor | CodeMirror 5 |
| Markdown Parser | Marked.js + marked-footnote |
| Syntax Highlighting | Highlight.js |
| Math Rendering | KaTeX |
| PDF Export | jsPDF + html2canvas |
| Framework | Vanilla JavaScript (ES6 modules) |
| Styling | Custom CSS with CSS variables |
All dependencies are loaded via CDN — no npm, no node_modules, no build step.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
LuxMark was inspired by Dillinger by Joe McCann. The codebase has been completely rewritten from scratch using modern JavaScript modules and simplified architecture.
Thanks to the teams behind Marked.js, CodeMirror, KaTeX, and Highlight.js.
AGPL-3.0 License — see LICENSE for details.
Built by Luxardo Labs