Markdown Emoji: Shortcodes, Unicode & Copy-Paste Guide

How to add emoji in Markdown — shortcodes, Unicode, and a list of popular ones

Two Ways to Add Emoji

Markdown has no built-in emoji syntax, but there are two practical ways to get emoji into your documents:

  • Shortcodes — type a name between colons, like :smile:. The platform converts it to an emoji when rendering.
  • Unicode — paste the emoji character directly, like 😄. It is just text, so it works anywhere.

Shortcodes are easier to type and keep your source readable, but they only work on platforms that support them. Unicode is the safe choice when your Markdown will be viewed in many different apps.

:smile: becomes 😄    or just paste 😄 directly

:smile:
😄

Shortcode Syntax

A shortcode is the emoji name wrapped in colons: :emoji_name:. Names are lowercase, use underscores instead of spaces, and have no spaces inside the colons.

😄
🚀
⚠️
✅
❌

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

Shortcodes can sit inline with regular text, so you can mix them freely with other formatting such as **bold**:

🚀 Released: version 2.0 is live ✅

:rocket: **Released:** version 2.0 is live :white_check_mark:

Unicode Emoji (Copy-Paste)

The most portable method is to paste the emoji character itself. Emoji are part of the Unicode standard, so your .md file simply contains the character as text. Any app that displays text can display it — no plugin, no conversion, no platform support needed.

🚀 Getting Started
## 🚀 Getting Started

On macOS, press Ctrl + Cmd + Space to open the emoji picker and insert any emoji. On Windows, press Win + .. On Linux, most desktop environments offer a similar picker, or you can copy emoji from any emoji reference site.

Emoji in Different Contexts

Emoji work anywhere ordinary text works. Here are the most common places to use them.

Emoji in headings

🚀 Quick Start
## :rocket: Quick Start
## 🚀 Quick Start

Emoji in lists

  • ✅ Dark mode
  • ✅ Table of contents
  • ❌ Cloud sync
- :white_check_mark: Dark mode
- :white_check_mark: Table of contents
- :x: Cloud sync

Emoji in tables

FeatureStatus
Export✅
Sync🚧
| Feature | Status |
|---------|--------|
| Export  | ✅     |
| Sync    | 🚧     |

Emoji in commit messages

Some teams prefix commit messages with an emoji to show the type of change. GitHub renders shortcodes in commit messages on the web, while Unicode works in every Git tool.

:sparkles: Add dark mode toggle
:bug: Fix crash on empty file
:memo: Update installation docs
🚀 Release v2.0.0

Emoji in pull request titles

:bug: Fix table alignment in preview
:sparkles: Support YAML front matter
⚡ Speed up large file rendering

GitHub-Specific Emoji

GitHub supports more than 1,800 emoji shortcodes in issues, pull requests, comments, wikis, READMEs, and commit messages on the web. Beyond the standard Unicode set, GitHub has a few custom emoji that exist only on GitHub:

:octocat: — the GitHub mascot
:shipit: — the squirrel that says “ship it”
:trollface: — the classic troll face

:octocat:
:shipit:
:trollface:

Custom emoji like :octocat: and :shipit: render as small images on GitHub and appear as literal text anywhere else, which is why the preview above shows the names rather than emoji characters.

For the complete list of supported shortcodes, see the GitHub emoji cheat sheet or GitHub’s official emoji API at api.github.com/emojis.

Platform Support

Shortcode support depends on the app rendering your Markdown. Unicode emoji work everywhere.

PlatformShortcodesUnicode
GitHub✅ Yes✅ Yes
GitLab✅ Yes✅ Yes
Slack✅ Yes✅ Yes
Discord✅ Yes✅ Yes
VS Code❌ No (extension needed)✅ Yes
Obsidian✅ With a plugin✅ Yes
MDViewer❌ No✅ Yes

If you are not sure where your Markdown will end up, use Unicode emoji. They survive copy-paste between apps, export to PDF, and rendering in any viewer.

Common Mistakes

Misspelling the shortcode

Shortcode names must match exactly. A typo, a missing underscore, or an extra space leaves the text as is instead of rendering an emoji.

MarkdownResult
:white_check_mark:✅
:whitecheckmark::whitecheckmark:
: rocket :: rocket :
:white_check_mark:   <-- correct
:whitecheckmark:     <-- wrong name, stays as text
: rocket :           <-- spaces break it

Using shortcodes on a platform that does not support them

Shortcodes are not part of the Markdown specification. In VS Code’s built-in preview, MDViewer, and many other viewers, :rocket: shows up as literal text. If your file will be opened in different apps, paste the Unicode character instead.

Emoji shortcodes inside code blocks

Anything inside backticks or a fenced code block is displayed literally. Shortcodes are not converted there, which is useful when you want to show the syntax itself, but surprising when you expect an emoji.

Outside code, :rocket: written as a shortcode becomes 🚀
Inside code it stays as literal text: :rocket:

:rocket: outside code becomes an emoji
Inside code it stays as `:rocket:`

FAQ

How do I add emoji to Markdown?

Use a shortcode such as :rocket: on platforms that support them (GitHub, GitLab, Slack, Discord), or paste the Unicode character directly: 🚀. Unicode emoji work everywhere because they are plain text, while shortcodes only work where the platform converts them.

What emoji shortcodes work on GitHub?

GitHub supports over 1,800 shortcodes, including :rocket:, :warning:, :white_check_mark:, :x:, :+1:, :fire:, :bug:, and :memo:. It also has GitHub-only emoji like :octocat:, :shipit:, and :trollface:. See the emoji cheat sheet for the full list.

Do emoji shortcodes work in VS Code Markdown preview?

No. The built-in VS Code preview does not convert :shortcode: syntax, so it appears as literal text. Unicode emoji you paste directly render fine. To use shortcodes in VS Code, install an extension such as Markdown Emoji, which adds shortcode support to the preview.

Preview Your Markdown with MDViewer

MDViewer is a native macOS app for reading and previewing Markdown files. Double-click any .md file in Finder and see it rendered instantly — Unicode emoji, tables, code blocks, and more. Lite is free; Pro adds editing, Git history, and PDF export.

Download MDViewer

Requires macOS 13.0 or later. Intel and Apple Silicon.