KaTeX

Fast, self-contained JavaScript library for print-quality LaTeX math rendering on the web.

Library
npm
v0.19.1
20,469 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
93 /100 Excellent
Development Activity 100
Maintenance 96
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 87
Code Quality 88
Innovation 85
Learning Curve 78

KaTeX is a JavaScript library for TeX math rendering that produces print-quality typesetting directly in the browser, with no page reflow and no external dependencies. It ships two entry points — a DOM renderer (katex.render) and a string renderer (katex.renderToString) — so the same parsing and layout engine can be used client-side or in Node.js for server-side rendering of pre-built HTML/MathML. Because it lays out math synchronously against its own font-metrics tables rather than iteratively reflowing the page like MathJax, it renders large documents dramatically faster while remaining consistent across browsers and environments.

What You Get

  • A synchronous DOM renderer (katex.render) and a markup-string renderer (katex.renderToString) for both browser and server-side use
  • An auto-render contrib extension that scans arbitrary page text for math delimiters and renders them in place
  • Extension modules (mhchem for chemistry notation, copy-tex for copy/paste of source LaTeX, render-a11y-string for screen-reader-friendly output)
  • Pre-built font files and CSS so rendered math matches TeX’s print-quality metrics without extra font licensing steps
  • A CLI (katex binary via cli.js) for rendering expressions from the command line or build scripts
  • Both HTML and MathML output in the same render pass, improving accessibility and copy/paste fidelity

Common Use Cases

  • Rendering mathematical notation in documentation sites, blogs, and educational content (e.g. via remark/rehype or MDX plugins)
  • Server-side pre-rendering of math-heavy pages so no client-side JavaScript or reflow is needed at request time
  • Embedding formula input/preview in note-taking apps, textbook platforms, and online course tools
  • Chemical equation rendering via the mhchem contrib module in STEM education tooling

Under The Hood

Architecture — KaTeX’s pipeline is a classic three-stage compiler: src/Lexer.ts tokenizes the input string, src/MacroExpander.ts expands macros against a large built-in macro table (src/macros.ts) plus symbol/function definitions registered via defineFunction/defineSymbol, and src/Parser.ts (~1000 lines) turns the expanded token stream into an AnyParseNode[] parse tree (src/parseTree.ts). From there, src/buildHTML.ts and src/buildMathML.ts independently walk the same parse tree to produce an HTML Span/Anchor DOM-like tree (src/domTree.ts) and a parallel MathML tree, which src/buildTree.ts combines; katex.ts at the repo root is the thin public-facing entry point wiring render/renderToString/generateParseTree around this pipeline and also exposing low-level extension hooks (__defineFunction, __defineMacro, __defineSymbol, __setFontMetrics) for advanced consumers. Tech Stack — Written entirely in TypeScript (66% of the codebase) with a Rollup + Webpack dual build (rollup.config.js, webpack.config.js) producing both CJS and ESM bundles per package.json’s exports map, plus separate bundles for contrib extensions (auto-render, mhchem, copy-tex, mathtex-script-type, render-a11y-string). Runtime dependencies are minimal — only commander for the CLI — keeping the core renderer dependency-free as the README claims; fonts are built via a Perl/Python toolchain in dockers/fonts from TeX’s original metric data. Code Quality — Tests live under test/*-spec.ts (Jest, six top-level spec files covering parsing, MathML, Unicode, error handling, and duplicate-detection, plus a Selenium-driven visual screenshotter suite in test/screenshotter), run via pnpm test:jest, alongside tsc --noEmit type-checking and combined ESLint/Stylelint linting wired into pnpm test. The src/functions/ directory (46 files) cleanly isolates one TeX command family per file with a consistent defineFunction registration pattern, and Husky pre-commit hooks plus semantic-release enforce consistency on every merge. API Design — The public surface is deliberately small (render, renderToString, ParseError, plus underscore-prefixed advanced hooks marked unstable in JSDoc comments), which keeps the common path — call render/renderToString with an expression string and a SettingsOptions object — nearly boilerplate-free, while throwOnError/errorColor settings give callers explicit, well-documented control over invalid-input behavior instead of silent failures.

Used by 65 apps in this directory

Go
53%
MIT

memos

Note Taking

64,031

Open-source, self-hosted note-taking built for quick capture — Markdown-native, lightweight, and fully yours.

View details
91
Repo Health
78
Technical
65
Dependency
Built with
Go 53%
TypeScript 46%
Updated 6 days ago
Rust
86%
Apache 2.0

mesh-llm

AI Agents · AI Development

3,551

Mesh LLM pools GPUs and memory across every machine you own into one OpenAI-compatible API, so agents tap distributed compute instead of a single GPU box or a metered cloud bill.

View details
85
Repo Health
91
Technical
69
Dependency
Built with
Rust 86%
TypeScript 10%
Updated 6 days ago
Go
56%
Other

Multica

AI Assistants · AI Development

53,682

Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.

View details
87
Repo Health
83
Technical
67
Dependency
Built with
Go 56%
TypeScript 38%
Updated 6 days ago
TypeScript
92%
Other

n8n

Automation · No Code Platforms

208,437

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
TypeScript
84%
Apache 2.0

nao

AI Development · Analytics

1,949

Build and deploy an open-source analytics agent that understands your data warehouse and answers business questions in plain English.

View details
85
Repo Health
76
Technical
67
Dependency
Built with
TypeScript 84%
Python 15%
Updated 6 days ago
TypeScript
65%
Other

NocoDB

Databases · Low Code Platforms · No Code Platforms

65,340

Turn any SQL database into a collaborative no-code spreadsheet with automatic REST APIs and real-time views.

View details
91
Repo Health
77
Technical
63
Dependency
Built with
TypeScript 65%
Vue 30%
Updated 6 days ago
TypeScript
89%
GPL 3.0

NoteGen

AI Assistants · Knowledge Management · Note Taking

12,914

Capture anything first, then let AI transform your scattered records into polished, structured Markdown notes with RAG-powered knowledge retrieval.

View details
87
Repo Health
74
Technical
67
Dependency
Built with
TypeScript 89%
Updated 1 weeks ago
TypeScript
85%
GPL 3.0

Notesnook

File Storage · Note Taking · Security

14,822

End-to-end encrypted, open-source note-taking where your data stays yours — even from the server.

View details
91
Repo Health
84
Technical
60
Dependency
Built with
TypeScript 85%
JavaScript 12%
Updated 6 days ago
Go
72%
MIT

Ollama

AI Development · Developer Tools

184,509

Run Llama, Gemma, DeepSeek, and other open LLMs on your own machine with one command and an OpenAI-compatible API.

View details
92
Repo Health
85
Technical
67
Dependency
Built with
Go 72%
C 19%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers