Official sources · as of 2026-11-12

Claude Code in Arabic: the answer language and right-to-left display

As of 2026-11-12, Claude Code can answer in Arabic: its settings reference has a language setting whose value is passed to the model verbatim as an instruction to always answer in that language, and the value is not validated. Anthropic's help center adds that you can chat with Claude in any language. Whether Arabic is joined and ordered right to left in your terminal is decided by the terminal itself, so below are the official statements from each terminal and the settings you can copy.

Updated 2026-11-13

Point this tool at the QCode endpoint — one key for Claude, GPT and Chinese models.

#language setting#Arabic CLAUDE.md#Terminal RTL#/context check

Four official points

language

The answer language is a setting key

Claude Code's settings reference says the value is passed to the model verbatim as an instruction to always answer in that language. There is no fixed list, so any language name the model can read works. Nothing is validated, so a misspelled name reaches the model as written. The same key also sets the language of voice dictation, which has its own fixed list of supported languages, and of auto-generated session titles.

200 lines

How long an Arabic CLAUDE.md should be

The official memory doc says CLAUDE.md files are plain text read at the start of every session, and advises targeting under 200 lines per file: longer files consume more context and reduce adherence. An Arabic rule block follows the same limit.

UAX #9

Display order comes from the bidi algorithm

The Unicode Bidirectional Algorithm (UAX #9) specifies how text containing right-to-left characters is positioned and reordered line by line. W3C's internationalization article says things go wrong when a phrase in the opposite direction sits inside a block of text, and URLs, file names and paths are the common examples.

On by default

iTerm2's RTL option

iTerm2's official documentation lists an option called Enable support for right-to-left scripts: when it is on, Arabic and Persian are reordered for display and their letters are joined in cursive form instead of being drawn as plain left-to-right text. The documentation says it is on by default.

The answer language and the display direction are two different things

As of 2026-11-12 the answer has two layers. The first is which language the model speaks: the language setting hands its value to the model verbatim as an instruction, so writing arabic asks for Arabic answers, and the help center adds that you can chat with Claude in any language. The second is how the terminal or editor draws the text: Arabic letters run right to left and neighbouring letters join, and that step belongs to the terminal emulator's own bidi and shaping code, not to Claude Code. The same Arabic answer can look right in iTerm2 and come out reversed or with broken letters in a terminal that has no RTL support yet.

Set the language first, then deal with display

Several changelog entries concern Arabic directly: 2.1.280 fixed the invisible-character cleanup removing the zero-width non-joiner that Persian and Arabic use; 2.1.295 fixed text with tabs or bidirectional control characters losing its end at the screen edge or drawing over nearby rows; 2.1.290 fixed the “You should know” notes being written in English regardless of the language setting. When you paste text carrying bidirectional control characters, Claude Code removes those invisible characters on Enter before sending, but it keeps the joiners that Persian and Indic scripts use.

A few dates from the official record

2017-06-13

xterm.js opened issue #701, Support RTL languages, which is still open; VS Code's integrated terminal runs on it, and the issue records that RTL characters were rendered in reverse, left to right.

2019-05-07

Windows Terminal opened issue #538, Support Right to Left (RTL) text, which is still open; the reproduction types English first and Arabic after it, and the RTL text runs into the English written before.

2020-01-28

kitty 0.16.0 added the force_ltr option, which turns off displaying text in RTL scripts in right-to-left order; the earlier 0.10.0 made a partial fix for Arabic rendering, and the changelog says rendering Arabic will never be perfect but is now at least readable.

Confirmed vs. what you verify yourself

Confirmed from official text

① Answer language: the settings reference says the value of language is passed to the model verbatim, is not validated, has no fixed list, and that session titles follow the language of your conversation while it is unset. ② Any language: the help center says you can chat with Claude in any language whether or not you changed the language setting. ③ CLAUDE.md: plain text, read at the start of every session, target under 200 lines, block-level HTML comments stripped before injection, and @path/to/import pulls in other files. ④ Invisible characters: bidirectional controls and zero-width spaces that arrive with a paste are removed on Enter, while the joiners used by Persian and Indic scripts are kept. ⑤ Terminals: iTerm2 has an RTL option that is on by default; kitty has force_ltr; the RTL issues in Windows Terminal and xterm.js are still open.

What the docs leave open — test it yourself

Claude Code's documentation does not describe how its own terminal interface lays out Arabic, and it does not promise that any one terminal will display it correctly; iTerm2 files its RTL option under experimental settings. Whether one Arabic answer is joined and whether its punctuation lands on the correct side depends on that terminal's bidi and shaping implementation and on whether the font carries Arabic glyphs. Running that test before your team picks a terminal is more reliable than judging from a screenshot.

Choosing a terminal

You want Arabic to work out of the box

According to iTerm2's official documentation, its RTL option is on by default: Arabic and Persian are reordered for display and their letters are joined. On macOS, start by checking that option if you want the least setup.

You are already in another terminal

Read that terminal's official statement first: kitty has force_ltr, which turns off RTL order; the RTL issues in Windows Terminal and in xterm.js, the engine behind VS Code's integrated terminal, are still open. When display goes wrong, put commands and paths in backticks or code blocks so they stand on their own line, which avoids most bidi traps. For using the API without a subscription, see /claude-code-without-subscription.

How to set it: language, CLAUDE.md, display

① Set the answer language: write {"language": "arabic"} in ~/.claude/settings.json. The official examples use lowercase language names such as japanese, spanish or french; the value is not validated, so a typo raises no error and reaches the model as written; its scope is any settings file, so it can also live in project or local settings. ② Write the Arabic rule: put one line of language rules in the CLAUDE.md at the repository root, for example اكتب كل الشرح بالعربية. اكتب الكود وأسماء الملفات والأوامر بالإنجليزية. — the first line asks for Arabic explanations, the second keeps code, file names and commands in English. CLAUDE.md is plain text read at the start of every session, and the official advice is to stay under 200 lines. ③ Check and display: run /context all in a session and confirm the file under Memory files; then open a new session, give one real task in Arabic, and watch whether the terminal joins the letters and orders them correctly. For a quick check, ask Claude to reply with the word مرحبا (hello): in a terminal that handles Arabic, its letters are joined and م is the rightmost letter. If the display is wrong, switch terminals or adjust the terminal as its own documentation describes.

On QCode

QCode serves Claude models such as claude-fable-5-2: in Claude Code, set ANTHROPIC_BASE_URL to https://api.qcode.cc/api and the model to claude-fable-5-2; the Arabic settings and CLAUDE.md stay on your machine and do not change when you switch models. One QCode key offers both an Anthropic-compatible and an OpenAI-compatible interface; Claude models are served only through the Anthropic one. QCode bills per token, with per-model rates on /models. For a one-time quota with no monthly plan, see Pay-as-you-go Packs at /pay-as-you-go.

FAQ

Does Claude Code support Arabic?

Yes. The settings reference says the value of language is passed to the model verbatim as an instruction to always answer in that language, that there is no fixed list so any language name the model can read works, and the help center adds that you can chat with Claude in any language and that Claude will converse with you in the language you use.

How do I make Arabic the default answer language?

Add {"language": "arabic"} to ~/.claude/settings.json. The value is not validated, so it reaches the model as written; its scope is any settings file, so project or local settings can carry it too; while it is unset, session titles follow the language of your conversation. To pin the repository convention as well, add one Arabic rule line to CLAUDE.md.

The Arabic letters are not joined and the order looks reversed. What now?

That is the terminal's bidi and shaping work, not the model output. The RTL option documented by iTerm2 is on by default and does both the reordering and the cursive joining; kitty has force_ltr to turn RTL order off; the RTL issues in Windows Terminal and in xterm.js, which VS Code's integrated terminal uses, are still open. When display goes wrong, prefer a terminal whose own documentation covers RTL, and put commands and paths in backticks or code blocks.

Can CLAUDE.md be written in Arabic?

Yes. The official doc says CLAUDE.md files are plain text read at the start of every session, with no restriction on natural language; keep each file under 200 lines, since longer files reduce adherence; block-level HTML comments are stripped before injection, so do not hide rules in comments. Run /context all to confirm the file actually loaded.

English paths and commands inside an Arabic answer push the punctuation to the wrong end. Why?

Latin fragments inside Arabic are bidirectional text: the Unicode Bidirectional Algorithm reorders by character direction, and W3C names URLs, file names and paths as the phrases that most often go wrong, with mirrored characters such as brackets changing shape by direction. In practice, put those fragments on their own line or in backticks or code blocks instead of letting them sit tight against an Arabic sentence.

Which language should code, identifiers and commit messages use?

That is a team convention, not a vendor rule. A common setup keeps explanations, plans and review comments in Arabic while code, identifiers, file names and commit messages stay in English, which avoids transliteration and encoding trouble when identifiers would otherwise carry Arabic letters. Write it into CLAUDE.md, naming which layer uses which language; that is more reliable than repeating it in every conversation.

Sources

Claude Code official docs: the settings reference (the language entry), settings, memory (CLAUDE.md), interactive-mode (invisible characters) and the official changelog (2.1.280, 2.1.290, 2.1.295, 2.1.300). Anthropic help center: How to use Claude in your preferred language. Terminals and editors: iTerm2's official documentation, kitty's official changelog, the official repository issues of Windows Terminal, xterm.js and VS Code; Unicode UAX #9 and W3C's article on bidirectional text. QCode: qcode.cc/models and the endpoints page on docs.qcode.cc. All fetched on 2026-11-12.

Ready to run Claude Code in Arabic?

Create a QCode key, point Claude Code at it, and pay per token. No monthly plan? Pay-as-you-go Packs start at $4 for a one-time quota used within 7 days; if you already hold a Personal Plan, add a booster pack instead.

Not sure where to start?

Try it for a week

Small Pack: $4 for $30 of quota, valid 7 days

Use it every day

Starter: $9.00/month with $5 of quota every day — just $0.060 per $1 of quota, vs about $0.113 for the Medium Pack