← Back to Blog

Workflows & Productivity | Aug 17, 2026 | 7 min read

How Does Right-to-Left Text Behave on the Windows Clipboard?

By Khushi Yadav

How Does Right-to-Left Text Behave on the Windows Clipboard? — Edge Drop Guide

Arabic, Hebrew, Persian, and other right-to-left (RTL) scripts do not only change alignment. They travel with bidirectional (bidi) controls: invisible Unicode characters and, in HTML copies, dir attributes. A paste can look correct in Word, reverse a phone number in Notepad, and scramble a file path in a terminal — all from the same Ctrl+C.

Windows clipboard history will store the text, including those marks, as long as the item is under 4 MB and history is on. It will not show the marks in the Win+V preview. The list is not a bidi debugger.

This guide explains what is on the clipboard, how to inspect it, and how to paste mixed English-plus-RTL strings without silently reordering digits.

Two payloads: characters and markup

A copy from a webpage or from Word often places at least two flavors on the clipboard:

  1. Plain text (Unicode) — the letters, digits, punctuation, and any bidi *control characters*.
  2. HTML — the same visible text plus <p dir="rtl">, <bdi>, <span dir="ltr">, and inline styles.

Windows history accepts text, HTML, and bitmap. The destination picks a flavor. Word and Outlook often prefer HTML and therefore keep direction. Notepad, many terminals, and a lot of web inputs take plain text and then apply their *own* paragraph direction, which may be left-to-right.

That mismatch is why “it looked fine in the browser” is not a test.

How Windows treats rich text versus plain text is the general model. RTL is the case where the “plain” flavor is still not semantically plain.

The marks that survive a paste

Microsoft’s globalization documentation lists the common controls:

CharacterCode pointRole
LEFT-TO-RIGHT MARK (LRM)U+200EInvisible strong LTR
RIGHT-TO-LEFT MARK (RLM)U+200FInvisible strong RTL
ARABIC LETTER MARK (ALM)U+061CArabic-context strong mark
LRE / RLE / PDF (legacy embeddings)U+202A / U+202B / U+202COlder embedding pair
LRI / RLI / FSI / PDIU+2066–U+2069Isolates (preferred over embeddings)

These are not spaces. A hex dump or a “show Unicode” command is required to see them. Word’s Show/Hide (Ctrl+Shift+8) does not reliably flag them. VS Code will show them only if a Unicode highlight extension or a regex search is used.

Microsoft’s example: in a mixed string, placing LRM before a number and RLM after it can keep 4 in a stable LTR run between RTL words. Without the marks, the Unicode Bidirectional Algorithm assigns the number a direction from neighboring strong characters, and the display order changes.

HTML entities &lrm; and &rlm; become the same characters when the HTML flavor is reduced to text.

What Win+V will show

Win+V previews a snippet. Isolated marks are invisible, so two clips that differ only by an RLM look identical. Pasting each into Notepad can still differ.

Practical implications:

  • Do not trust the preview for mixed names, invoices, or paths.
  • Pins survive restart. Pinning a “corrected” RTL address is useful; pinning the broken version next to it is confusing because they look the same.
  • History holds 25 items. Debugging by copying five variants will evict other clips. Use a file.
  • Bitmaps (screenshots of correctly rendered text) are not editable text. They are a last-resort record of how something *looked*, not a source for the next paste.

How to see what is currently on your clipboard covers live clipboard versus history. For bidi, “see” means inspect code points, not glance at the flyout.

Inspect the string before the important paste

PowerShell

$t = Get-Clipboard -Raw
[int[]][char[]]$t | ForEach-Object { '{0:X4}' -f $_ }

Look for 200E, 200F, 061C, 202A–202E, 2066–2069. Also look for 00A0 (no-break space) and 202F (narrow no-break space), which often ride along from web copy.

To strip the common marks for a destination that should be visually LTR (a config file, a URL, a log line):

$clean = (Get-Clipboard -Raw) -replace '[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]',''
Set-Clipboard -Value $clean

Only do this when the destination cannot honor bidi. Stripping marks from a Hebrew paragraph that will be published as Hebrew is the wrong fix; the destination needs dir="rtl" instead.

VS Code

Paste into an untitled file. Search with regex:

[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]

Replace with empty if the file is a source file. Keep the marks if the file is prose in an RTL language.

Regex and find-replace beats a 'smart' clipboard is the bulk version of this pass.

Destination-by-destination behavior

Word and Outlook desktop

