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

ArrowCharacterDescription
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

ArrowHTML EntityResult
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.

ArrowDecimal CodeHex 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

SyntaxResultDescription
: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 CodeResultDescription
$\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 CodeResultDescription
$\vec{a}$a⃗Vector a
$\overrightarrow{AB}$AB→Vector from A to B
$\overleftarrow{AB}$←ABReverse 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.

MethodProsConsBest For
Unicode copy-pasteZero learning curve, universalHard to identify in source codeEveryday docs, notes
HTML entitiesReadable code, wide supportNeed to memorize namesFormal docs, technical writing
Emoji syntaxSemantic, GitHub nativeLimited to emoji-capable platformsGitHub, Discord, Slack
LaTeX math arrowsProfessional math symbolsRequires MathJax/KaTeXMath 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:

MethodGitHubObsidianTyporaVS 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