Short answer: Tap any arrow below to copy it. To type one in Word, type its hex code and press Alt + X — 21BB then Alt + X gives ↻. On a Mac, open the Character Viewer with Control + Command + Space and search “arrow”.
Curved arrows are the ones you reach for when a straight arrow won’t do: undo and redo (↩ ↪), refresh and rotate (↺ ↻), branch and reply (⤴ ⤵), swap and sync (⇄ ⇅). Straight arrows point; curved arrows describe an action. For the cardinal set — → ← ↑ ↓ and their variants — see arrow symbols, or browse every arrow in the collection.
Need something outside the arrow family? The full copy-and-paste symbol keyboard has every mark on one page.
The full set
| Symbol | Unicode name | Commonly used for | Code point | HTML | Word |
|---|---|---|---|---|---|
| ↩ | Leftwards arrow with hook | Undo, reply, go back | U+21A9 | ↩ | 21A9 + Alt+X |
| ↪ | Rightwards arrow with hook | Redo, forward, continue | U+21AA | ↪ | 21AA + Alt+X |
| ↺ | Anticlockwise open circle arrow | Undo, rotate left | U+21BA | ↺ | 21BA + Alt+X |
| ↻ | Clockwise open circle arrow | Refresh, reload, rotate right | U+21BB | ↻ | 21BB + Alt+X |
| ⟲ | Anticlockwise gapped circle arrow | Reset, revert | U+27F2 | ⟲ | 27F2 + Alt+X |
| ⟳ | Clockwise gapped circle arrow | Reload, retry, loop | U+27F3 | ⟳ | 27F3 + Alt+X |
| ↶ | Anticlockwise top semicircle arrow | Undo | U+21B6 | ↶ | 21B6 + Alt+X |
| ↷ | Clockwise top semicircle arrow | Redo | U+21B7 | ↷ | 21B7 + Alt+X |
| ⤴ | Arrow pointing rightwards then curving upwards | Branch up, escalate | U+2934 | ⤴ | 2934 + Alt+X |
| ⤵ | Arrow pointing rightwards then curving downwards | Branch down, drill in | U+2935 | ⤵ | 2935 + Alt+X |
| ⤶ | Arrow pointing downwards then curving leftwards | Return, line break | U+2936 | ⤶ | 2936 + Alt+X |
| ⤷ | Arrow pointing downwards then curving rightwards | Nested item, sub-step | U+2937 | ⤷ | 2937 + Alt+X |
| ⇄ | Rightwards arrow over leftwards arrow | Swap, exchange, transfer | U+21C4 | ⇄ | 21C4 + Alt+X |
| ⇆ | Leftwards arrow over rightwards arrow | Swap (mirrored) | U+21C6 | ⇆ | 21C6 + Alt+X |
| ⇅ | Upwards arrow leftwards of downwards arrow | Sort, sync, up/down | U+21C5 | ⇅ | 21C5 + Alt+X |
| ⇵ | Downwards arrow leftwards of upwards arrow | Sync (mirrored) | U+21F5 | ⇵ | 21F5 + Alt+X |
| ↔ | Left right arrow | Two-way, resize, range | U+2194 | ↔ | 2194 + Alt+X |
| ↕ | Up down arrow | Vertical resize, sort | U+2195 | ↕ | 2195 + Alt+X |
| ⮌ | Anticlockwise triangle-headed right U-shaped arrow | Solid undo, U-turn | U+2B8C | ⮌ | 2B8C + Alt+X |
The names in that column are the official Unicode names, not descriptions. “Leftwards arrow with hook” is what ↩ is actually called, which is worth knowing when you’re searching a character picker — searching “undo” finds nothing, searching “hook” finds it immediately.
Why your arrow sometimes turns into a colour emoji
This is the thing that catches everyone out, and almost no symbol site explains it.
Paste ↩ into a document and it looks like a normal monochrome character. Paste the same character into a phone message and it may arrive as ↩️ — a full-colour emoji, boxed and sized like one. Nothing was converted; the code point is identical. Only the presentation changed.

