remark is a Markdown processor powered by plugins part of the unified collective.
See awesome remark for the most awesome projects in the ecosystem.
More plugins can be found on GitHub tagged with the
remark-plugin
topic.
Have a good idea for a new plugin? See Creating plugins below.
remark-abbr
— custom syntax for abbreviations (new node type, rehype compatible)remark-align
— custom syntax to align text or blocks (new node types, rehype compatible)remark-attr
— custom syntax to add attributes to markdownremark-autolink-headings
— add GitHub-style links to headingsremark-behead
— increase or decrease heading depthremark-bookmarks
– automatic link managerremark-bracketed-spans
– custom syntax for id’s, classes, and data attributes to spans of textremark-breaks
– support hard breaks without needing spaces (like on issues)remark-capitalize
– transform all titles with title.shremark-code-extra
— Add to or transform the HTML output of code blocks (rehype compatible)remark-code-frontmatter
— Extract frontmatter from markdown code blocksremark-code-screenshot
– turn code blocks into carbon.now.sh screenshotsremark-collapse
— make a section collapsibleremark-comment-config
— configure remark with commentsremark-comments
— custom syntax to ignore thingsremark-containers
— add custom containersremark-contributors
— add a table of contributorsremark-custom-blocks
— custom syntax for custom blocks (new node types, rehype compatible)remark-defsplit
— change links and images to references with separate definitionsremark-disable-tokenizers
— turn some or all remark’s tokenizers on or offremark-embed-images
— embed local images as base64-encoded data URIsremark-emoji
— transform Gemoji short-codes to emojiremark-emoji-to-gemoji
— transform emoji to Gemoji short-codesremark-external-links
— add target and rel attributes to external linksremark-first-heading
— replace the first heading in a documentremark-fix-guillemets
— support ASCII guillements (<<
,>>
) mapping them to HTMLremark-frontmatter
– support frontmatter (yaml, toml, and more)remark-gemoji
— better support for Gemoji shortcodesremark-gemoji-to-emoji
— transform Gemoji shortcodes to emojiremark-generic-extensions
— custom syntax for the CommonMark generic directive extensionremark-git-contributors
— add a table of contributors based on Git history, options, and moreremark-github
— autolink references to commits, issues, pull-requests, and usersremark-gitlab-artifact
— download artifacts from GitLab projects to live alongside your docsremark-grid-tables
— custom syntax to describe tables (rehype compatible)remark-graphviz
— transform graphviz dot graphs to SVGremark-heading-gap
— stringify with more blank lines between headingsremark-highlight.js
— highlight code blocks with highlight.js (rehype compatible)remark-html
— stringify Markdown as HTMLremark-html-emoji-image
— transform emoji to imagesremark-html-katex
— change inline and block math to equations with KaTeXremark-iframes
— custom syntax to create iframes (new node type, rehype compatible)remark-images
— add an improved image syntaxremark-inline-links
— change references and definitions to links and imagesremark-kbd
— custom syntax for keyboard keys (new node type, rehype compatible)remark-kbd-plus
— custom syntax for keyboard keys with plusses (new node type, rehype compatible)remark-license
— add a license sectionremark-linkify-regex
— change text matching a regex to linksremark-lint
— check Markdown code styleremark-macro
— support for block macros (new node types, rehype compatible)remark-man
— stringify Markdown as man pages (roff)remark-math
— custom syntax for math (new node types, rehype compatible)remark-mermaid
— transform mermaid graphs to SVGremark-message-control
— turn some or all messages on or offremark-metadata
— add metadata about the processed file as front matterremark-midas
— highlight CSS code blocks with midas (rehype compatible)remark-normalize-headings
— make sure at most one top-level heading existsremark-openapi
— transform links to local or remote OpenAPI definitions to tablesremark-parse-yaml
— parse YAML nodes and expose their value asparsedValue
remark-ping
— custom syntax for mentions with configurable existence check (new node type, rehype compatible)remark-react
— “stringify” Markdown as Reactremark-react-codemirror
— highlight code blocks for remark-react with CodeMirrorremark-react-lowlight
— highlight code blocks for remark-react with lowlightremark-redact
— conceal text matching a regexremark-redactable
— write plugins to redact content from a Markdown document, then restore it laterremark-reference-links
— transform links and images into references and definitionsremark-rehype
— transform to rehyperemark-relative-links
— change absolute URLs to relative onesremark-retext
— transform to retextremark-ruby
— add a custom syntax for ruby (furigana)remark-sectionize
— wrap headings and subsequent content in section tags (new node type, rehype compatible)remark-shortcodes
— custom syntax Wordpress- and Hugo-like shortcodes (new node type)remark-slug
— add anchors to headings using GitHub’s algorithmremark-strip-badges
— remove badges (such asshields.io
)remark-strip-html
— remove HTMLremark-squeeze-paragraphs
— remove empty paragraphsremark-sub-super
— custom syntax for super- and subscript (new node types, rehype compatible)remark-terms
— add customizable syntax for special terms and phrasesremark-textr
— transform text withTextr
remark-title
— check and add the document titleremark-toc
— add a table of contentsremark-tree-sitter
— highlight code blocks in Markdown files using Tree-sitter (rehype compatible)remark-unlink
— remove all links, references, and definitionsremark-unwrap-images
— remove the wrapping paragraph for imagesremark-usage
— add a usage exampleremark-utf8
— turn bolds, italics, and code into UTF-8 special charactersremark-validate-links
— check links to headings and filesremark-vdom
— “stringify” Markdown as VDOMremark-wiki-link
— custom syntax for wiki links (rehype compatible)remark-yaml-config
— configure remark with YAML
See npm search or github search for available and often inspirational presets.
See mdast for a list of utilities for working with the syntax
tree.
See unist
for other utilities which work with mdast
nodes, too.
Finally, see vfile for a list of utilities working with
virtual files.
To use a plugin programmatically, invoke the use()
function.
To use plugin with remark-cli
, pass a --use
flag
or specify it in a configuration file.
Have an idea for a plugin? Post it on spectrum or in ideas and make it happen!
To create a plugin, first read up on the concept of plugins. Then, read the guide on “Creating a plugin with unified”. Finally, take one of existing plugins, which looks similar to what you’re about to make, and work from there. If you get stuck, spectrum, ideas, and issues are good places to get help.
You should pick a name prefixed by 'remark-'
, such as remark-lint
.
Do not use the remark-
prefix if the thing you create doesn’t work with
remark().use()
: it isn’t a “plugin” and will confuse users.
If it works with mdast, use 'mdast-util-'
, if it works with any unist tree,
use unist-util-
, and if it works with virtual files, use vfile-
.