Skip to main content

Markdown Extended Syntax Reference

Extended syntax adds powerful features on top of basic markdown. These include tables, footnotes, task lists, strikethrough, and more. Not every processor supports all of these features, so each section notes where the syntax works.

Tables

Create tables using pipes (|) and hyphens (-). The second row of hyphens separates the header from the body. Use colons to control column alignment: left-align with :---, center with :---:, and right-align with ---:.

| Feature   | Supported | Notes        |
| :-------- | :-------: | -----------: |
| Tables    | Yes       | GFM required |
| Footnotes | Yes       | Limited       |
| Emoji     | Yes       | :smile:      |

Supported by: GitHub, GitLab, most modern markdown processors.

Fenced Code Blocks

Wrap code in triple backticks and add a language identifier after the opening backticks to enable syntax highlighting. This is one of the most widely supported extended features and is part of the GitHub Flavored Markdown (GFM) specification.

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

hello("world")
```

```json
{
  "name": "project",
  "version": "1.0.0"
}
```

Supported by: Nearly universal. Supported by GitHub, GitLab, VS Code, Obsidian, and most processors.

Footnotes

Add footnotes with bracket notation. Place [^1] in your text where you want the reference, then define the footnote content anywhere in the document. Footnotes are automatically numbered and linked.

Here is a sentence with a footnote.[^1]

[^1]: This is the footnote content.

You can also use named footnotes.[^note]

[^note]: Named footnotes work the same way.

Supported by: GitHub, PHP Markdown Extra, Obsidian, Pandoc. Not supported in all processors.

Heading IDs

Some processors let you assign custom IDs to headings using curly braces. This gives you control over the anchor link for that heading, which is useful when you need predictable URLs for deep linking.

### My Section {#custom-id}

Link to it: [Jump to section](#custom-id)

Supported by: Pandoc, kramdown, PHP Markdown Extra. Not supported in standard GFM.

Definition Lists

Create definition lists by writing the term on one line and the definition on the next line, prefixed with a colon and a space. Definition lists are useful for glossaries and reference documentation.

Markdown
: A lightweight markup language for formatting text.

HTML
: The standard markup language for web pages.

CSS
: A style sheet language for describing presentation.

Supported by: PHP Markdown Extra, Pandoc, kramdown. Not part of GFM.

Strikethrough

Wrap text in double tildes to display it with a strikethrough line. This is commonly used to indicate deleted or outdated content. Strikethrough is part of the GFM specification.

~~This text is crossed out.~~

The price was ~~$100~~ $75.

Supported by: GitHub, GitLab, most GFM-compatible processors.

Task Lists

Create interactive checklists using list items prefixed with [ ] for unchecked and [x] for checked. Task lists are a GFM feature and render as checkboxes on GitHub.

- [x] Write the introduction
- [x] Add code examples
- [ ] Review and edit
- [ ] Publish the article

Supported by: GitHub, GitLab, Obsidian, and most GFM-compatible processors.

Emoji

Insert emoji using shortcodes wrapped in colons. The shortcode name matches the standard emoji naming convention. You can also paste Unicode emoji characters directly into your markdown.

:smile: :rocket: :thumbsup:
:warning: :white_check_mark: :x:

You can also paste emoji directly: 🚀 ✅

Supported by: GitHub, GitLab, Slack, Discord. Shortcode support varies by processor.

Highlight

Wrap text in double equals signs to mark it as highlighted. This renders with a yellow background in processors that support it. It is useful for drawing attention to key phrases.

==This text is highlighted.==

The ==important part== is marked.

Supported by: Obsidian, some static site generators. Not part of GFM or CommonMark.

Subscript and Superscript

Use single tildes for subscript and carets for superscript. These are useful for scientific notation, mathematical formulas, and chemical formulas. Support for these is limited to certain processors.

H~2~O (subscript for water)

X^2^ (superscript for squared)

Footnote style: E = mc^2^

Supported by: Pandoc, Obsidian, some static site generators. Not part of GFM.

Frequently Asked Questions

What is extended markdown syntax?

Extended markdown syntax refers to formatting features that go beyond John Gruber's original markdown specification. These include tables, footnotes, task lists, strikethrough, and fenced code blocks with syntax highlighting. Many of these features are part of GitHub Flavored Markdown (GFM).

What is GitHub Flavored Markdown (GFM)?

GFM is an extension of standard markdown maintained by GitHub. It adds support for tables, task lists, strikethrough, fenced code blocks, and automatic URL linking. GFM is one of the most widely adopted markdown flavors.

How do I create a table in markdown?

Use pipes (|) to separate columns and hyphens (-) to create the header separator row. Add colons to the separator row to control alignment: :--- for left, :---: for center, and ---: for right alignment.

Do all markdown processors support extended syntax?

No. Extended syntax support varies by processor. Features like tables, fenced code blocks, and task lists are widely supported through GFM. Others like footnotes, definition lists, and highlight are only available in specific processors such as Pandoc, Obsidian, or kramdown.

Can I use strikethrough in markdown?

Yes, wrap text in double tildes like ~~this~~ to create strikethrough text. This feature is part of the GFM specification and works on GitHub, GitLab, and most modern markdown editors and processors.

Related Resources

Build tables visually, practice in our editor, or review the basics.

Markdown Extended Syntax - Tables, Footnotes, Task Lists & More | Kolavi Studio