← Open the tool

GFM · GitHub Flavored Markdown · HTML

GitHub Flavored Markdown to HTML

Updated: May 2026

GitHub Flavored Markdown (GFM) extends the CommonMark specification with features widely used by developers: tables, task lists, strikethrough and fenced code blocks. This guide explains what GFM adds over standard Markdown and how to convert GFM documents to HTML in your browser.

Convert GFM to HTML →

Free · No upload · Full GFM support

CommonMark vs GitHub Flavored Markdown

CommonMark is a strict, well-defined specification of Markdown syntax. It covers paragraphs, headings (ATX and setext), lists, code blocks, links, images and inline formatting. CommonMark does not include tables or task lists.

GitHub Flavored Markdown (GFM) is a superset of CommonMark. GitHub introduced GFM to add features they needed for repository documentation. The GFM specification is formally defined and publicly available. Flowfiles supports full GFM including all the extensions listed below.

GFM tables syntax and HTML output

GFM tables use pipe characters (|) to separate columns. The second row is a separator row with dashes, and colons control alignment:

| Product  | Price | Stock |
|:---------|------:|:-----:|
| Widget A |  9.99 |  ✓   |
| Widget B | 24.50 |  ✗   |

Produces a complete HTML table with <thead>, <tbody> and style="text-align:..." on each cell. Column alignment is controlled by the separator row: :--- aligns left, ---: right, and :---: centers the column.

GFM task lists

Task lists use a list item starting with [ ] for unchecked or [x] for checked:

- [x] Set up the project
- [x] Write tests
- [ ] Deploy to production

Each item renders as a <li> containing a disabled <input type="checkbox">, preserving the checked state as read-only. This matches how GitHub renders task lists in issues and pull requests.

Strikethrough and fenced code blocks

GFM strikethrough wraps text in double tildes: ~~deprecated feature~~ renders as <del>deprecated feature</del>.

Fenced code blocks use triple backticks or tildes, optionally followed by a language identifier:

```python
def hello(name):
    return f"Hello, {name}!"
```

The output is a <pre><code class="language-python">…</code></pre> block. The language-python class is compatible with syntax highlighting libraries such as Prism.js and highlight.js.

Frequently asked questions

What is the difference between Markdown and GFM?

GFM is a superset of CommonMark Markdown. It adds tables, task lists, strikethrough and fenced code blocks with language identifiers.

Does GitHub use GFM everywhere?

Yes. GitHub renders GFM for README files, issue descriptions, pull request bodies, wiki pages and comments.

Can I disable GFM extensions?

Yes. Each extension (tables, task lists) has an individual toggle in the options bar. Disable any extension to revert to standard CommonMark behavior for that element.

Is auto-link supported in GFM?

Yes. URLs starting with http:// or https:// are automatically converted to clickable anchor tags when the Auto-links option is enabled.

What class is added to fenced code blocks?

Fenced code blocks with a language identifier produce class="language-{lang}" on the <code> element, compatible with Prism.js and highlight.js.