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-a11y-emoji
— accessible emojiremark-abbr
— custom syntax for abbreviations (new node type, rehype compatible)remark-admonitions
— support admonitionsremark-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-blocks
— select and store code blocksremark-code-extra
— add to or transform the HTML output of code blocks (rehype compatible)remark-code-frontmatter
— extract frontmatter from code blocksremark-code-import
— populate code blocks from filesremark-code-screenshot
– turn code blocks into carbon.now.sh screenshotsremark-codesandbox
– create CodeSandbox from code blocksremark-collapse
— make a section collapsibleremark-comment-config
— configure remark with commentsremark-comments
— custom syntax to ignore thingsremark-container
— add custom containersremark-containers
— add custom containersremark-contributors
— add a table of contributorsremark-copy-linked-files
— find and copy files linked files to a destination directoryremark-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-dropcap
— fancy and accessible drop capsremark-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
— addtarget
andrel
attributes to external linksremark-extract-frontmatter
— store front matter in vfilesremark-fenced-divs
— pandocfenced_divs
support (new node type, rehype compatible)remark-first-heading
— replace the first heading in a documentremark-fix-guillemets
— support ASCII guillements (<<
,>>
) mapping them to HTMLremark-footnotes
– support pandoc footnotesremark-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-id
— custom heading id support{#custom-id}
remark-heading-gap
— serialize with more blank lines between headingsremark-highlight.js
— highlight code blocks with highlight.js (rehype compatible)remark-hint
— add hints/tips/warnings to markdownremark-html
— serialize 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-jargon
— inserts definitions for jargon termsremark-join-cjk-lines
— remove extra space between CJK Characters.remark-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
— serialize 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-numbered-footnote-labels
— label footnotes with numbers@agentofuser/remark-oembed
— transform URLs for youtube, twitter, etc. embedsremark-oembed
— transform URLs surrounded by newlines into asynchronously loaded embedsremark-openapi
— transform links to local or remote OpenAPI definitions to tablesremark-package-dependencies
— inject your dependenciesremark-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-prism
— syntax highlight using Prism with support for most official pluginsremark-react
— compile Markdown to 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-simple-plantuml
— convert PlantUML code to imagesremark-slate
— compile Markdown to Slate nodesremark-slug
— add anchors to headings using GitHub’s algorithmremark-smartypants
— SmartyPantsremark-smcat
— state machine catremark-sources
— insert source coderemark-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-truncate-links
— truncate/shorten urls not manually namedremark-twemoji
— replace unicode emoji with Twemojiremark-typescript
— transform TypeScript code blocks to JavaScriptremark-typograf
— transform text with Typografremark-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-variables
— variables!remark-vdom
— compile Markdown to 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, call 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 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, ideas, issues, and discussions 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-
.