PureDevTools

GitHub Markdown Preview

Preview Markdown exactly as GitHub renders it β€” alerts, emoji, mentions, footnotes, heading anchors, and all GFM extensions

All processing happens in your browser. No data is sent to any server.
205 words2020 characters89 linesPreview: GitHub Light
Editor
Preview (GitHub Light)

GitHub Markdown Preview

Preview Markdown exactly as GitHub renders it β€” including alerts, emoji, mentions, footnotes, and more.

GitHub Alerts

ℹ️ Note

Useful information that users should know, even when skimming content.

[!TIP] Helpful advice for doing things better or more easily.

[!IMPORTANT] Key information users need to know to achieve their goal.

[!WARNING] Urgent info that needs immediate user attention to avoid problems.

[!CAUTION] Advises about risks or negative outcomes of certain actions.

Text Formatting

You can write bold, italic, strikethrough, or inline code.

Task Lists

  • Write the parser
  • Add GitHub alerts
  • Add more features
  • Deploy to production

Tables

FeatureSupportedNotes
Task listsβœ…- [x] / - [ ]
Tablesβœ…Pipe-delimited
Alertsβœ…> [!NOTE] etc.
Strikethroughβœ…~~text~~
Autolinksβœ…https://github.com
Emojiβœ…:rocket: β†’ πŸš€
Footnotesβœ…[^1]
Mentionsβœ…@octocat
Issue refsβœ…#42

Emoji Shortcodes

πŸŽ‰ πŸš€ ⭐ πŸ”₯ ⚑ ✨ ❀️ πŸ‘ πŸ› πŸ’‘

Mentions & Issue References

Ping @octocat or check issue #42 for more details.

Visit https://github.com for the full documentation.

Footnotes

Here is a simple footnote[1]. With some additional text after it[2].

Code Blocks

javascript
// GitHub-style syntax highlighting (language label shown)
async function fetchUser(username) {
  const res = await fetch(`https://api.github.com/users/${username}`);
  return res.json();
}
python
def fibonacci(n: int) -> list[int]:
    a, b = 0, 1
    result = []
    for _ in range(n):
        result.append(a)
        a, b = b, a + b
    return result

Heading Anchors

Each heading above gets a clickable # anchor link, just like GitHub.

Footnotes

  1. The first footnote content. ↩
  2. The second footnote content. ↩

You’re writing a README with a table, task list, alert block (> [!WARNING]), and fenced code blocks with syntax highlighting. You push to GitHub and the alert renders as a plain blockquote, the table alignment is off, and the emoji shortcode :rocket: didn’t resolve. You edit, commit, push, check β€” four round trips to fix formatting. You need a preview that renders GFM exactly like GitHub does, before you push.

Why This Preview (Not VS Code or the GitHub Editor)

VS Code’s Markdown preview uses CommonMark, not GitHub Flavored Markdown β€” so GFM-specific features like alerts (> [!NOTE]), emoji shortcodes, autolinked URLs, and footnotes don’t render correctly. GitHub’s web editor shows a preview, but only for files already in the repo. This tool previews GFM in your browser with alerts, emoji, footnotes, task lists, tables, heading anchors, and syntax-highlighted code blocks β€” matching GitHub’s rendering before you commit. No data is sent anywhere.

What Is GitHub Flavored Markdown?

GitHub Flavored Markdown (GFM) is a superset of CommonMark, the standard Markdown specification. GitHub uses GFM across its entire platform β€” README files, Issues, Pull Requests, Discussions, Wikis, and Gists. GFM extends standard Markdown with a set of practical additions that make it especially useful for software documentation and collaborative writing.

This tool renders Markdown using the same rules GitHub applies, so what you see in the preview is exactly what your README, issue comment, or wiki page will look like on GitHub.com.

GitHub-Specific Markdown Extensions

GitHub Alerts (Admonitions)

GitHub introduced alert syntax in late 2023. Alerts are special blockquotes that render as styled callout boxes with a colored border, icon, and label. Use them to highlight important information:

> [!NOTE]
> Useful information that users should know.

> [!TIP]
> Helpful advice for doing things better.

> [!IMPORTANT]
> Key information needed to achieve a goal.

> [!WARNING]
> Urgent info that needs immediate attention.

> [!CAUTION]
> Advice about risks or negative outcomes.

Each alert type renders with its own color scheme:

Emoji Shortcodes

GitHub converts :name: emoji shortcodes to their corresponding Unicode emoji characters. These are based on the Gemoji library and map to standard Unicode emoji:

:rocket: β†’ πŸš€       :tada: β†’ πŸŽ‰        :star: β†’ ⭐
:fire: β†’ πŸ”₯         :sparkles: β†’ ✨     :zap: β†’ ⚑
:heart: β†’ ❀️        :thumbsup: β†’ πŸ‘    :bug: β†’ πŸ›
:bulb: β†’ πŸ’‘        :warning: β†’ ⚠️     :white_check_mark: β†’ βœ…

