# @vscode/markdown-it-katex

> Markdown-it plugin that provides VS Code's KaTeX support

Latest version **1.1.2** (published 2025-07-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install @vscode/markdown-it-katex
pnpm add @vscode/markdown-it-katex
yarn add @vscode/markdown-it-katex
bun add @vscode/markdown-it-katex
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2025-07-07 |
| First published | 2023-01-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 25.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 75 |
| Author | Microsoft Corporation |
| Maintainers | kaimaetzel, lszomoru, alexandrudima, sbatten, joaomoreno.ms, microsoft1es, rebornix, vscode-bot |
| Keywords | markdown, KaTeX, math, LaTeX, markdown-it-plugin, markdown-it |

## Links

- npm: https://www.npmjs.com/package/@vscode/markdown-it-katex
- Repository: https://github.com/microsoft/vscode-markdown-it-katex
- Homepage: https://github.com/microsoft/vscode-markdown-it-katex#readme
- Issues: https://github.com/microsoft/vscode-markdown-it-katex/issues
- npm.io page: https://npm.io/package/@vscode/markdown-it-katex

## Dependencies (1)

- [katex](https://npm.io/package/katex.md) ^0.16.4

## Alternatives

- [@mdxeditor/editor](https://npm.io/package/@mdxeditor/editor.md) — 962.4K weekly downloads
- [mmdb-lib](https://npm.io/package/mmdb-lib.md) — 680.9K weekly downloads
- [playcanvas](https://npm.io/package/playcanvas.md) — 36.2K weekly downloads
- [@glw907/cairn-cms](https://npm.io/package/@glw907/cairn-cms.md) — 967 weekly downloads
- [markdown-to-confluence](https://npm.io/package/markdown-to-confluence.md) — 103 weekly downloads

## Recent versions

- 1.1.2 (latest) — 2025-07-07
- 1.1.1 — 2024-12-11
- 1.1.0 — 2024-07-02
- 1.0.3 — 2024-01-16
- 1.0.2 — 2024-01-11
- 1.0.1 — 2024-01-10
- 1.0.0 — 2023-01-31

## README

# Markdown-it Katex

Markdown It plugin that adds [KaTeX](https://github.com/Khan/KaTeX) rendering. This is used by VS Code to render math in Markdown.

Originally forked from [@iktakahiro/markdown-it-katex](https://github.com/iktakahiro/markdown-it-katex)

## Usage

Install markdown-it

```bash
npm install markdown-it
```

Install the plugin

```bash
npm install @vscode/markdown-it-katex
```

Use it in your javascript

```javascript
const md = require("markdown-it")();
const mk = require("@vscode/markdown-it-katex").default;

md.use(mk);

// double backslash is required for javascript strings, but not html input
const result = md.render("# Math Rulez! \n  $\\sqrt{3x-1}+(1+x)^2$");
```

Include the KaTeX stylesheet in your html:

```html
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css"
/>
```

If you're using the default markdown-it parser, I also recommend the [github stylesheet](https://github.com/sindresorhus/github-markdown-css):

```html
<link
  rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/4.0.0/github-markdown.min.css"
/>
```

`KaTeX` options can be supplied with the second argument to use.

```javascript
md.use(mk, { throwOnError: false, errorColor: " #cc0000" });
```

## Examples

### Inline

Surround your LaTeX with a single `$` on each side for inline rendering.

```latex
$\sqrt{3x-1}+(1+x)^2$
```

### Block

Use two (`$$`) for block rendering. This mode uses bigger symbols and centers
the result.

```latex
$$\begin{array}{c}

\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
= \frac{4\pi}{c}\vec{\mathbf{j}}    \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\

\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

\nabla \cdot \vec{\mathbf{B}} & = 0

\end{array}$$
```

### Using your own version of KaTeX

```js
import MarkdownIt from "markdown-it";
import mk from "@vscode/markdown-it-katex";
import katex from "katex";

// Load some katex extensions
import "katex/contrib/mhchem";
import "katex/contrib/copy-tex";

const md = new MarkdownIt();
md.use(mk.default, { katex });

const result = md.render("# Math Rulez! \n  $\\sqrt{3x-1}+(1+x)^2$");
const chemResult = md.render("$\\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$");
console.log(result);
console.log(chemResult);
```

## Syntax

Math parsing in markdown is designed to agree with the conventions set by pandoc:

    Anything between two $ characters will be treated as TeX math. The opening $ must
    have a non-space character immediately to its right, while the closing $ must
    have a non-space character immediately to its left, and must not be followed
    immediately by a digit. Thus, $20,000 and $30,000 won’t parse as math. If for some
    reason you need to enclose text in literal $ characters, backslash-escape them and
    they won’t be treated as math delimiters.

## Math Syntax Support

KaTeX is based on TeX and LaTeX. Support for both is growing. Here's a list of
currently supported functions:

[Things that KaTeX does not (yet) support](https://github.com/KaTeX/KaTeX/wiki/Things-that-KaTeX-does-not-%28yet%29-support)

---
_Source: https://npm.io/package/@vscode/markdown-it-katex · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
