A free, open source LaTeX editor with real-time preview capabilities. Think Overleaf, but without compilation limits, completely free, and self-hostable.
- Real-time Preview: See your LaTeX document rendered as you type (optional auto-compile)
- No Compilation Limits: Compile as many documents as you want, whenever you want
- Multi-file Projects: Upload ZIP files with multiple .tex files, images, and fonts
- Syntax Highlighting: Full LaTeX syntax highlighting for easier editing
- File Management: Add, rename, and delete files directly in the browser
- Free & Open Source: No paywalls, no subscriptions, no restrictions
- Self-Hostable: Run it locally with Docker or deploy to your own server
- Client-side Processing: All processing happens in your browser
# Clone the repository
git clone https://github.com/mbianchidev/latex-editor.git
cd latex-editor
# Start with Docker Compose
docker compose up -d
# Open http://localhost in your browser# Serve the frontend folder with any static server
cd frontend
python3 -m http.server 8080
# Open http://localhost:8080| Panel | Description |
|---|---|
| Header Bar | New document, upload ZIP, download .tex/.zip/PDF buttons |
| File Tree (left) | Shown when a ZIP project is loaded - manage files here |
| Editor (center-left) | Write your LaTeX code with syntax highlighting |
| Preview (right) | Live rendered preview of your document |
| Status Bar | Compilation status and cursor position |
| Shortcut | Action |
|---|---|
Ctrl+Enter |
Compile document |
Tab |
Insert 2 spaces |
- Upload a ZIP file containing your LaTeX project
- Files starting with
._or in__MACOSXfolders are automatically filtered - Use the file tree to navigate between files
- Right-click files for rename/delete options
- The main .tex file is auto-detected (or set manually)
The "Auto" checkbox controls automatic compilation:
- Off (default): Manual compile only - click βΆ or press
Ctrl+Enter - On: Auto-compile 3 seconds after you stop typing
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\title{My Document}
\author{Your Name}
\date{\today}
\begin{document}
\maketitle
\section{Introduction}
Your content here.
\end{document}\begin{equation}
E = mc^2
\end{equation}
\begin{equation}
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
\end{equation}\begin{itemize}
\item First item
\item Second item
\begin{itemize}
\item Nested item
\end{itemize}
\end{itemize}- Frontend: HTML5, CSS3, Vanilla JavaScript (ES6+)
- Libraries: MathJax 3, jsPDF, html2canvas, JSZip
- Backend: Python/Flask (for health checks only)
- Container: Docker with nginx
latex-editor/
βββ frontend/ # Main application
β βββ index.html # HTML structure
β βββ styles.css # Design system
β βββ app.js # Application logic
β βββ nginx.conf # Web server config
βββ backend/ # Health check API
βββ docker-compose.yml # Container orchestration
βββ CONTRIBUTING.md # Contribution guidelines
βββ README.md # This file
We welcome contributions! See CONTRIBUTING.md for guidelines.
Quick start for contributors:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE for details.
Found a vulnerability? See SECURITY.md for reporting guidelines.
Need help? Check SUPPORT.md for resources.