[BUG] Bug Report: RTL Text (Persian/Arabic) Renders Incorrectly in Claude Code Terminal Output

Resolved 💬 3 comments Opened Apr 9, 2026 by izaddoost Closed Apr 12, 2026

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

  1. Open Claude Code in VSCode's integrated terminal
  2. Ask a question in Persian or ask Claude to respond in Persian
  3. 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 .md file 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

  1. Open VSCode
  2. Start Claude Code in VSCode
  3. Ask Claude Code a question in Persian (Farsi) or

ask it to respond in Persian

  1. Observe the response in the output panel
  2. Copy the same response into a .md file and open it in VSCode
  3. 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_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