Nerd Font Unicode characters not rendered in Claude Code UI (statusline, chat, file views)

Status Closed — not planned
Maintainer reply None cached
Activity 11 comments · opened Apr 16, 2026 · closed Jun 22, 2026

This is a reopen of #9907, which was closed as stale after 7 days of inactivity. The issue is still present as of April 2026.

Problem

Claude Code does not render Nerd Font Unicode characters (Private Use Area codepoints like U+E0A0, U+F302, etc.) anywhere in its UI. They appear as blank spaces or boxes — even when the system terminal font is a patched Nerd Font and renders them correctly in every other context.

Affected areas

  • Statusline — custom statusline scripts that output Nerd Font icons (e.g. ` for git branch, ` for PRs) show as blank
  • Chat messages — Nerd Font glyphs in assistant or user messages are invisible
  • File views — config files for Starship, Alacritty, Kitty, etc. that contain Nerd Font symbols display as blanks, making it impossible to tell whether an icon is present or missing (as described in #9907)

Why this matters

Claude Code has a customisable statusline (via ~/.claude/statusline.sh) that many teams use to surface git state, PR status, context window usage, and model info. Nerd Font icons are the standard way to add meaningful, space-efficient visual cues to terminal UIs.

When Claude Code can't render a Nerd Font character in a file view, it silently shows a blank — causing wasted time debugging configs that are actually correct (detailed in the original issue).

Expected behaviour

Either:

  1. Render Nerd Font / PUA Unicode characters using the system font or a bundled font that includes them, OR
  2. Show the Unicode code point (e.g. <U+E0A0>) as a fallback so the character is at least visible

Environment

  • Claude Code latest (April 2026)
  • macOS, iTerm2 with JetBrains Mono Nerd Font — same profile renders Nerd Fonts correctly outside Claude Code
  • Original report: #9907 (closed stale 2025-10-19)

Reproduction

  1. Add a Nerd Font icon to ~/.claude/statusline.sh output, e.g. printf " branch" (U+E0A0)
  2. The statusline shows a blank where the icon should be
  3. Run echo " branch" in the same terminal — icon renders correctly

View original on GitHub ↗

10 Comments

github-actions[bot] · 4 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/9907
  2. https://github.com/anthropics/claude-code/issues/6870
  3. https://github.com/anthropics/claude-code/issues/48805

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

Liquidmasl · 4 months ago
Found 3 possible duplicate issues: 1. Claude Code cannot render Nerd Font Unicode characters, causing confusion when editing terminal configurations #9907 2. Claude Code cannot output Apple logo Unicode character (U+F8FF) in responses #6870 3. [[FEATURE] Terminal font family setting in desktop app #48805](https://github.com/anthropics/claude-code/issues/48805) This issue will be automatically closed as a duplicate in 3 days. If your issue is a duplicate, please close it and 👍 the existing issue instead To prevent auto-closure, add a comment or 👎 this comment 🤖 Generated with Claude Code

Well it kinda is a douplicate, but the other was closed as stale and it asked to be reopened. so i did. so no please do not close this issue. that would be a vicous cycle

Liquidmasl · 4 months ago

Still an issue, this s a bump so this aint get closed again!

Liquidmasl · 4 months ago

^ bump

Liquidmasl · 3 months ago

nother bump

Liquidmasl · 3 months ago

Still reproducing on Claude Code 2.1.141 (macOS, iTerm2, JetBrains Mono Nerd Font).

Just hit this in a session — asked Claude to print a handful of Nerd Font glyphs to verify rendering (` U+E725, U+F126, U+F418, U+E0A0). All came through as blank cells separated by commas. Same glyphs render correctly with printf` in the same terminal outside the TUI, and standard Unicode symbols (✓ ✗ → ★ ●) render fine inside it — so this is specifically a PUA codepoint width/rendering issue in the TUI layer, not a font or terminal problem.

The fallback suggestion in the original report (show <U+E0A0> when the glyph can't render) would already be a big improvement over silent blanks — at least configs become debuggable.

satyasairay · 3 months ago

Additional Windows repro for BMP Private Use Area chars being hidden from Claude Code's Read tool path.

This is not just a font/rendering issue. In this repro, Claude Code's Read tool did not expose BMP PUA characters to the model, even though Bash/Python in the same Claude Code session detected them from the same file.

Environment:

  • Claude Code: 2.1.101
  • OS: Windows 11 Pro 10.0.26200
  • Node: v22.22.2
  • Shell: PowerShell
  • Model: Claude Sonnet 4.6

Minimal repro:

  1. Create a file containing BMP PUA chars:
python -c 'from pathlib import Path; q=chr(34); nl=chr(10); Path("pua-test.md").write_text(f"Prompt: \ue203{q}Explain overfitting{q}\ue204\ue206{nl}", encoding="utf-8")'
  1. Verify the file really contains PUA chars:
python -c 'from pathlib import Path; s=Path("pua-test.md").read_text(encoding="utf-8"); print("\n".join(f"{i+1}: {repr(ch)} U+{ord(ch):04X}" for i,ch in enumerate(s) if ord(ch)>127))'

Actual output:

9: '\ue203' U+E203
31: '\ue204' U+E204
32: '\ue206' U+E206
  1. Ask Claude Code to inspect the same file using only Read:
Use only the Read tool, not Bash/Python/cat. Read ./pua-test.md and list every non-ASCII Unicode character you find.

For each one, show:
- the visible character if any
- Unicode codepoint like U+E203
- where it appears in the line

If you find none, say exactly: "No non-ASCII characters found."

Actual behavior:

Claude Code's Read path displayed the line as:

Prompt: "Explain overfitting"

It did not report U+E203, U+E204, or U+E206. It instead inferred the quotes might be smart quotes U+201C/U+201D, but the quotes are normal ASCII quotes.

  1. Ask Claude Code to inspect the same file using Bash/Python instead of Read:
Now use Bash/Python on the same file ./pua-test.md and print every non-ASCII Unicode character with its 1-based position and codepoint.

Do not use the Read tool this time.

Actual output from Claude Code Bash/Python:

pos    9: '\ue203' U+E203
pos   31: '\ue204' U+E204
pos   32: '\ue206' U+E206

Expected behavior:

The Read tool/model-visible text path should preserve or explicitly surface valid UTF-8 BMP PUA characters. If Claude Code cannot render them, a fallback such as <U+E203>, <U+E204>, <U+E206> would be safer than silently hiding them.

Impact:

Claude Code missed hidden PUA markers during a Markdown cleanup task. The characters were visibly present in the editor, but Claude Code did not identify them until given a screenshot or raw Python codepoint output.

nicolaschapados · 3 months ago

This issue remains a problem, even when setting the "custom monospaced font for code and terminal" to a font that contains all custom characters:

<img width="651" height="68" alt="Image" src="https://github.com/user-attachments/assets/2f13aa89-3f51-47d1-91b1-a5259aab549c" />

Here's what Powerlevel 10k (oh-my-zsh plugin) gives on a regular iTerm2 with that font:

<img width="880" height="36" alt="Image" src="https://github.com/user-attachments/assets/03ec5e5b-457e-4f11-b5ef-368512eaa46f" />

whereas the same thing in Claude Code Terminal renders as:

<img width="881" height="41" alt="Image" src="https://github.com/user-attachments/assets/d4de53b1-f429-4fe0-996c-770fd519e099" />

github-actions[bot] · 2 months ago

Closing for now — inactive for too long. Please open a new issue if this is still relevant.

Liquidmasl · 2 months ago

oh common. I need notifications for stale tags...

i have stopped bumping this since actual mentiones showed up and now this is closed again.
This HYPER agressive closing of issues is annoying af. Guess a bump cron job is necessary?

Showing cached comments. Read the full discussion on GitHub ↗