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:
Popular Emoji Shortcodes
These are the shortcodes most often used in READMEs, changelogs, issues, and documentation. They work on GitHub, GitLab, Slack, and Discord.
| Shortcode | Emoji | Common use |
|---|---|---|
:rocket: | 🚀 | Launch, release, getting started |
:warning: | ⚠️ | Warnings, breaking changes |
:white_check_mark: | ✅ | Done, supported, passing |
:x: | ❌ | Not supported, failing |
:heavy_check_mark: | ✔️ | Checklist item, confirmed |
:+1: | 👍 | Approval, agreement |
:-1: | 👎 | Disapproval, rejection |
:fire: | 🔥 | Hot, popular, critical |
:star: | ⭐ | Favorite, featured, rating |
:bug: | 🐛 | Bug fix, known issue |
:memo: | 📝 | Notes, documentation |
:bulb: | 💡 | Tips, ideas |
:gear: | ⚙️ | Settings, configuration |
:lock: | 🔒 | Security, private, locked |
:link: | 🔗 | Links, references |
:calendar: | 📅 | Dates, schedules, releases |
:clipboard: | 📋 | Checklists, copy |
:eyes: | 👀 | Review needed, looking into it |
:tada: | 🎉 | Celebration, initial commit |
:sparkles: | ✨ | New feature |
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
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
## :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
| Feature | Status |
|---|---|
| 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.
| Platform | Shortcodes | Unicode |
|---|---|---|
| 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.
| Markdown | Result |
|---|---|
: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.
Requires macOS 13.0 or later. Intel and Apple Silicon.