Curved & Circular Arrow Symbols (↩ ↻ ⤴ ⇄) — Copy & Type

Igor R.

August 14, 2026

Short answer: Tap any arrow below to copy it. To type one in Word, type its hex code and press Alt + X21BB 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.

Curved & circular arrows Tap any key to copy

Need something outside the arrow family? The full copy-and-paste symbol keyboard has every mark on one page.

The full set

SymbolUnicode nameCommonly used forCode pointHTMLWord
Leftwards arrow with hookUndo, reply, go backU+21A9↩21A9 + Alt+X
Rightwards arrow with hookRedo, forward, continueU+21AA↪21AA + Alt+X
Anticlockwise open circle arrowUndo, rotate leftU+21BA↺21BA + Alt+X
Clockwise open circle arrowRefresh, reload, rotate rightU+21BB↻21BB + Alt+X
Anticlockwise gapped circle arrowReset, revertU+27F2⟲27F2 + Alt+X
Clockwise gapped circle arrowReload, retry, loopU+27F3⟳27F3 + Alt+X
Anticlockwise top semicircle arrowUndoU+21B6↶21B6 + Alt+X
Clockwise top semicircle arrowRedoU+21B7↷21B7 + Alt+X
Arrow pointing rightwards then curving upwardsBranch up, escalateU+2934⤴2934 + Alt+X
Arrow pointing rightwards then curving downwardsBranch down, drill inU+2935⤵2935 + Alt+X
Arrow pointing downwards then curving leftwardsReturn, line breakU+2936⤶2936 + Alt+X
Arrow pointing downwards then curving rightwardsNested item, sub-stepU+2937⤷2937 + Alt+X
Rightwards arrow over leftwards arrowSwap, exchange, transferU+21C4⇄21C4 + Alt+X
Leftwards arrow over rightwards arrowSwap (mirrored)U+21C6⇆21C6 + Alt+X
Upwards arrow leftwards of downwards arrowSort, sync, up/downU+21C5⇅21C5 + Alt+X
Downwards arrow leftwards of upwards arrowSync (mirrored)U+21F5⇵21F5 + Alt+X
Left right arrowTwo-way, resize, rangeU+2194↔2194 + Alt+X
Up down arrowVertical resize, sortU+2195↕2195 + Alt+X
Anticlockwise triangle-headed right U-shaped arrowSolid undo, U-turnU+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.

Text arrow versus emoji arrow using Unicode variation selectors

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">&#8617;&#xFE0E;</a>   <!-- always the plain text arrow -->
<span>&#8617;&#xFE0F;</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 + 21BB gives ↻. 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>&#8635; Refresh</button>
<a href="#top">&#8617;&#xFE0E; 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">&#8635;</span></button>

Background on how these code points are organised: what Unicode is.

Troubleshooting

ProblemFix
My arrow turned into a colour emojiAppend the text variation selector, U+FE0E — in HTML, &#xFE0E; after the character
I want the colour emoji and get plain textAppend U+FE0F instead
Alt + 0NNN does nothingThese 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 boxFont coverage. ⮌ and the gapped circle arrows are the least widely supported — see symbols showing as boxes
=CHAR(8635) returns the wrong thing in ExcelUse UNICHAR, not CHAR
Alt + X converted the wrong charactersWord 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 buttonCurved arrows have different optical centres than text. Nudge with vertical-align or line-height rather than padding
Screen reader announces a long arrow nameWrap 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, &#8617;&#xFE0E;. 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.

Leave a Comment