What Is GitHub Flavored Markdown (GFM)?

GitHub Flavored Markdown extends standard markdown with tables, task lists, strikethrough, auto-linking, and more. Learn what GFM adds and where it works.

· · 7 min read

Last updated: March 3, 2026

markdown github learn

GitHub Flavored Markdown (GFM) is an extension of the CommonMark markdown specification. It adds features that the original markdown syntax does not include: tables, task lists, strikethrough, auto-linked URLs, fenced code blocks with syntax highlighting, and footnotes. GFM is maintained by GitHub and formally specified at github.github.com/gfm.

GFM is not limited to GitHub. Most modern markdown tools, editors, and documentation platforms implement the GFM specification because it fills the practical gaps in standard markdown.

What GFM Adds to Standard Markdown

Standard markdown (as defined by CommonMark) handles headings, emphasis, links, images, code, lists, and blockquotes. GFM adds these features on top:

FeatureSyntaxStandard Markdown?
TablesPipe and dash syntaxNo
Task lists- [x] / - [ ]No
Strikethrough~~text~~No
Auto-linkingBare URLs become clickableNo
Fenced code blocksTriple backticks with languagePartial (backticks yes, language hint added by GFM)
Footnotes[^1]No
Emoji shortcodes:fire: :rocket:No (GitHub-specific rendering)
Alerts> [!NOTE]No (GitHub-specific since 2023)

Tables

GFM tables use pipes (|) and dashes (-):

| Name | Role | Status |
|------|------|--------|
| Alice | Developer | Active |
| Bob | Designer | On leave |

Column alignment uses colons:

  • :--- left-aligned (default)
  • :---: centered
  • ---: right-aligned

For the complete guide, see Markdown Tables.

Task Lists

- [x] Completed task
- [ ] Pending task

On GitHub issues and PRs, these are interactive checkboxes. See the markdown task lists guide for more.

Strikethrough

~~deleted text~~

Requires double tildes. See the strikethrough guide for details.

Auto-Linking

In GFM, bare URLs automatically become clickable links:

Visit https://mdtolink.com for more.

Standard CommonMark requires angle brackets: <https://mdtolink.com>.

Fenced Code Blocks with Language Hints

GFM supports language identifiers after the opening backticks for syntax highlighting:

```javascript
const greeting = "Hello, world";
console.log(greeting);
```

Common language identifiers: javascript, typescript, python, bash, json, html, css, go, rust, sql, yaml, markdown.

For the full guide, see Markdown Code Blocks.

Footnotes

This claim needs a source[^1].
[^1]: Source: https://example.com/research

Footnotes render at the bottom of the document regardless of where the definition appears.

GitHub-Specific: Alerts

Added in 2023, alerts create styled callout boxes:

> [!WARNING]
> This action cannot be undone.

Five types: NOTE, TIP, IMPORTANT, WARNING, CAUTION. These only render as styled boxes on GitHub. Other platforms show them as regular blockquotes.

GFM vs CommonMark

CommonMark is the base specification. GFM is a superset that adds the features above.

AspectCommonMarkGFM
Maintained byCommonMark teamGitHub
Specificationspec.commonmark.orggithub.github.com/gfm
TablesNoYes
Task listsNoYes
StrikethroughNoYes
Auto-linking bare URLsNoYes
FootnotesNoYes
Disallowed raw HTMLNo filteringFilters some tags

Every valid CommonMark document is also valid GFM. GFM only adds features; it does not remove or change existing CommonMark behavior.

One exception: GFM disallows certain raw HTML tags for security (like <script>, <iframe>, <style>). CommonMark passes all HTML through unchanged.

Where GFM Works

GFM is the de facto standard for markdown rendering outside of specialized tools:

Platform / ToolGFM Support
GitHubFull (it’s the origin)
GitLabFull (GLFM, nearly identical)
VS Code PreviewFull
ObsidianFull + extensions
MDtoLinkFull
AstroVia remark-gfm plugin
Next.jsVia remark-gfm plugin
HugoVia Goldmark (GFM support built in)
DocusaurusVia MDX + remark-gfm
PandocVia gfm extension flag
SlackPartial (bold, italic, links, code, not tables)
DiscordPartial (formatting and code, not tables)

If you’re unsure what flavor to write in, write GFM. It is the safest bet for cross-platform compatibility.

GFM in GitHub README Files

README files on GitHub use GFM by default. Some features specific to GitHub that go beyond the GFM spec:

Mermaid diagrams render as SVG graphics:

```mermaid
graph LR
A[Write] --> B[Publish]
B --> C[Share]
```

Math expressions using LaTeX syntax:

$$
E = mc^2
$$

Relative links resolve to files in the same repo:

See [the docs](./docs/README.md) for more.

User and issue references auto-link:

@username mentioned this in #42

These features are GitHub-specific. They will not render on other platforms.

Enabling GFM in Your Tools

Most tools support GFM out of the box. If you’re using a markdown processor that needs configuration:

remark (JavaScript):

Terminal window
npm install remark-gfm
import remarkGfm from "remark-gfm";
// Add to your remark plugins array

Pandoc:

Terminal window
pandoc --from gfm --to html input.md -o output.html

Python-Markdown:

import markdown
md = markdown.Markdown(extensions=["tables", "toc"])

FAQ

What does GFM stand for?

GFM stands for GitHub Flavored Markdown. It is GitHub’s extension of the CommonMark specification, adding tables, task lists, strikethrough, auto-linking, and other features.

Is GFM the same as standard markdown?

No. GFM is a superset of CommonMark (the standard specification). Everything in CommonMark works in GFM, but GFM adds features like tables and task lists that CommonMark does not have.

Do I need to install anything to use GFM?

On GitHub, no. GFM is the default. In other tools like Astro or Next.js, you may need to install remark-gfm as a plugin. Most markdown editors (VS Code, Obsidian) support GFM without configuration.

Can I use GFM outside of GitHub?

Yes. GFM is widely supported across platforms. GitLab, VS Code, Obsidian, Hugo, Docusaurus, and many other tools implement GFM or a close variant. The GFM spec is publicly documented.

What features are GitHub-only (not in the GFM spec)?

Mermaid diagrams, math expressions (LaTeX), auto-linked usernames (@user), issue references (#42), and alerts (> [!NOTE]) are GitHub-specific features not in the formal GFM specification.

Try It Out

Write GFM syntax and preview it instantly in the MDtoLink editor. Tables, task lists, strikethrough, and code blocks all render in real time.

For the complete syntax, see the markdown cheat sheet. For a broader introduction, see What Is Markdown?.


David Schemm
David Schemm

Founder, MDtoLink

David builds developer tools and writes about markdown workflows, documentation, and AI-assisted publishing.

Publish your markdown to a shareable URL

One command. Free to start. No credit card.