These usually consume HTML and respect dir. A copy from a well-marked webpage often pastes with the correct paragraph direction. Problems start when:

  • The paste is Keep Text Only, which drops dir but keeps any Unicode marks in the text.
  • A left-aligned template forces LTR on an RTL paragraph.
  • A number, plus sign, or phone number sits at the edge of a mixed run.

Fix in Word: select the paragraph > Paragraph > direction (Right-to-Left), or use the bidi buttons when an RTL editing language is enabled. Do not “fix” by typing extra spaces around digits; that fails in the next app.

Browsers and contenteditable boxes

Many web apps strip dir on paste “for security” or flatten to text. The marks remain. The box then inherits the page direction (often LTR). Mixed strings flip.

If the app has an official RTL toggle, use it. If not, paste the Arabic or Hebrew run without adjacent English, then type the English separately — two pastes, two direction contexts.

Slack, Teams, and similar chat

These flatten heavily. Expect lost dir and surviving marks. For a quote that must stay readable, paste into Word or a notes app that honors RTL, take a screenshot only if the audience needs pixels, and keep the source text in a file. How to quote a chat log without leaking extras still applies: timestamps and display names are extra.

Terminals and code editors

Treat RTL prose as unwelcome in shells. Paths, URLs, and JSON must be LTR. Strip marks. Pasting into terminals: always plain text is the rest of the hygiene.

Source code comments in Arabic or Hebrew belong in an editor with bidi support, not in Win+V.

Excel

Cells have alignment, not a full bidi document model. A value that looks reversed may still be stored correctly; a text cell that includes marks may sort and search surprisingly. Paste values, then set alignment. For identifiers (IBAN, national ID), store digits as text in a single LTR run and do not mix labels in the same cell.

Windows language settings that change editing, not the clipboard

Adding Arabic or Hebrew under Settings > Time & language > Language & region enables:

  • An IME / keyboard
  • RTL paragraph controls in Office
  • Sometimes different digits (European vs Arabic-Indic)

It does not change how many items history stores, the 4 MB cap, or the restart wipe. Win+V still works the same. Win+V on multiple languages and IME keyboards covers shortcut clashes.

Suggested actions on copied phone numbers can fire on digit runs inside RTL text. If those pop-ups are noise, turn Suggested actions off on the Clipboard settings page. History stays on.

Playbook for mixed strings

  1. Decide whether the destination is a document (keep direction) or a data field (strip controls).
  2. Copy once from the source.
  3. If the destination is Office and the preview in Word looks right, paste with source formatting and stop.
  4. If the destination is a form, terminal, or CSV, paste into VS Code, strip bidi controls, verify digits are in logical order (the order they should be typed), then copy that result.
  5. For names on an envelope or slide, prefer the document path. Logical order in a dump file may look “backwards” to a native reader if direction was stripped.
  6. Do not pin secrets. An RTL one-time message is still a secret.
  7. Do not use cloud clipboard sync as a translation bridge. Microsoft documents sync as text. Marks travel; meaning is not improved.

A local shelf is optional when a correctly directed snippet and a stripped data version must both exist for an hour. Edge-Drop can hold those two cards. It will not interpret dir. Two named files (address.rtl.txt versus address.ascii.txt) are clearer if the pair must survive a reboot. Unpinned history will not.

What not to do

  • Do not insert random LRM/RLM characters until it “looks right” in one app. The next app will disagree.
  • Do not convert Arabic or Hebrew to images as a general strategy. Images fail search, copy, and accessibility.
  • Do not assume “paste as plain text” is the RTL fix. It often *causes* the flip by dropping dir.
  • Do not store national ID numbers in pinned history.

When the job is a whole article, write it in an editor with a document-level direction. When the job is one field, strip marks and keep the value in one script as much as possible.

The click-path is in How to Copy a List and Keep the Bullets.

Related reading

Sources

Khushi Yadav
Written by Khushi Yadav · Author & Content Writer

Khushi Yadav is a B.Tech Computer Science Engineering student interested in technology, software, and exploring practical applications of computer science. She enjoys learning new concepts and contributing to technology-focused projects.

GitHub · LinkedIn

Copy. Stack. Drop.

Transform your clipboard into an interactive edge shelf. Stack, pin, and drag assets into any app with zero friction.

Download for Windows Get from Microsoft Store

How to Install Guide · First 10 Minutes Guide · Drag & Drop Guide · Edge-Drop vs Win+V · Support

Free · Lightweight · Privacy First
Find us on CodeHype