🔓 unclaimed — this page was auto-generated from GitHub. Are you the creator?
Claim this page →
claude-desktop-rtl
Smooth right-to-left (Hebrew/Arabic/Persian) for Claude Desktop & claude.ai | prose, tables & math - on macOS and Windows.
git clone https://github.com/liorshaya/claude-desktop-rtl
Smooth right-to-left (Hebrew · Arabic · Persian) for Claude Desktop & claude.ai — from one pure engine.
Claude writes beautiful Hebrew and Arabic — then renders it left-to-right: bullets on the wrong side, sentence-final punctuation jumping across the line, tables flowing backwards. Claude RTL fixes that everywhere Claude runs, and it does it without ever touching your text or your network.
Without RTL the same reply renders left-to-right — reversed table columns, punctuation on the wrong side. With it, every block reads correctly.
Why it's different
- 🎯 Per-block direction, done right. Each paragraph, list, table and quote decides its own direction from its own content. English blocks stay LTR and Hebrew blocks flip RTL — in the same document, with no global flip (the bug every other tool has).
- 🔒 Zero network. Zero telemetry. Zero stored data. Your conversations never leave your machine. Copy and Ctrl-F stay byte-for-byte — we never inject invisible Unicode marks.
- 🛡️ Safe by construction. Your original Claude is never modified. We patch a separate copy, and it survives Claude updates automatically.
- 🖥️ Desktop and browser, one engine. A one-click menu-bar app on macOS and a tray app on Windows for Claude Desktop, plus a userscript for claude.ai in any browser — all sharing the exact same bidi engine.
- 🧪 A pure, unit-tested core. The bidi intelligence (
engine/) is DOM-free and covered by a torture-test corpus, decoupled from how it's delivered.
What it handles
| Surface | Behaviour |
|---|---|
| Prose (paragraphs, headings) | Per-block base direction via the browser's own first-strong |
| Lists (incl. nested) | Markers + indent hang on the content side; smart per-item direction |
| Tables | Column order follows the header; every cell aligns to the table |
| Block quotes | The bar/indent move to the content side |
| Numbers, currency, %, dates | Ordered correctly; never force a Hebrew line LTR |
Arrows (→) in RTL | Mirrored visually — the character itself is untouched |
| Code blocks | Stay LTR by design (RTL would scramble syntax) |
| Input / edit boxes | dir="auto", instantly, with no flicker |
| Mixed English/Hebrew doc | Each block self-determines — no global flip |
✅ Supported platforms
| Surface | Requirements |
|---|---|
| 🍎 macOS Desktop | macOS 13 (Ventura) or later. The prebuilt .dmg is for Apple Silicon; Intel Macs can build from source. |
| 🪟 Windows Desktop | Windows 10 or 11 (64-bit). Patches both Claude installs — the classic installer from claude.ai and the Microsoft Store (MSIX) build. |
| 🌐 Browser — claude.ai | Any OS. Chrome, Edge, Firefox or Safari with a userscript manager. |
🚀 Install
The one-click manager on macOS (menu bar) and Windows (tray) — installs, auto-updates and removes RTL, no terminal needed.
macOS Desktop — the easy way (recommended)
A menu-bar app installs, updates, and removes RTL with one click. It needs no Node and no terminal.
Option A — download the app (fastest)
- Download
Claude-RTL.dmgfrom the latest release. - Open it and drag Claude RTL onto Applications.
- First launch only: right-click the app → Open → Open. (macOS Sequoia: System Settings → Privacy & Security → “Open Anyway”.) This one-time step exists because the app is open-source and ad-hoc signed, not Apple-notarized — Option B skips it entirely.
Option B — build from source (no Gatekeeper prompt)
git clone https://github.com/liorshaya/claude-desktop-rtl.git
cd claude-desktop-rtl/gui && ./build.sh # one-time build (needs Node + Xcode CLT)
open "dist/Claude RTL.app"
Then, from the menu-bar app:
- Click Install RTL — it patches a copy at
~/Applications/Claude-RTL.app. - macOS asks for your keychain password once → click Always Allow (it's your machine, your keychain).
- Click Open Claude-RTL. That's it — smooth RTL.
Toggle “Keep RTL after Claude updates” and it re-applies itself whenever Claude updates. Check for updates (under Details) fetches newer builds of the app itself.
The original Claude in
/Applicationsis never touched. “Open Claude-RTL” quits the original first (they can't run together). A blank first window? Quit (⌘Q) and reopen.
Windows Desktop
A tray app installs, updates, and removes RTL — no Node, no terminal, nothing to install first (a portable runtime is bundled in the installer).
- Download
ClaudeRTL-Setup.exefrom the latest release and run it. It's a per-user install — no admin needed. - Launch Claude RTL from the Start menu and click the button to patch Claude. The app detects how Claude is installed and applies RTL in place, backing up the originals first.
- Open Claude — Hebrew, Arabic and Persian render RTL.
Toggle “Keep RTL after Claude updates” and it re-applies itself automatically after every Claude update.
Works with both Claude installs: the classic
.exefrom claude.ai and the Microsoft Store (MSIX) build. On the Store build, applying RTL needs a one-time admin approval (UAC) — it re-signs Claude with a local certificate so Cowork keeps working, and “Restore original” fully reverts everything. Your original Claude is always backed up.
Prefer the command line? The PowerShell pipeline is documented in desktop/windows/README.md.
Browser — claude.ai (any OS)
Works in Chrome, Edge, Firefox, Safari — anywhere with a userscript manager.
npm run build # builds dist/claude-rtl.user.js
- Install Tampermonkey (or Violentmonkey).
- Open
dist/claude-rtl.user.jsand install it (or paste its contents into a new script). - In the extension, enable “Allow User Scripts” (a Chrome/Edge requirement).
- Reload
claude.ai.
CLI — advanced (macOS)
desktop/patch.sh --install # patch (build a copy + inject RTL)
desktop/patch.sh --watch # auto-re-apply on Claude updates
desktop/patch.sh --status # original / patched / watcher state
desktop/patch.sh --uninstall # remove the copy (original untouched)
🧠 How it works
The browser already runs a complete Unicode Bidi Algorithm. We don't reimplement it — we make the direction & isolation decisions and let the renderer reorder. CSS unicode-bidi: plaintext per leaf block is the sole base-direction mechanism for prose, so every block self-determines and the container is never force-flipped. The desktop app injects the same engine into Claude's renderer bundles and flips only the window-chrome direction in the main process.
Full design: ARCHITECTURE.md.
⚠️ Limitations (v1)
- Real code blocks stay LTR (deliberate — RTL scrambles braces, indentation, operators).
- Desktop Artifacts render in a cross-origin iframe the desktop payload can't enter yet (the browser userscript does cover them).
- No bundled Hebrew font yet — macOS already renders Hebrew via system fonts.
- See ARCHITECTURE.md §15 for the full list.
🗺️ Roadmap
- ✅ Engine · browser userscript · macOS desktop (menu-bar app, auto-update watcher, signing,
.dmg) · Windows desktop (tray app + installer, patches both the classic and Microsoft Store installs, update watcher) - ⏳ Onboarding polish · styled
.dmg· screenshot gallery
🤝 Contributing
PRs are very welcome — this is open source. The engine is pure and unit-tested; the bar is a green node --test and a small, single-purpose change. Start with CONTRIBUTING.md, and if Claude changes its DOM, the adopt-a-new-Claude-version runbook shows exactly how to update the selectors.
🔏 Code signing
Windows release artifacts are governed by the project's Code Signing Policy (team roles, build process, privacy). Code signing is being set up free of charge through the SignPath Foundation OSS program.
📄 License
MIT © Lior Shaya
// compatibility
| Platforms | cli, api, desktop, web |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | MIT |
| Pricing | open-source |
| Language | JavaScript |
// faq
What is claude-desktop-rtl?
Smooth right-to-left (Hebrew/Arabic/Persian) for Claude Desktop & claude.ai | prose, tables & math - on macOS and Windows.. It is open-source on GitHub.
Is claude-desktop-rtl free to use?
claude-desktop-rtl is open-source under the MIT license, so it is free to use.
What category does claude-desktop-rtl belong to?
claude-desktop-rtl is listed under devtools in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/claude-desktop-rtl)
// retro hit counter
[](https://claudeers.com/claude-desktop-rtl)
// reviews
// guestbook
// related in Developer Tools
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Curs…
Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA
🙌 OpenHands: AI-Driven Development
AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…