A LaTeX workbench in your browser
LaTeX Compiler is a Node.js web application that compiles LaTeX documents. Write TeX in the browser, build real PDFs, and export Word or PowerPoint — all from one three-pane workspace:
- File view — browse and manage your
.texprojects, folders, images and uploads. - TeX editor — line-number gutter,
Ctrl+Sto save, the filename field doubles as a rename box, and an AI assistant sits underneath the file tree. - Compiler output — live build log (streamed), a structured issues list that jumps to the offending line, and an inline PDF preview next to DOCX / PPTX / Image tabs.
No system TeX installation is required: the app ships with the
Tectonic engine via
node-latex-compiler. It prefers a real
pdflatex / xelatex /
lualatex / latexmk on your
PATH when one exists, and falls back to a validator-only mode
when neither is available.
Getting started
-
Install and start the server
cd latex-compiler npm install # first time: pulls the bundled Tectonic binary (~50 MB) npm start # or: node server.mjs -
Open the app
Browse to
http://localhost:8080, log in (or continue as a guest) and press ▶ Build. -
First build downloads Tectonic's support bundle
A one-time ≈100 MB fetch over the network. Later builds are fully local and fast, and a partially completed download resumes on the next attempt. Change the port with
PORT=9000 npm start($env:PORT=9000; npm starton Windows PowerShell).
What it does
▶Build to PDF
Build saves the file and compiles it with the best available engine. Engine output streams live into the Console tab, errors and warnings are parsed into the Issues tab with source line numbers, and a successful build renders the PDF with a download link.
⇄Editor ↔ PDF sync
Turn on Sync and scrolling either pane moves the other, matched by the PDF's own text layer. Selecting text in the editor highlights the same words on the page and scrolls to them. Pure frontend, persisted per browser.
⤓Word export
A pure-JavaScript LaTeX → .docx pipeline writes real Word documents with native equations (superscripts, fractions, roots, ~60 Greek and operator symbols). Headings, lists, tables, verbatim, links and the title block are supported; anything else is reported as a warning instead of failing the conversion.
⇄.texWord import
Upload a .docx and it becomes an editable .tex file, images extracted next to it. The importer is a pure-JS OOXML/OMML parser — paragraphs, headings, styling, tables, hyperlinks, images, margins and OMML math all round-trip into compilable LaTeX.
⤓PowerPoint export
Converts the current source into a 16:9 deck: Beamer documents become one slide per frame (with section dividers, blocks and nested bullet levels), other classes are slide-ified heuristically. Equations are embedded as native OMML math, and a PPTX tab previews the exact slide model first.
⇄.texPowerPoint import
A .pptx deck converts into a standalone, compilable Beamer source: titles, subtitles, indent levels as nested lists, tables, images, hyperlinks, speaker notes as comments, and slide-size-derived aspect ratio. Charts and SmartArt have no LaTeX equivalent and are skipped with a notice.
📄Templates gallery
New file opens a picker of starter documents: Blank, Article, Report, Beamer, Homework, Letter and CV, plus eight top finance-journal skeletons (JF, JFE, RFS, JFQA, Review of Finance, JMCB, JBF, Financial Analysts Journal). Every .tex dropped into the templates folder becomes a card automatically.
✎AI assistant
Delegate to any OpenAI-compatible model (OpenAI, Azure, Ollama, vLLM, LM Studio…). It can list, read, create, overwrite and patch files inside your workspace, adapt the built-in templates, and it sees the file you have open. Responses stream token by token, edits render live, and every change is snapshotted into a per-document edit history you can review and revert.
📱Installable (PWA)
The site installs as an app on desktop, Android and iOS. An app-shell service worker precaches the shell so the UI opens instantly — and offline — while /api/* user data always goes to the network.
🔐Accounts & workspaces
A dependency-free login wall with scrypt-hashed passwords in users.json and HMAC-signed session cookies. Every user gets their own projects/<username>/ folder with no way out of it (path traversal is rejected), and admins manage accounts from the user menu. Visitors can also continue as a password-less guest with a resumable workspace link.
How it is built
| Module | Role |
|---|---|
server.mjs | Node http server: JSON API, Server-Sent Events, static assets, sessions and per-user path resolution. |
compiler.mjs | Provider selection (system engine → bundled Tectonic → validator), .log parsing and the built-in source validator. |
converter.mjs | LaTeX → DOCX, LaTeX → PPTX, and the HTML/MathML previews shown in the Word and PPTX tabs. |
docx2tex.mjs, pptx2tex.mjs | Word and PowerPoint importers (OOXML readers, no external binaries). |
omml2tex.mjs, tex2omml.mjs | Shared Office math translation, used by both importers and both exporters. |
assistant.mjs, ai-history.mjs | OpenAI-compatible tool-calling loop with project-scoped file tools, plus the sidecar edit history and revert support. |
public/ | index.html, style.css, app.js, sw.js and the web manifest — the UI, with no build step. |
projects/, templates/ | Your document storage (per user) and the built-in starter documents. |
Requirements: Node.js 18+ (tested on 24). The whole pipeline is dependency-light pure JavaScript — no Python, no LibreOffice and no system TeX needed.