All guidesGuide

Fonts and Small Text for Twitter / X

Styled Unicode in an X profile and timeline, and the accessibility cost to weigh.

Last updated

X renders plain Unicode, so styled text works in the display name, bio, and posts without any font feature. Generate it with the small text generator or the fancy text generator.

This guide covers where it works on X and the one real reason to keep it minimal there.

Where styled text works on X

The display name (50 characters), the bio (160 characters), and post text all accept styled Unicode. The @handle does not — plain letters, numbers, and underscores only.

How to add it

1. Generate and copy the styled text.
2. Display name and bio: Profile → Edit profile → paste. Post: paste into the compose box.
3. Check it on your live profile and a posted tweet.

The accessibility cost on X

X has a large screen-reader user base and an active accessibility community, and mathematical-alphabet styles (bold, italic, script, fraktur) read very poorly — often spelled letter by letter. A styled display name means your name is spelled out every time it's read aloud. Small caps and full-width are the least bad. Consider keeping the name plain and styling a bio line instead — background in are copy-paste fonts safe.

Reliable styles

Bold, small caps, and full-width render consistently across X on web, iOS, and Android — though X counts each full-width (vaporwave) character as two toward the post limit. Script and fraktur mostly work, and typewriter-style monospace is a quieter option. Underline and strikethrough combining marks are inconsistent.

Where X keeps styled text and where it does not

X is the platform where styled text costs you the most, because searching and screen readers both matter more here than on a visual network.

Styled text field by field on X
FieldStyled textConsequence
Display nameAcceptedSearch for your plain name may miss you
HandleNot allowedHandles are restricted to a plain character set
Post bodyAcceptedScreen readers read character names, not letters
Alt textDiscouragedAlt text should describe, not decorate
Lists and bookmarksInherits the original nameOrganising by name gets harder
Direct messagesAcceptedNotifications can render oddly on some clients

A compromise that keeps you findable

Put the styled version after the plain one rather than instead of it. A display name that starts with plain letters and then adds decoration is still matched by search, and it still looks designed.

Keep post bodies plain unless the styling is the point of the post. If people quote you, the quoted text carries the characters with it, and a quoted name full of decorative glyphs is unreadable in a timeline.

If accessibility matters to you, and on X it usually should, reserve styled text for short display uses and describe it once in your bio in plain words so anyone who reads character by character still knows who you are.

FAQ

Frequently asked questions

01How do I get a fancy font in my X (Twitter) name?+

Generate styled Unicode, copy it, and paste it into Edit profile → Name. There's no font setting.

02Does styled text work in tweets?+

Yes, post text accepts styled Unicode. The @handle does not.

03Why do people say not to use fancy fonts on Twitter?+

Screen readers read mathematical-alphabet styles letter by letter, so a styled name is spelled out for blind users every time. It's an accessibility cost, not a platform rule.

04Which styled text is safest on X?+

Small caps and full-width, then bold. Avoid styling your display name if you can.

05Why does X show my styled display name differently in notifications?+

Notifications, email digests, and some API clients render your name with a different font stack, so the glyphs are drawn by different software. The characters are unchanged, which is why the same name looks heavier in the app than in an email.

06Can styled text break X search?+

It can weaken it. Searching for the plain spelling of a name that is stored in a decorative alphabet will not return a direct match, so profiles that rely on being found by name should keep the searchable part plain.