remark-gfm

Add GitHub Flavored Markdown support to remark for tables, task lists, footnotes, and strikethrough.

Library
npm
v4.0.1
1,253 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
40 /100 Fair
Development Activity 0
Maintenance 20
Community 40
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
84 /100 Excellent
Architecture 82
Code Quality 85
Innovation 90
Learning Curve 80

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 150 apps in this directory

TypeScript
100%
Other

Dub

Analytics · Marketing

24,935

The open-source link attribution platform for short links, conversion tracking, and affiliate programs — powering 100M+ clicks monthly.

View details
81
Repo Health
78
Technical
62
Dependency
Built with
TypeScript 100%
Updated 6 days ago
TypeScript
96%
Other

Dyad

AI Assistants · AI Code Assistants · AI Development

22,046

Build AI-powered apps locally with your own keys, your own models, and zero cloud lock-in.

View details
87
Repo Health
83
Technical
69
Dependency
Built with
TypeScript 96%
Updated 1 weeks ago
Python
82%
GPL 3.0

ERPNext

ERP · Invoicing Finance

40,517

100% free, open-source ERP unifying accounting, manufacturing, inventory, CRM, HR, and POS in a single self-hostable platform.

View details
96
Repo Health
77
Technical
74
Dependency
Built with
Python 82%
JavaScript 13%
Updated 6 days ago
Rust
80%
MIT

fabro

Developer Tools · Devops

1,730

Define AI agent workflows as code graphs, route tasks across any LLM, and intervene only where it matters.

View details
82
Repo Health
83
Technical
67
Dependency
Built with
Rust 80%
TypeScript 15%
Updated 6 days ago
TypeScript
91%
Other

FastGPT

AI Agents · AI Development

29,900

Build, debug, and deploy knowledge-based AI agents with a visual workflow editor, RAG retrieval, and support for any OpenAI-compatible LLM.

View details
93
Repo Health
84
Technical
66
Dependency
Built with
TypeScript 91%
Updated 6 days ago
TypeScript
74%
Apache 2.0

Fern

Developer Tools

3,822

Fern turns a single OpenAPI, AsyncAPI, or Protobuf definition into type-safe SDKs for nine languages and a hosted API documentation site, all from one CLI and one source of truth.

View details
90
Repo Health
86
Technical
66
Dependency
Built with
TypeScript 74%
Updated 6 days ago
TypeScript
96%

Finance

AI Assistants · Invoicing Finance

906

Bloomberg-grade financial data and AI-powered analysis through a conversational chat interface you can self-host.

View details
51
Repo Health
62
Technical
69
Dependency
Built with
TypeScript 96%
Updated 1 months ago
TypeScript
62%
Other

Flowise

AI Development · Automation · Developer Tools

55,521

Drag-and-drop visual builder for AI agents, RAG pipelines, and multi-agent systems—deploy anywhere in minutes.

View details
75
Repo Health
77
Technical
63
Dependency
Built with
TypeScript 62%
JavaScript 27%
Updated 2 months ago
TypeScript
53%
Apache 2.0

Flowsint

Automation · Developer Tools

9,911

A privacy-first, graph-based OSINT investigation platform with 30+ automated enrichers for mapping relationships between domains, IPs, people, and organizations.

View details
85
Repo Health
71
Technical
67
Dependency
Built with
TypeScript 53%
Python 45%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers