Open-source project
mathjax/MathJax-docs avatar
mathjax/MathJax-docs

MathJax-docs is where MathJax's behaviour is actually specified

MathJax documentation. Beautiful math in all browsers. Beautifully documented.

550 stars235 forksJavaScriptApache-2.0

At a glance

What is it?
MathJax-docs is the Sphinx source for the MathJax documentation published at docs.mathjax.org, organised around the input formats, output renderers, configuration options and server-side use of the engine. It is a documentation repository rather than the engine itself, licensed under Apache 2.0.
Who is it for?
Adopt MathJax-docs if you are configuring MathJax in a non-obvious way, writing a converter or extension, or running the engine server-side, because the manual is the only place those behaviours are specified. Do not expect a working MathJax from it: the engine source lives in mathjax/MathJax-src and the released package is mathjax/MathJax, so this repository only builds documentation.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 157 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A manual repository, not the rendering engine

It is worth being precise about what this repository is. The top-level entries are conf.py, index.rst, a .readthedocs.yaml file and directories named basic, advanced, input, output, options, misc, server, web and upgrading, along with _static, images, LICENSE.txt, requirements.in and requirements.txt. There is no source tree for a rendering engine here and no package to publish. The README says the MathJax installation and usage documentation is available in this repository, and that the same documents are published online at docs.mathjax.org. The engine itself is described in the same README as an open-source JavaScript display engine for LaTeX, MathML and AsciiMath notation that works in modern browsers and server-side in node applications, with no setup required on the part of the user because there are no plugins to download and no software to install. MathJax is maintained and distributed on GitHub at mathjax/MathJax, and the source code is housed separately in mathjax/MathJax-src. So the documentation is versioned apart from the code it describes, which is the single most important thing to keep in mind when you use it.

Why a manual like this needs a source repository

The documents are written in reStructuredText and built with Sphinx, and the dependency list in requirements.txt makes the toolchain explicit: sphinx 8.2.3, sphinx-rtd-theme 3.0.2, sphinx-rtd-dark-mode 1.3.0, sphinx-copybutton 0.5.2, sphinxcontrib-jsmath 1.0.1 and sphinxcontrib-jquery 4.1, with the standard support stack of docutils 0.21.2, babel 2.17.0, jinja2 3.1.6, pygments 2.20.0 and requests 2.33.0. The file header records that it is autogenerated by pip-compile with Python 3.13, and the pinned versions show a deliberate choice to lock the theme and the copy button behaviour, which matters because the read-the-docs theme is what gives the published manual its layout and its dark mode. The presence of sphinxcontrib-jsmath is the interesting one for anyone planning to mix LaTeX and MathML sources in the same page, since it lets JavaScript-based mathematics pass through the same build. The .readthedocs.yaml file is what connects the repository to the hosted build.

The section layout tells you what the engine can do

The directory names are effectively a table of contents for the platform. The input directory covers the notations the engine accepts, which the README names as LaTeX, MathML and AsciiMath. The output directory covers how results are rendered. The options directory is where configuration lives, and its size relative to the rest of the tree is a fair signal that MathJax is configured far more than it is coded. The basic directory is the starting point for a page author, and the advanced directory holds the parts you read once you need them. The server directory is the one that matters if you are not rendering in a browser, since it covers the node-side use the README mentions. The web directory covers the browser delivery, including how MathJax and some mathematics get included in a web page. The upgrading directory is the record of what changed between versions. A new user reading in that order gets the shortest path from nothing to a working page, and the layout is worth borrowing if you write documentation for a similar library.

Building the documentation locally

There is no build script in the README, but the dependency files tell you how the pinned environment is produced. The header of requirements.txt records the exact command that generated it.\n\n```bash\n pip-compile --strip-extras requirements.in\n```\n\nThe requirement set itself is the pinned set that the hosted build uses, so the local environment matches what readers see.\n\n```text\nalabaster==1.0.0\ndocutils==0.21.2\nsphinx==8.2.3\nsphinx-copybutton==0.5.2\nsphinx-rtd-dark-mode==1.3.0\nsphinx-rtd-theme==3.0.2\nsphinxcontrib-jquery==4.1\nsphinxcontrib-jsmath==1.0.1\n```\n\nReading the pinned list is also the quickest way to see the age of the documentation toolchain. Sphinx 8.2.3 and the current release of the read-the-docs theme are recent enough that the published manual will render with the same navigation behaviour as the hosted site. The repository also carries a .github directory and a .gitignore, and the README asks contributors to help improve the documentation, pointing out that the GitHub editor can be used to simplify the contribution.

