remark-gfm
Add GitHub Flavored Markdown support to remark for tables, task lists, footnotes, and strikethrough.
Repository Health
Technical Analysis
remark-gfm is a plugin for the remark markdown processor that adds support for GitHub Flavored Markdown (GFM) extensions: autolink literals, footnotes, strikethrough, tables, and task lists. It plugs into the unified/remark ecosystem via unified().use(remarkGfm), extending both the markdown parser and the serializer so GFM syntax round-trips correctly through the syntax tree.
Maintained by the unified collective (the same team behind remark, rehype, and mdast), it’s the standard way to make markdown content match how GitHub renders READMEs, issues, and pull requests. It’s ESM-only, fully typed via JSDoc-driven TypeScript, and ships with 100%-enforced test coverage across dedicated fixtures for each GFM feature.
What You Get
- Support for GFM tables, task lists, strikethrough, footnotes, and autolink literals in one plugin
- Full round-trip support: parsing GFM markdown into an mdast syntax tree and serializing it back out
- Configurable options (singleTilde, tablePipeAlign, tableCellPadding, stringLength, firstLineBlank) for fine-tuning parsing and output
- TypeScript types included out of the box, no separate @types package needed
- Drop-in compatibility with the wider unified/remark/rehype pipeline (remark-rehype, rehype-stringify, etc.)
Common Use Cases
- Rendering user-authored markdown (READMEs, docs, comments) with the same GFM features GitHub supports
- Building static site generators or MDX pipelines that need GitHub-flavored tables and task lists
- Powering markdown editors and previewers that must match GitHub’s rendering behavior
- Processing markdown content in CMS or documentation tooling built on unified/remark
Under The Hood
Architecture — remark-gfm follows the unified/remark plugin architecture: a single default-exported attacher function (lib/index.js, 41 lines) that runs in a Processor context (this) and mutates the processor’s data() bag to register three extension arrays — micromarkExtensions (tokenizer-level parsing via micromark-extension-gfm), fromMarkdownExtensions (mdast tree-building via mdast-util-gfm’s gfmFromMarkdown), and toMarkdownExtensions (serialization via gfmToMarkdown). It implements no parsing logic itself, purely composing micromark-extension-gfm and mdast-util-gfm, consistent with the unified ecosystem’s “attacher registers extensions on host processor” pattern. index.js/index.d.ts re-export the default and the Options type, which itself extends MicromarkOptions & MdastOptions from the two delegate packages.
Tech Stack — Pure ESM ("type": "module"), targets Node.js 16+, with types authored via JSDoc @import annotations compiled by tsc under checkJs/strict/exactOptionalPropertyTypes rather than hand-written .d.ts files. Runtime dependencies are all first-party unified-collective packages (mdast-util-gfm, micromark-extension-gfm, @types/mdast, unified/remark-parse/remark-stringify). Dev tooling includes xo (ESLint preset) + prettier, c8 for 100%-enforced coverage, type-coverage for full type-coverage enforcement, remark-cli/remark-preset-wooorm to lint its own docs, and GitHub Actions CI running the test suite across two Node LTS lines with Codecov upload.
Code Quality — Testing is fixture-driven rather than unit-test-heavy: 8 fixture directories (autolink-literal, strikethrough-default/not-one, table, table-no-align, table-no-padding, table-string-length, tasklist), each with input.md/output.md/tree.json compared via node:assert against the parsed tree and round-tripped markdown, with coverage enforced at 100% via c8. Error handling is minimal by design — the attacher does no runtime validation of the options object, appropriate for a small, 41-line compositional plugin. Naming follows unified ecosystem conventions consistently (attacher functions, data() bag, *Extensions arrays), and types are 100%-covered per the type-coverage config.
API Design — Extremely low-boilerplate: a single .use(remarkGfm) call with no required configuration enables all five GFM extensions at once, matching how most consumers actually want it (mirroring github.com’s own rendering). Optional fine-tuning (singleTilde, tablePipeAlign, tableCellPadding, stringLength, firstLineBlank) is exposed via one flat Options object rather than per-feature configuration. Documentation (518-line readme) is thorough, with a worked end-to-end example and two runnable option examples (singleTilde, stringLength) shown as diffs. Naming (remarkGfm) matches ecosystem convention exactly, making it immediately recognizable to anyone who has used other remark plugins.
Used by 149 apps in this directory
MLflow
AI Development · Monitoring
The open source AI engineering platform for debugging, evaluating, monitoring, and optimizing production LLMs and agents at scale.
Morphik
AI Development · Databases · Search
Morphik is an AI-native ingestion and retrieval engine that lets developers store, search, and reason over visually rich documents — scanned PDFs, manuals, slides, and video — without duct-taping together OCR, an embedding model, and a vector database.
Multica
AI Assistants · AI Development
Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.
n8n
Automation · No Code Platforms
Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.
Next AI Draw.io
AI Design Tools · Design Tools · Developer Tools
Turn natural language into professional draw.io diagrams with AI, cloud icons, and an MCP server for your IDE.
NocoBase
Low Code Platforms · No Code Platforms
Open-source AI + no-code platform that lets coding agents and people collaborate to build business systems fast on proven infrastructure.
NornicDB
AI Development · AI Memory · Databases
A single graph+vector+temporal database for AI workloads — Neo4j-compatible, sub-millisecond hybrid search, and built-in memory decay.
Ollama
AI Development · Developer Tools
Run Llama, Gemma, DeepSeek, and other open LLMs on your own machine with one command and an OpenAI-compatible API.
Omnivore
Bookmarks Archiving · Knowledge Management · Note Taking
Self-hosted read-it-later platform with highlights, newsletters, PDFs, and seamless Obsidian and Logseq integration.