Summary
Discourse Math uses MathJax (default) or KaTeX to render maths in your Discourse forum.
Install Guide
This plugin is bundled with Discourse core . There is no need to install the plugin separately.
Enabling Math
The Math plugin can be enabled from its settings, accessed from your admin/plugins page:
Features
Once enabled, you can render inline math by wrapping with a single $ like so: $E=mc^2$.
You can render blocks of math by wrapping with $$
$$
\sqrt{(-1)} \; 2^3 \; \sum \; \pi
$$
Discourse Math uses a heuristic to ensure that sentences such as: “I spent 20$ and another 100$” do not get converted.
LaTeX Delimiters
When enabled via site settings, you can also use standard LaTeX delimiters:
Inline: \(...\) - Example: \(E=mc^2\)
Block: \[...\] - Example:\[
\frac{1}{2}
\]
AsciiMath (MathJax only)
When using MathJax, you can enable asciimath processing which uses % as a delimiter: %E=mc^2%
Composer Integration
The composer includes an Insert Math button in the toolbar with keyboard shortcut Shift +M . This opens a modal where you can:
Toggle between inline and block mode
Write your LaTeX expression
Preview and insert into your post
In the rich text editor, math expressions appear as editable nodes with an edit button to modify the expression.
Chat Support
Math expressions are also rendered in Discourse Chat messages using the same settings and rendering engine.
Rendering Engines
MathJax (Default)
Version: 4.1
Output formats: HTML (default) or SVG
Features:
Contextual menu (right-click on math)
Accessibility enrichment for screen readers
Zoom on alt-click (175% zoom)
AsciiMath support
KaTeX (Alternative)
Features:
Fast rendering
Mhchem extension for chemical equations
CopyTex extension - click math to copy LaTeX source to clipboard
Cross-reference support with \label, \ref, and \eqref macros
Site Settings
See all relevant site settings by searching your admin settings for “math”.
Name
Description
discourse math enabled
Enable Discourse Math plugin (adds special processing to $ and $$ blocks)
discourse math provider
Math rendering provider: mathjax (default) or katex
discourse math enable latex delimiters
Enable LaTeX-style delimiters: \(...\) for inline and \[...\] for block math
discourse math mathjax output
MathJax output format: html (default) or svg (MathJax only)
discourse math enable menu
Enable contextual menu for math expressions (MathJax only)
discourse math enable accessibility
Enable accessibility features like text enrichment (MathJax with menu only)
discourse math zoom on click
Zoom 175% on alt-click interaction (MathJax with menu only)
discourse math enable asciimath
Enable asciimath processing with % delimiter (MathJax only)
Hosted by us? This plugin is available on all of our hosting tiers Math | Discourse - Civilized Discussion
Last edited by @sam 2026-01-16T05:05:47Z
Check document Perform check on document:
70 Likes
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:40am
213
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:43am
215
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:46am
217
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:50am
223
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:52am
224
A post was split to a new topic: Math not rendering in Preview
sam
(Sam Saffron)
Split this topic
January 16, 2026, 5:54am
225
15 posts were split to a new topic: Math and AI workarounds
sam
(Sam Saffron)
Split this topic
January 5, 2026, 1:52am
242
26 posts were split to a new topic: Upgrading Mathjax to version 4
Ethsim2
(Ethan )
February 10, 2026, 8:25am
243
Just a quick (positive) real-world note after moving to the newer MathJax (v4.1) integration in Discourse Math.
One quality-of-life improvement I’ve noticed is that MathJax now gives very specific, localised feedback when input is invalid or a macro isn’t defined:
It still renders the surrounding valid structure correctly (e.g. \frac{...}{...}, parentheses, etc.)
But it leaves the unrecognised command visible literally (e.g. showing \sinc as text) rather than failing the entire expression or producing a confusing partial error.
In practice, this makes it immediately obvious what needs fixing, without obscuring what’s already correct — which is especially helpful in teaching contexts and when iterating on math-heavy posts.
For example, rather than relying on \sinc being defined, the robust approach is to write it explicitly as an operator:
\frac{\Delta}{T}\operatorname{sinc}\!\left(\frac{\omega_r\Delta}{2}\right)
with:
\operatorname{sinc}(x)=\frac{\sin x}{x}
Overall this “render what you can, show the rest clearly” behaviour feels like a big usability win compared to older / less transparent failure modes. Thanks to everyone involved in the MathJax upgrade work.
3 Likes
I just want to warn everyone who came here via Google that this plugins is not available for the free tier of hosting plan.
Hi, I can understand your frustration. I’m sorry you feel that way. For future cases, you can take a look at the Plugins directory per plan here .
The math plugin is not listed on this page as a pro/business/enterprise plugin. So one may assume that is available for free plan. I am not suggesting that you should provide it for free. I just think it should be made a bit clearer.
1 Like
Right. The page at Discourse pricing | Discourse - Civilized Discussion lists all plans and their limits, including plugins, where you can quickly see which plugins are allowed.
1 Like
xiasummer
(xiasummer)
May 26, 2026, 7:50am
253
xiasummer
(xiasummer)
June 30, 2026, 1:39am
254
found an interesting problem.
I’m calculating physics problems, I found
\dot, \ddot works fine, but there’s no \dddot, and once this function contains \dddot, the formulas following are all not working then.
1 Like
mcmcclur
(Mark McClure)
June 30, 2026, 1:56am
255
@xiasummer Let’s try \dddot{r} and
\dddot{r}.
They seem to work here. I’ve tried it on my site using both MathJax and KaTeX.