@Mentions and #Issue References

On GitHub, @username is rendered as a clickable link to that user’s profile, and #123 becomes a link to issue or PR number 123. This preview renders them as styled links that visually match GitHub’s appearance.

Ping @octocat for review.
Closes #42.
See PR #100 for the implementation.

Footnotes

GitHub supports footnote syntax for adding citations or clarifying notes:

This is a claim that needs a source.[^1]

Regular paragraph with another note.[^note]

[^1]: The source for the first claim.
[^note]: A clarifying note for readers.

Footnotes render as numbered superscript references inline, with the full footnote text collected in a Footnotes section at the bottom of the document. Each footnote includes a ↩ back-reference link.

Bare URLs beginning with https:// or http:// are automatically converted to clickable links without needing the [text](url) syntax:

Visit https://github.com for the documentation.

Heading Anchors

GitHub generates URL-friendly anchor IDs for every heading. The heading ## Getting Started receives the ID getting-started. Hover over any heading in the preview to see the # anchor link appear β€” this is how people create deep links to specific sections in GitHub documents.

Duplicate heading text gets deduplicated with a -N suffix (e.g., installation, installation-1, installation-2).

Standard GFM Features

Task Lists

Task lists render checkboxes that visually indicate completion status. On GitHub, repository collaborators can check and uncheck boxes directly in issues and pull requests.

- [x] Design the API
- [x] Write unit tests
- [ ] Deploy to staging
- [ ] Write release notes

Tables

Tables use pipe characters (|) with a separator row of dashes. Column alignment is controlled by colons in the separator:

| Column | Left | Center | Right |
|--------|:-----|:------:|------:|
| Data   | A    |   B    |     C |

Strikethrough

Double tildes wrap strikethrough text:

The old price was ~~$99.99~~ $49.99.

Code Blocks with Language Labels

Fenced code blocks accept a language identifier that GitHub uses for syntax highlighting. This preview shows the language label in the code block header, matching GitHub’s display:

```javascript
const greet = (name) => `Hello, ${name}!`;
```

Supported identifiers include javascript, typescript, python, rust, go, java, bash, sql, css, html, json, yaml, dockerfile, and many more.

How to Use This Tool

  1. Type or paste Markdown in the left editor β€” the preview on the right updates instantly
  2. Use the toolbar to insert formatting: Bold, Italic, Heading, Strikethrough, Link, Inline Code, Code Block, Task List, and GitHub Alert shortcuts
  3. Toggle theme with the πŸŒ™/β˜€οΈ button to switch between GitHub Light and GitHub Dark preview styles
  4. Keyboard shortcuts: Ctrl+B for bold, Ctrl+I for italic, Tab for 2-space indent
  5. Copy rendered HTML to get the final HTML output for embedding elsewhere
  6. Copy Markdown to preserve the raw source
  7. Fullscreen mode β€” expand either pane for a distraction-free writing experience

Differences Between GitHub Rendering and Standard Markdown

FeatureCommonMarkGitHub GFM
Tables❌ Not includedβœ… Pipe-delimited
Task lists❌ Not includedβœ… - [ ] / - [x]
Strikethrough❌ Not includedβœ… ~~text~~
Alerts❌ Not includedβœ… > [!NOTE] etc.
Emoji shortcodes❌ Not includedβœ… :name: syntax
Footnotes❌ Not includedβœ… [^label] syntax
AutolinksPartialβœ… Bare https:// URLs
@mentions❌ Not includedβœ… Links to GitHub users
#issue refs❌ Not includedβœ… Links to issues/PRs
Heading anchors❌ Not includedβœ… Auto-generated IDs

Frequently Asked Questions

Can I use GitHub Markdown in other platforms? GitHub Flavored Markdown is widely supported β€” GitLab, Bitbucket, Jira, Notion, Obsidian, VS Code, and many other tools render most GFM features. However, GitHub-specific features like > [!NOTE] alerts, @mention linking, and #issue references are generally only meaningful on GitHub itself. The emoji shortcode set and footnote syntax are increasingly supported elsewhere.

Why do my alerts not render as styled boxes? The > [!NOTE] alert syntax is only supported on GitHub. Standard Markdown renderers, including many editors and static site generators, render it as a regular blockquote. This tool renders alerts exactly as GitHub does, but if you copy the Markdown to another platform, the alert may appear as plain quoted text.

What happens to footnote references when the same ID is used twice? GitHub only renders the first definition for a given footnote ID. Duplicate references are ignored. The back-reference from the footnote section always links to the first occurrence of that reference in the text.

Are @mentions and #issue references real links? In this tool, @mentions link to github.com/username and #issue references are styled but link to a placeholder. On actual GitHub, #123 links to the specific issue or PR in the current repository.

Is my content private? Yes. All Markdown parsing and HTML rendering runs entirely in your browser using JavaScript. No content is sent to any server. Your text stays local to your device and is never stored or transmitted.

Related Tools

More HTML & Markdown Tools