Several of these arrows are dual-nature characters: they existed as text symbols first, then were absorbed into the emoji set. Unicode’s fix is the variation selector, an invisible character you append to force one presentation or the other:
- U+FE0E (VS15) — force text presentation, monochrome
- U+FE0F (VS16) — force emoji presentation, colour
In HTML that looks like this:
html
<a href="#back">↩︎</a> <!-- always the plain text arrow -->
<span>↩️</span> <!-- always the colour emoji -->
The affected arrows on this page are ↩ ↪ ⤴ ⤵ ↔ ↕ — the ones with emoji counterparts. The purely typographic ones (↺ ↻ ⟲ ⟳ ⇄ ⇅) have no emoji form and render as text everywhere.
Which one do you get without a selector? In principle, the character’s default presentation property decides. In practice, implementations disagree — iOS and Android lean toward emoji, macOS and many desktop apps lean toward text. If it matters to your design, don’t leave it to chance: add the selector. CSS now offers font-variant-emoji: text as an alternative, though browser support is still incomplete, so the variation selector remains the reliable method.
If you’re using an arrow as a back-link or a UI glyph, VS15 is almost always what you want — an unexpected colour emoji in a navigation bar is a genuinely common bug.
Windows
In Word or Outlook: type the hex code from the table, then press Alt + X. Type 21BB, press Alt + X, and it becomes ↻. This works for every arrow on this page and needs no numpad.
Anywhere else: Alt codes won’t help. The classic Alt + 0NNN codes only reach code points up to 255, and every arrow here sits far above that — see why Alt codes don’t work and the full Alt code chart for what they do cover.
What works instead:
- Copy from the grid above — fastest.
- Character Map — search “charmap”, find the arrow, copy.
- The emoji panel (Windows key + .) has a symbols tab with an arrows section, though it inserts the emoji presentation for the dual-nature ones. More on the panel: the Windows emoji shortcut.
Mac
macOS has no Option shortcut for these arrows — there simply isn’t one, and any page that lists one has invented it. Two reliable routes:
- Character Viewer: press Control + Command + Space, search “arrow”, and double-click the one you want. Use the official Unicode names above if the search is being unhelpful.
- Unicode Hex Input: add it under System Settings → Keyboard → Text Input → Edit → + → Others → Unicode Hex Input, switch to it, then hold Option and type the four-digit hex code.
Option + 21BBgives ↻. This covers everything up to U+FFFF, which is all of these arrows.
iPhone and Android
There are no curved arrows on the standard keyboards, and the emoji keyboard only carries the emoji versions (↩️ ↪️ ⤴️ ⤵️ 🔃 🔄). For the text versions:
- Copy them from the grid above — the practical answer.
- Save them as text replacements if you use one often. iPhone: Settings → General → Keyboard → Text Replacement, paste the arrow as the phrase and set a shortcut like
;;undo. Android does the same through Gboard’s personal dictionary.
Chromebook
Press Ctrl + Shift + U, type the hex code without the U+ (21bb), then press Enter or Space. The character appears. Underlined characters while you type are expected — that’s the input method waiting for you to confirm.
Linux
Two routes, both reliable:
- Unicode entry: Ctrl + Shift + U, hex code, then Enter. Works in GTK apps and under IBus and fcitx5.
- Character picker: GNOME Characters or KCharSelect — search by name, and again the official Unicode names are what the search matches.
Word, Google Docs and Excel
Word: hex + Alt + X as above, or Insert → Symbol → More Symbols, set the subset to Arrows, and pick from the grid.
Google Docs: Insert → Special characters, then either search (“circle arrow”) or draw the shape in the sketch box — Docs matches your drawing to characters, which is unusually good for arrows.
Excel: the UNICHAR function builds them from the decimal value in the HTML column: =UNICHAR(8635) returns ↻. That’s genuinely useful for dashboards — a formula can return ↑ or ↓ or ⇄ based on a condition, giving you conditional indicators without conditional formatting. Note it’s UNICHAR, not CHAR: CHAR is limited to the ANSI range and will not produce these.
In HTML, CSS and code
Use the numeric references from the table, or paste the character directly into UTF-8 source:
html
<button>↻ Refresh</button>
<a href="#top">↩︎ Back to top</a>
In CSS content, escape the code point with a backslash and no semicolon:
css
.btn-refresh::before { content: "\21BB"; }
.btn-undo::before { content: "\21A9\FE0E"; } /* forces text presentation */
A caution worth building into your habits: a decorative arrow inserted through ::before is invisible to screen readers in some configurations and read aloud as its full Unicode name in others — “clockwise open circle arrow” is not a helpful thing to hear on a button. Give the button a real accessible name and mark the glyph as decorative:
html
<button aria-label="Refresh results"><span aria-hidden="true">↻</span></button>
Background on how these code points are organised: what Unicode is.
Troubleshooting
| Problem | Fix |
|---|---|
| My arrow turned into a colour emoji | Append the text variation selector, U+FE0E — in HTML, ︎ after the character |
| I want the colour emoji and get plain text | Append U+FE0F instead |
| Alt + 0NNN does nothing | These code points are above 255, so classic Alt codes can’t reach them. Use hex + Alt + X in Word, or copy |
| The arrow shows as an empty box | Font coverage. ⮌ and the gapped circle arrows are the least widely supported — see symbols showing as boxes |
=CHAR(8635) returns the wrong thing in Excel | Use UNICHAR, not CHAR |
| Alt + X converted the wrong characters | Word grabs the hex digits immediately before the cursor. Put a space before the code, or select just the code first |
| The arrow renders but is misaligned in a button | Curved arrows have different optical centres than text. Nudge with vertical-align or line-height rather than padding |
| Screen reader announces a long arrow name | Wrap the glyph in aria-hidden="true" and give the control an aria-label |
Picking the right arrow
| You want to show… | Use |
|---|---|
| Undo / redo | ↩ ↪ or ↺ ↻ |
| Refresh, reload, retry | ↻ or ⟳ |
| Reply, go back | ↩ |
| A branch or sub-step | ⤴ ⤵ ⤶ ⤷ |
| Swap or exchange two things | ⇄ ⇆ |
| Sort, or two-way sync | ⇅ ⇵ |
| A resizable or two-way range | ↔ ↕ |
| A hard reversal or U-turn | ⮌ |
Need the plain directional set instead? See arrow symbols for → ← ↑ ↓ and the rest, or the full arrows collection. For status indicators, the check mark and cross symbols pair well with these in tables and dashboards.
Frequently asked questions
How do I type a curved arrow?
The most reliable way is to copy it. To type one, use Word or Outlook: type the hex code and press Alt + X, so 21BB becomes ↻. On a Mac, open the Character Viewer with Control + Command + Space and search for the arrow. On ChromeOS and Linux, press Ctrl + Shift + U, type the hex code, then Enter.
Why does my arrow show up as a coloured emoji?
Some arrows exist as both a text symbol and an emoji, and different systems default differently. To force the plain monochrome version, add the text variation selector U+FE0E after the character — in HTML, ↩︎. To force the colour emoji instead, use U+FE0F.
What is the refresh or reload symbol?
The clockwise open circle arrow ↻ (U+21BB), or the gapped version ⟳ (U+27F3). Both are widely used for refresh, reload and retry. Their anticlockwise counterparts ↺ and ⟲ are used for undo, reset and revert.
Is there an Alt code for curved arrows?
No. Classic Windows Alt codes in the Alt + 0NNN form only reach characters up to code point 255, and every curved arrow sits well above that. Use the hex code with Alt + X in Word, use Character Map, or copy the arrow you need.
How do I put a curved arrow in Excel?
Use the UNICHAR function with the decimal code point: =UNICHAR(8635) returns ↻ and =UNICHAR(8644) returns ⇄. Combine it with IF to show different arrows based on a value. CHAR will not work — it’s limited to the ANSI range.
What’s the difference between ↩ and ↺?
Both are used for undo. ↩ is a leftwards arrow with a hook, suggesting stepping back along a path, and is also common for reply. ↺ is an anticlockwise circle arrow, suggesting rotation or reversion, and reads more clearly as reset. In interfaces, ↩ tends to mean “back one step” and ↺ tends to mean “start over”.
Written by Igor R. Tested on Windows 11, macOS, iOS, Android, ChromeOS, Linux and Microsoft Word. Last updated August 2026. Symbol code points follow the Unicode Standard.