HTML entity for a right arrow →

→ / → / →

→ is the HTML entity for the right arrow →, U+2192 RIGHTWARDS ARROW, and → and → are its numeric references. HTML5 also reads →, →, → and →, though JSX doesn’t. In UTF-8 it’s E2 86 92.

Character    → U+2192 RIGHTWARDS ARROW
Named        →
Numeric      →    →
UTF-8        E2 86 92

Encoding a menu path gives Settings → Privacy.

Names are case-sensitive

⇒, with a capital A, is a different character: ⇒, U+21D2, the double arrow used for “implies”. The neighbors:

→  U+2192  →     ⇒  U+21D2  ⇒
↑  U+2191  ↑     ↓  U+2193  ↓
↔  U+2194  ↔     ⟶  U+27F6  ⟶   (HTML5 only)

→ isn’t an emoji, so no platform swaps it for a color picture. ➡ (U+27A1) and ↔ are emoji and can be.

-> in JSX

In plain HTML, -> is fine: only < and & start markup in text. JSX is stricter. TypeScript rejects > in JSX text with TS1382: Unexpected token. Did you mean {'>'} or &gt;?, and oxc, the compiler in Vite 8, stops with the same message; Babel and esbuild let it through. So <p>Next -> Billing</p> breaks a typed React project. Write &rarr;, an HTML 4 name every JSX compiler decodes, or {'->'}. A coding font with ligatures may draw -> as an arrow, but it’s still two characters.

Decorative arrows

Screen readers may announce the arrow, so a link like “Read the docs →” reads with extra noise. Hide it from assistive technology:

<a href="/docs">Read the docs <span aria-hidden="true">&rarr;</span></a>

For separators, CSS keeps the arrow out of the markup:

.steps li + li::before { content: "\2192"; padding-inline: 0.5em; }

Browsers don’t break a line at →: in a box too narrow for aaaa→bbbb, Chromium and WebKit let it overflow rather than wrap.

JSX decodes &rarr; in text; in braces write {'\u2192'}. CommonMark decodes &rarr; and the HTML5 aliases in Markdown text and leaves them literal in code spans.

Try it in the HTML Entity Encoder & Decoder

Encoded

1 character becomes a reference, named where a name exists and &#x…; where one doesn’t.

Encoding always escapes &amp;, &lt;, &gt;, &quot; and &#39; — the characters that mean something to an HTML parser.

Runs in your browser. Nothing you enter is sent anywhere.