Markdown Arrow Symbols
How Do You Write Arrows in Markdown?
Markdown doesn't have a built-in arrow syntax — there's no special character combination like ** for bold or []() for links. But that doesn't mean you can't use arrows. You just need to know a few workaround methods.
There are four main approaches:
- Copy and paste Unicode arrow characters (simplest, great for beginners)
- HTML entity codes (widely compatible, good for formal documents)
- Emoji syntax (works on GitHub, Discord, Slack)
- LaTeX math arrows (for math formulas and logical derivations)
Let me walk you through each one.
Method 1: Copy Unicode Arrow Characters
This is the most straightforward approach. Just copy the arrow you need from the table below and paste it into your Markdown file. No special syntax required.
I personally use this method the most. Since Markdown files are plain text, Unicode characters work everywhere. Write A → B in your GitHub README, and it renders with an actual arrow.
Common Arrow Reference
| Arrow | Character | Description |
|---|---|---|
| → | → | Right arrow |
| ← | ← | Left arrow |
| ↑ | ↑ | Up arrow |
| ↓ | ↓ | Down arrow |
| ↔ | ↔ | Left-right double arrow |
| ↕ | ↕ | Up-down double arrow |
| ↗ | ↗ | Up-right arrow |
| ↘ | ↘ | Down-right arrow |
| ↖ | ↖ | Up-left arrow |
| ↙ | ↙ | Down-left arrow |
| ⇒ | ⇒ | Double-line right arrow |
| ⇐ | ⇐ | Double-line left arrow |
| ⇑ | ⇑ | Double-line up arrow |
| ⇓ | ⇓ | Double-line down arrow |
| ⇔ | ⇔ | Double-line double arrow |
| ➜ | ➜ | Heavy arrow |
| ➤ | ➤ | Triangle arrow |
| ⟶ | ⟶ | Long right arrow |
| ⟵ | ⟵ | Long left arrow |
| ⟷ | ⟷ | Long double arrow |
A quick note: some obscure Unicode arrows may not render correctly in every Markdown viewer. But the ones listed above are widely supported across all major platforms.
Method 2: HTML Entity Codes
If you prefer not to copy-paste, or you want your source code to be more readable (Unicode characters can be hard to distinguish in a code editor), HTML entities are a solid alternative.
Since Markdown supports inline HTML, HTML entities work in almost every Markdown renderer. Write → and it renders as →.
Basic Arrow HTML Entities
| Arrow | HTML Entity | Result |
|---|---|---|
| Right | → | → |
| Left | ← | ← |
| Up | ↑ | ↑ |
| Down | ↓ | ↓ |
| Double | ↔ | ↔ |
| Up-down | ↕ | ↕ |
You can also use numeric codes. For example, → also produces →. Numeric codes use Unicode decimal values, which means you can represent any Unicode arrow this way.
| Arrow | Decimal Code | Hex Code |
|---|---|---|
| → | → | → |
| ← | ← | ← |
| ↑ | ↑ | ↑ |
| ↓ | ↓ | ↓ |
| ↔ | ↔ | ↔ |
| ⇒ | ⇒ | ⇒ |
| ⇔ | ⇔ | ⇔ |
I used HTML entities for a while, but eventually found myself just copying Unicode characters most of the time. That said, HTML entities are useful in formal documentation where you want the source to be self-documenting.
Method 3: GitHub Emoji Arrow Syntax
GitHub Flavored Markdown (along with Discord, Slack, and similar platforms) supports emoji shortcodes for arrows. The advantage is that the code itself is readable — :arrow_right: is pretty self-explanatory.
GitHub Emoji Arrows
| Syntax | Result | Description |
|---|---|---|
:arrow_right: | ➡ | Right arrow |
:arrow_left: | ⬅ | Left arrow |
:arrow_up: | ⬆ | Up arrow |
:arrow_down: | ⬇ | Down arrow |
:arrow_upper_right: | ↗ | Upper-right arrow |
:arrow_upper_left: | ↖ | Upper-left arrow |
:arrow_lower_right: | ↘ | Lower-right arrow |
:arrow_lower_left: | ↙ | Lower-left arrow |
:left_right_arrow: | ↔ | Bidirectional arrow |
:arrow_double_up: | ⏫ | Double up arrow |
:arrow_double_down: | ⏬ | Double down arrow |
Keep in mind that emoji syntax only works on platforms that support emoji rendering. It works great in GitHub READMEs, Issues, and PR descriptions. But if you're writing in Typora and exporting to PDF, emoji arrows might render as colorful icons instead of plain text symbols.
From my testing, emoji arrows on GitHub look noticeably different from Unicode arrows — they're more icon-like, while Unicode arrows blend with the text. For formal technical documentation, Unicode is usually the better choice.
Method 4: LaTeX Math Arrows
If your Markdown editor supports LaTeX/MathJax (such as Obsidian, Typora, or Jupyter Notebook), math-mode arrows are another powerful option. They're especially useful for math notes, logical derivations, or algorithm analysis.
Math arrows are wrapped in $...$ (inline) or $$...$$ (block):
Common Math Arrows
| LaTeX Code | Result | Description |
|---|---|---|
$\rightarrow$ | → | Right arrow |
$\leftarrow$ | ← | Left arrow |
$\Rightarrow$ | ⇒ | Double-line right arrow |
$\Leftarrow$ | ⇐ | Double-line left arrow |
$\Leftrightarrow$ | ⇔ | Double-line bidirectional arrow |
$\mapsto$ | ↦ | Maps-to arrow |
$\hookrightarrow$ | ↪ | Hook right arrow |
$\uparrow$ | ↑ | Up arrow |
$\downarrow$ | ↓ | Down arrow |
$\nearrow$ | ↗ | Upper-right arrow |
$\searrow$ | ↘ | Lower-right arrow |
$\longmapsto$ | ⟼ | Long maps-to arrow |
Vector Arrows
| LaTeX Code | Result | Description |
|---|---|---|
$\vec{a}$ | a⃗ | Vector a |
$\overrightarrow{AB}$ | AB→ | Vector from A to B |
$\overleftarrow{AB}$ | ←AB | Reverse vector |
The catch: your Markdown renderer must support MathJax or KaTeX. GitHub has limited native LaTeX support, so LaTeX arrows might display as raw code on GitHub. But if you're writing in Obsidian or Typora, go ahead — both handle LaTeX well.
Which Method Should You Use?
Here's my practical recommendation:
Everyday writing and notes → Copy Unicode characters. Simplest, works everywhere.
GitHub READMEs or team docs → HTML entities or Unicode. HTML entities are more readable in source code; Unicode is more concise.
GitHub/Discord/Slack comments → Emoji syntax. These platforms support it natively, and the code is self-documenting.
Math notes or logical derivations → LaTeX math arrows. They're professional math symbols that integrate well with other math elements.
| Method | Pros | Cons | Best For |
|---|---|---|---|
| Unicode copy-paste | Zero learning curve, universal | Hard to identify in source code | Everyday docs, notes |
| HTML entities | Readable code, wide support | Need to memorize names | Formal docs, technical writing |
| Emoji syntax | Semantic, GitHub native | Limited to emoji-capable platforms | GitHub, Discord, Slack |
| LaTeX math arrows | Professional math symbols | Requires MathJax/KaTeX | Math formulas, logic |
Platform Compatibility
Since there are many Markdown renderers, the same arrow may behave differently across platforms. I tested the four methods on several popular platforms:
| Method | GitHub | Obsidian | Typora | VS Code Preview |
|---|---|---|---|---|
| Unicode characters | ✅ | ✅ | ✅ | ✅ |
| HTML entities | ✅ | ✅ | ✅ | ✅ |
| Emoji syntax | ✅ | ❌ Shows code | ❌ Shows code | ❌ Shows code |
| LaTeX arrows | ⚠️ Partial | ✅ | ✅ | ✅ (with plugin) |
Unicode characters and HTML entities are the most reliable options. Emoji syntax only works in GitHub-style renderers. LaTeX requires MathJax/KaTeX support.
If you're not sure where your document will be viewed, stick with Unicode or HTML entities — they're the safest bet. For more on using HTML in Markdown, check out my guide on markdown html syntax.
Arrows in Mermaid Diagrams
There's one more scenario worth mentioning: Mermaid flowcharts in Markdown. If you use Mermaid to draw diagrams, arrows work differently:
```mermaid
graph LR
A[Start] --> B[Process]
B --> C{Decision}
C -->|Yes| D[End]
C -->|No| B
Mermaid uses `-->` for solid arrows, `-.->` for dashed arrows, and `==>` for thick arrows. This is a completely different system from the Unicode/HTML arrows discussed above — Mermaid arrows are part of the diagram syntax, not text symbols.
Check out my [markdown diagram guide](/markdown/diagram/) for more details on Mermaid syntax.
## Quick Reference
Just need an arrow fast? Pick from this table:
| What You Want | Copy This | Or Write This |
|--------------|-----------|---------------|
| Right arrow | → | `→` |
| Left arrow | ← | `←` |
| Up arrow | ↑ | `↑` |
| Down arrow | ↓ | `↓` |
| Bidirectional | ↔ | `↔` |
| Implies | ⇒ | `⇒` |
| Equivalent | ⇔ | `⇔` |
Arrow symbols in Markdown aren't complicated — the tricky part is that the information is scattered across different tutorials. Some only cover HTML entities, some only Unicode. I put all four methods together so you don't have to hunt around.
## References
- [Unicode Arrows Block Definition](https://unicode.org/charts/PDF/U2190.pdf) — Official Unicode Arrows character block specification
- [GitHub Flavored Markdown Spec](https://github.github.com/gfm/) — GitHub's official Markdown specification defining emoji syntax extensions
- [Markdown Guide — Hacks](https://www.markdownguide.org/hacks/) — Official Markdown Guide section on symbols and HTML entities
- [Toptal HTML Arrows](https://www.toptal.com/designers/htmlarrows/arrows/) — Most comprehensive HTML arrow symbol encoding reference
- [MathJax Official Documentation](https://docs.mathjax.org/) — LaTeX math arrow rendering support in web environments