# Typst
A modern, open-source markup-based typesetting system aimed at scientific and technical documents. Often described as a successor to [[LaTeX]]; keeps the high-quality output but replaces the legacy syntax and toolchain with something closer in feel to [[Markdown]] plus a real programming language. Created by Laurenz Mädje and Martin Haug (TU Berlin), open-sourced in 2023. Apache 2.0 license.
## Why it exists
LaTeX is powerful but painful: cryptic syntax, slow recompiles, fragile package ecosystem, opaque error messages. Typst keeps the goal (beautiful, deterministic, semantic typesetting) and rebuilds the foundation:
- **Readable markup** for prose; closer to Markdown than to TeX
- **First-class scripting language** (Typst itself) for templates, computation, automation
- **Incremental compilation** — millisecond rebuilds instead of multi-second LaTeX runs
- **Clear errors** with line numbers and helpful messages
- **No package soup** — most things are built-in or installed via the package manager
## How it works
Source files use the `.typ` extension. Three syntactic modes inside a single file:
| Mode | Purpose | Example |
|---|---|---|
| Markup | Prose, headings, emphasis | `= Heading`, `*bold*`, `_italic_` |
| Math | Equations | `$ x^2 + y^2 = z^2
|
| Code | Logic, variables, functions | `#let total = 1 + 2` |
Documents compile to PDF, SVG, PNG, or HTML (HTML is experimental as of v0.13).
## Key features
- **Math typesetting** rivaling LaTeX, with a much friendlier syntax
- **Templates and styles** as functions — composable, parameterizable, reusable across projects
- **Bibliography** via Hayagriva (Typst's native format) or BibLaTeX `.bib` files; CSL styles supported
- **Cross-references, figures, tables, footnotes, citations** built-in
- **Package manager** — Typst Universe (https://typst.app/universe) hosts community packages
- **Web app** (https://typst.app) — collaborative editor à la Overleaf, free tier available
- **Local CLI** — `typst compile`, `typst watch`, fully offline workflow
- **Editor support** — official VS Code extension (Tinymist), Neovim, Emacs, Sublime, JetBrains, web app
- **Pandoc support** — Pandoc can read and write Typst since v3.1
- **Quarto support** — [[Quarto]] uses Typst as a first-class PDF output format (alternative to LaTeX)
## Markup vs LaTeX, briefly
```typst
= Introduction
This is *bold* and _italic_.
$ integral_0^1 x^2 dif x = 1/3 $
#figure(
image("plot.png", width: 80%),
caption: [A nice plot.],
) <fig:plot>
See @fig:plot.
```
vs the LaTeX equivalent (`\section{}`, `\textbf{}`, `\begin{equation}`, `\begin{figure}`, `\label`, `\ref`, preamble setup, `\documentclass`, ...).
## When Typst makes sense
- Scientific papers, theses, books where math, citations, and reproducibility matter
- Long-form structured documents that benefit from a real programming model
- Anywhere LaTeX is currently used out of inertia rather than necessity
- Reports generated programmatically (CI pipelines, data-driven documents)
## When it doesn't (yet)
- Submission to journals that mandate a specific LaTeX class (most still do)
- Workflows requiring obscure LaTeX packages with no Typst equivalent
- Heavy reliance on TikZ-style diagrams (Typst has CeTZ but the ecosystem is younger)
- HTML output as the primary target — still experimental; [[Markdown]] + [[Pandoc]] or [[Quarto]] is more mature there
## Pricing
- **Open-source compiler and CLI** — free, self-hostable, Apache 2.0
- **Typst.app web service** — free tier; paid plans for teams, private projects, larger storage
## References
- Website: https://typst.app
- Documentation: https://typst.app/docs
- Tutorial: https://typst.app/docs/tutorial/
- Reference: https://typst.app/docs/reference/
- Source code: https://github.com/typst/typst
- Package registry (Typst Universe): https://typst.app/universe
- Blog: https://typst.app/blog
- Community forum: https://forum.typst.app
- Discord: https://discord.gg/2uDybryKPe
- Comparison with LaTeX: https://typst.app/docs/guides/guide-for-latex-users/
- Pandoc Typst writer: https://pandoc.org/MANUAL.html#typst
- Quarto + Typst: https://quarto.org/docs/output-formats/typst.html
## Related
- [[LaTeX]]
- [[Markdown]]
- [[Pandoc]]
- [[Quarto]]