[BUG] Bug Report: RTL Text (Persian/Arabic) Renders Incorrectly in Claude Code Terminal Output
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Hi Anthropic Team,
I'd like to report a display bug in Claude Code regarding RTL (Right-to-Left) language rendering.
Summary
When Claude Code responds in Persian (Farsi) or Arabic, the text renders incorrectly in the terminal — characters and words appear in reversed or jumbled order due to missing Bidi (Unicode Bidirectional Algorithm) support.
Environment
- Tool: Claude Code (CLI)
- Terminal: VSCode integrated terminal
- OS: [Your OS here]
- Language used: Persian (Farsi / fa)
Steps to Reproduce
- Open Claude Code in VSCode's integrated terminal
- Ask a question in Persian or ask Claude to respond in Persian
- Observe the response — RTL text is displayed in incorrect order
Expected Behavior
Persian/Arabic text should render right-to-left, with correct character and word ordering.
Actual Behavior
Text appears garbled or reversed due to the terminal rendering it as LTR.
Additional Notes
- The same response copied into a
.mdfile and opened in VSCode renders correctly - This confirms the issue is in the terminal output layer, not in Claude's response itself
- Most terminals lack proper Bidi support, so a potential workaround could be applying a Bidi algorithm on Claude Code's side before printing output (e.g., using a library like
fribidi)
This is a significant usability issue for Persian and Arabic-speaking users of Claude Code. I hope it can be addressed in a future release.
Thank you!
What Should Happen?
Since the raw text from Claude is correct (confirmed by rendering
the same output in a .md file which displays properly), the fix
should be on Claude Code's output rendering layer.
Suggested fixes depending on implementation:
- If Claude Code uses the integrated terminal: apply a Bidi
algorithm (e.g., fribidi) before printing to reorder RTL
characters correctly for LTR terminals
- If Claude Code uses a Webview/panel: add dir="auto" to the
response container
The simplest approach would be to detect the response language
and reorder RTL output accordingly before rendering.
Error Messages/Logs
Steps to Reproduce
- Open VSCode
- Start Claude Code in VSCode
- Ask Claude Code a question in Persian (Farsi) or
ask it to respond in Persian
- Observe the response in the output panel
- Copy the same response into a .md file and open it in VSCode
- Compare — .md renders correctly, Claude Code output does not
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.96 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