Where the documentation stops and the engineering starts

The limits here are structural and worth stating plainly. The manual is not the code, so a behaviour you cannot find documented may still exist in the engine, and the manual describes a version that may not be the version you have pinned in your application. The README itself is explicit about the split: MathJax is maintained and distributed on GitHub at mathjax/MathJax, with the source code housed at mathjax/MathJax-src. A second limit is that this repository only documents the supported path. It is not a place to find extension examples that run against an unsupported configuration, or a compatibility shim for an old MathJax 2 setup, since the upstream code lives elsewhere. Third, the audience is the page author and the integrator, not the user reading the rendered page. If you are trying to decide whether MathJax suits your audience, the manual will explain accessibility and output choices in detail, but it will not tell you how the rendered output performs on a low-end phone, because that is not a question the documentation attempts to answer.

How this compares with the alternatives

Two alternatives exist for the same problem, and they differ in what they are. KaTeX is a different project entirely: it renders LaTeX only, it does not run in the browser by replacing page content at load time in the same way, and it has no MathML or AsciiMath input, so it cannot serve a documentation set that mixes notations. MathJax's advantage is that it reads what the author wrote, LaTeX, MathML or AsciiMath, and it also provides the server-side rendering path in node that a build step needs. On the documentation tooling side, the Read the Docs platform is the host here, and it builds from the .readthedocs.yaml configuration with the pinned requirements, which means the same source renders identically for every reader without anyone installing Sphinx locally. A team that only needs LaTeX and wants the smallest possible client-side footprint has a good reason to look at KaTeX instead, and a team that needs MathML input, AsciiMath, or a node rendering path should read the server and input sections of this manual before deciding anything.

Support channels and licence

The README is explicit about where problems go. The main MathJax website at mathjax.org carries announcements and other important information, the bug tracker is hosted on GitHub at mathjax/MathJax/issues, and a user forum for asking questions and getting assistance is hosted at Google as the MathJax-Users Group. The guidance is to use the bug tracker for reporting bugs rather than the help forum, and the forum rather than the bug tracker for usage questions, and to check that a bug has not already been reported before filing it. Licensing is straightforward: the documentation is licensed under the Apache License, Version 2.0, just like MathJax itself, with the copyright notice reading Copyright (c) 2009-2025 The MathJax Consortium, and the full text is in LICENSE.txt. Apache 2.0 carries no copyleft obligation for documentation you reuse or quote. The repository is not archived and has no GitHub releases, so the version history of the manual is tracked through the upstream project rather than through tags here.

Editorial conclusion

Adopt MathJax-docs if you are configuring MathJax in a non-obvious way, writing a converter or extension, or running the engine server-side, because the manual is the only place those behaviours are specified. Do not expect a working MathJax from it: the engine source lives in mathjax/MathJax-src and the released package is mathjax/MathJax, so this repository only builds documentation. Before you trust a configuration, check the options and upgrading sections against the MathJax version you actually ship, since the engine and its manual are versioned separately and the last push here was on 2026-05-19.

Frequently asked questions

Where is the MathJax source code, and what is in MathJax-docs?

The README states that MathJax is maintained and distributed on GitHub at mathjax/MathJax, with the source code housed at mathjax/MathJax-src. The MathJax-docs repository holds the Sphinx source for the installation and usage documentation that is published at docs.mathjax.org.

Which input formats and output modes does MathJax support?

The README describes MathJax as a JavaScript display engine for LaTeX, MathML and AsciiMath notation, working in modern browsers and server-side in node applications. The input, output and options sections of the manual cover those areas in detail.

How is the MathJax documentation built?

With Sphinx and the read-the-docs theme. The pinned dependency set in requirements.txt was generated by pip-compile with Python 3.13 and includes sphinx 8.2.3, sphinx-rtd-theme 3.0.2 and sphinx-rtd-dark-mode 1.3.0, and the .readthedocs.yaml file connects the repository to the hosted build.

Where should I report a MathJax bug or ask a usage question?

The README asks that the bug tracker at github.com/mathjax/MathJax/issues be used for reporting bugs and the MathJax-Users Group forum for usage questions, and that you check whether a bug has already been reported before filing it.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. mathjax/MathJax-docs on GitHub
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mathjax-mathjax-docs.svg)](https://hysenlabs.com/projects/mathjax-mathjax-docs)

Was this useful?