Packages
26
This page compares the plugins in this repository with the upstream markdown-it-* packages they are based on or correspond to: correctness of the rendered output, throughput and complexity scaling, and package size. All data comes from the committed comparison run; select a package to see its detailed benchmark, scaling, reference errors and differences.
Packages
26
31 variants
Correctness
720 cases
493 exact45 normalized36 reference errors28 differences
Our test suites
961 / 1208passed
247 failed264 feature gaps
+92 internal tests skipped+3 packaging tests skipped
Benchmarks
186 benchmark cases
normal + heavy corpora · small / medium / large
Measurement
2026-11-03
Node v26.13.0
Apple M4 · 16 GB · darwin/arm64
| Package | Correctness & tests | Throughput | Entry gzip |
|---|---|---|---|
| @mdit/plugin-abbrmarkdown-it-abbr@2.0.0 | 22/22vs19/2223/23 exact | 1.02× | 979 Bvs1.6 kB |
| @mdit/plugin-alertmarkdown-it-github-alerts@1.0.1 | 23/23vs8/234/25 exact4 errors4 diffs7 feature gaps | 1.00× | 1.4 kBvs1.9 kB |
| @mdit/plugin-anchormarkdown-it-anchor@10.0.0·4 variants | 88/88vs70/8875/88 exact1 errors5 diffs4 feature gaps | 1.71× | 2.2 kBvs2.2 kB |
| @mdit/plugin-attrsmarkdown-it-attrs@5.0.1 | 616/616vs610/61619/20 exact1 diffs20 feature gaps | 1.03× | 4.6 kBvs2.6 kB |
| @mdit/plugin-cjk-breaksmarkdown-it-cjk-breaks@2.0.1 | 10/10vs10/1022/22 exact | 1.02× | 673 Bvs921 B |
| @mdit/plugin-cjk-friendlymarkdown-it-cjk-friendly@3.0.0 | 19/19vs19/1922/22 exact | 1.00× | 797 Bvs1.2 kB |
| @mdit/plugin-containermarkdown-it-container@4.0.0 | 32/32vs27/3220/23 exact1 diffs4 feature gaps | 1.00× | 1.1 kBvs1.4 kB |
| @mdit/plugin-dlmarkdown-it-deflist@4.0.0 | 14/14vs11/143/22 exact1 errors1 feature gaps | 1.00× | 978 Bvs1.9 kB |
| @mdit/plugin-emojimarkdown-it-emoji@3.1.0·3 variants | 54/54vs49/5467/75 exact3 errors1 diffs2 feature gaps | 1.02× | 17.8 kBvs19.0 kB |
| @mdit/plugin-figuremarkdown-it-image-figures@2.1.1 | 12/12vs5/1218/21 exact1 errors1 diffs27 feature gaps | 1.00× | 1.1 kBvs972 B |
| @mdit/plugin-footnotemarkdown-it-footnote@4.0.0 | 25/25vs5/256/22 exact1 errors | 1.06× | 1.7 kBvs2.7 kB |
| @mdit/plugin-img-sizemarkdown-it-imsize@2.0.1 | 18/18vs14/186/25 exact1 errors3 diffs10 feature gaps | 0.98× | 1.8 kBvs1.6 kB |
| @mdit/plugin-insmarkdown-it-ins@4.0.0 | 12/12vs12/1223/23 exact | 0.98× | 187 Bvs1.1 kB |
| @mdit/plugin-katexmarkdown-it-katex@2.0.3 | 17/17vs8/1710/25 exact5 errors2 diffs4 feature gaps | 0.96× | 605 Bvs2.0 kB |
| @mdit/plugin-katex-slimmarkdown-it-katex@2.0.3 | 17/17vs8/1710/25 exact5 errors2 diffs5 feature gaps | 0.96× | 673 Bvs2.0 kB |
| @mdit/plugin-markmarkdown-it-mark@4.0.0 | 9/9vs9/923/23 exact | 0.99× | 185 Bvs1.1 kB |
| @mdit/plugin-mathjaxmarkdown-it-mathjax3@5.2.0 | 36/36vs0/368/25 exact3 errors1 diffs38 feature gaps | 1.14× | 1.7 kBvs1.7 kB |
| @mdit/plugin-mathjax-slimmarkdown-it-mathjax3@5.2.0 | 36/36vs0/368/25 exact3 errors1 diffs38 feature gaps | 1.15× | 1.7 kBvs1.7 kB |
| @mdit/plugin-plantumlmarkdown-it-plantuml@1.4.1 | 5/5vs2/56/24 exact1 errors1 diffs6 feature gaps | 6.96× | 749 Bvs1.5 kB |
| @mdit/plugin-rubymarkdown-it-ruby@1.1.2 | 11/11vs5/1110/21 exact1 diffs1 feature gaps | 1.03× | 614 Bvs1.9 kB |
| @mdit/plugin-spoilermarkdown-it-spoiler@1.1.1 | 13/13vs6/1322/22 exact3 feature gaps | 0.99× | 235 Bvs1.7 kB |
| @mdit/plugin-submarkdown-it-sub@2.0.0 | 9/9vs9/924/24 exact | 0.98× | 156 Bvs674 B |
| @mdit/plugin-supmarkdown-it-sup@2.0.0 | 10/10vs10/1024/24 exact | 0.98× | 155 Bvs674 B |
| @mdit/plugin-tasklistmarkdown-it-task-checkbox@1.0.6 | 14/14vs0/147/21 exact1 errors1 diffs2 feature gaps | 1.18× | 731 Bvs1.4 kB |
| @mdit/plugin-texmarkdown-it-katex@2.0.3 | 66/66vs33/6618/25 exact4 errors1 diffs92 feature gaps | 1.01× | 1.7 kBvs2.0 kB |
| @mdit/plugin-umlmarkdown-it-plantuml@1.4.1 | 20/20vs12/2015/25 exact2 errors2 diffs | 6.83× | 665 Bvs1.5 kB |
normal is a realistic document with sparse syntax, heavy is dense plugin syntax; each is measured at three sizes.exports['.']): the entry file plus every relative import it loads, concatenated and gzipped as one stream, i.e. what a consumer downloads and parses when importing the plugin. Bare (peer) imports are not counted for either side. Comparing a single bundled file with an unbundled reference entry would understate the reference badly, so both sides are measured over the whole graph; the unpacked size of the published files is recorded in the committed data but not shown.exports entry for the current package and the module / exports.import / main entry for the reference.Tips
The comparison harness and the authored specs live in compare/. Run pnpm run compare to refresh the data, pnpm run compare:sizes to refresh the package sizes, and pnpm run compare:docs to regenerate this page's data.