Your files never leave your device. All processing happens locally in your browser.
How do I make bold or italic text in a tweet?
X (Twitter) has no built-in bold or italic, so this formatter swaps the words you select for real Unicode look-alike letters — Mathematical Alphanumeric Symbols — that render as 𝗯𝗼𝗹𝗱, 𝘪𝘵𝘢𝘭𝘪𝘤, monospace, s̲t̲r̲i̲k̲e̲ or u̱ṉḏe̱ṟ and copy straight into the composer. It also cleans up spaces and quotes, adds Unicode bullet points, and shows the REAL weighted 280-character count (URLs = 23, most emoji and CJK = 2). It is 100% client-side; nothing is uploaded. Honestly these are decorative characters, not true formatting: screen readers read them literally, search ignores them and some phones show empty boxes — so emphasise one or two words, never the whole tweet.
Select words and apply Unicode bold / italic / bold-italic / monospace / strikethrough / underline
Accurate weighted 280 count using X’s documented twitter-text algorithm, with overflow highlighted
Insert Unicode bullets, dividers, arrows and emoji at the cursor — handles, hashtags and links stay plain
100% in your browser — nothing uploaded; styled letters read badly to screen readers and are not searchable
What is
Tweet Formatter
A tweet formatter styles and tidies the text of an X (Twitter) post. Because X has no native rich text, “bold” and “italic” are produced by substituting ordinary letters with look-alike characters from Unicode’s Mathematical Alphanumeric Symbols block (U+1D400–U+1D7FF) plus combining marks, which copy into the composer and render as styled letters. A good formatter also reports the platform’s real weighted character count and offers clean-up such as collapsing spaces, curly quotes and Unicode bullet points. These styled characters are decorative code points, not semantic formatting, so they are announced literally by screen readers and are not matched by search.
Social Media
Related terms
X (Twitter)UnicodeMathematical Alphanumeric Symbolsweighted character counttwitter-textbold textstrikethroughcharacter limitbullet pointscopy-paste
Frequently Asked Questions
Not natively — X has no rich text. This tool fakes bold with Unicode look-alike letters that copy into a tweet and render as bold.
X (Twitter) gives you no bold, italic or underline button in the composer. The work-around every “bold tweet” tool uses — including this one — is to replace the letters you select with characters from Unicode’s Mathematical Alphanumeric Symbols block that happen to look bold or italic (𝗕 is <em>mathematical sans-serif bold capital B</em>, a different code point from B). Because the output is real Unicode, not an image or an embedded font, it pastes straight into a tweet and shows styled on most devices. The catch is that it is not true formatting, so use it on a word or two for a hook, never a whole post.
Yes. Screen readers announce each styled letter by its literal Unicode name, so styled words are hostile to blind and low-vision readers.
A screen reader does not see “a bold H” — it reads the character’s Unicode name, so a bold or script word is announced as “mathematical bold capital h, mathematical bold small e…” or skipped entirely, which is exhausting and often unintelligible for people using assistive technology. X’s search also matches only normal characters, so styled words are not discoverable and a styled #hashtag or @mention stops working. Keep body text, links, handles and hashtags plain, and reserve Unicode styling for a short accent — one or two words at most.
A standard post allows 280 weighted characters. Most Latin letters count as 1, but URLs count as 23 and most emoji and CJK characters count as 2.
X measures a “weighted length”, not a raw string length. Latin letters, digits, spaces and common punctuation weigh 1 each; characters outside those light ranges — Chinese, Japanese and Korean scripts, most emoji, and many decorative styled letters — weigh 2; and every URL is shortened to a t.co link that counts as exactly 23 regardless of its real length. This tool implements that documented twitter-text algorithm, so the live counter matches the composer for everyday posts and highlights exactly where a long tweet would be cut off. X Premium subscribers can post far longer, but the free limit is 280.
No. Everything runs locally in your browser; the text is a string that never leaves the page and nothing is uploaded, logged or stored.
The formatter is 100% client-side. The Unicode styling, the clean-up passes and the weighted count are all computed on your device with pure JavaScript — there is no server, no API call, no database and no logging, and there is no CDN in the processing path. The tool works offline once cached, and closing the tab discards your draft. The only optional network use anywhere on the site is consent-gated advertising, which never sees what you type, so you can draft privately.
Detailed Explanation
📖How It Works
What the Tweet Formatter Does
The Tweet Formatter is a 100% client-side editor for composing an X (Twitter) post. Because X has no native rich-text controls, it emphasises the words you select by substituting them with real Unicode look-alike letters — Mathematical Alphanumeric Symbols for bold, italic, bold-italic and monospace, and combining marks for strikethrough and underline — that copy straight into the composer. Alongside styling, it reports X’s real weighted 280-character count, cleans up spaces, blank lines and quotes, bullet-points lines, and inserts Unicode bullets, dividers, arrows and emoji at the cursor. A live mock-post preview highlights any text that would overflow the limit.
Apply Unicode bold / italic / bold-italic / monospace / strikethrough / underline to a selection
Live weighted 280 count that matches X’s composer for everyday posts
Clean up spaces, blank lines, straight/curly quotes and add bullet points
Insert Unicode bullets, dividers, arrows and emoji; strip all formatting in one tap
🔧Technical Details
How the Unicode Styling Works
Each “style” maps A–Z, a–z and 0–9 onto a block of Unicode whose glyphs look like styled Latin letters. Bold uses the Mathematical Sans-Serif Bold run, italic and bold-italic the Mathematical Italic runs, and monospace the Mathematical Monospace run, all inside U+1D400–U+1D7FF; a handful of reserved letters are patched from the Basic Multilingual Plane. Strikethrough and underline instead append a combining mark (U+0336 long stroke overlay, U+0332 low line) after each visible character. The transform runs grapheme-by-grapheme so emoji and accents stay intact, applies only to the selected range, and leaves any character a style does not cover unchanged. Stripping formatting reverses the substitution back to plain ASCII and removes the combining marks.
Bold/italic/mono come from Mathematical Alphanumeric Symbols (U+1D400–U+1D7FF)
Styling is applied only to the selected text, grapheme by grapheme
Strip-formatting maps look-alike letters back to plain ASCII and drops combining marks
⚙️Methodology
The Real Weighted 280 Character Count
X does not count raw string length; it counts a “weighted length” defined by the open-source twitter-text configuration. Latin letters, digits, spaces and common punctuation weigh 1; characters outside those light ranges — CJK scripts, most emoji, and many decorative styled letters — weigh 2; and every URL is transformed to a t.co link that counts as exactly 23 regardless of its real length. A whole emoji sequence (including skin-tone and ZWJ combinations) counts as one 2-weight unit. This tool reuses a pure implementation of that algorithm, so the counter matches the composer for everyday posts and marks the exact index where a long tweet would be cut off. The free limit is 280; X Premium tiers allow far longer posts.
Most Latin characters weigh 1; CJK and most emoji weigh 2
Every URL counts as exactly 23 (t.co), whatever its length
Styled letters often cost 2 weighted characters each, using the budget faster
The counter highlights precisely where text exceeds 280
⚠️Limitations
Honest Limitations
These styles are decorative Unicode, not semantic rich text, and that carries real costs. Screen readers announce the characters by their literal Unicode names (“mathematical bold capital A”) or skip them, which is hostile and often unintelligible for assistive-technology users. X’s in-app search matches only normal characters, so styled words are not discoverable and a styled #hashtag or @mention stops working as a link. Rendering depends on the reader’s device and app, so the same text can look different or show empty “tofu” boxes on an older phone, and many styled letters fall outside the light Unicode ranges so they can cost 2 weighted characters each. The practical rule: emphasise one or two words for a hook, never a whole tweet, and keep links, handles and hashtags plain.
Screen readers read styled letters literally; search ignores them
Styled #hashtags and @mentions stop working as links
Appearance varies by device; some phones show boxes
Styled letters often count as 2 weighted characters — use sparingly
🔒Privacy & Security
Private by Design
Everything runs and stays on your device. The Unicode styling, the clean-up passes and the weighted character count are all computed locally with pure JavaScript — there is no server, no API call, no database and no logging, and there is no CDN in the processing path. The live preview, copy button and insert banks are all local operations. The tool works offline once cached, closing the tab discards your draft, and the only optional network use anywhere on the site is consent-gated advertising, which never sees what you type. That means you can safely draft a private post before it leaves your browser.
All styling, counting and clean-up run locally — nothing uploaded or logged
No server, API, database or CDN in the processing path
Works offline once cached; closing the tab discards the draft
Only optional network use is consent-gated ads that never see your input
The emphasis styles and what they really are
Style
Example
Unicode source
Notes
Bold
𝗕𝗼𝗹𝗱
Math sans-serif bold (U+1D5D4+)
Renders widely; ~2 weighted chars each
Italic
𝘐𝘵𝘢𝘭𝘪𝘤
Math sans-serif italic (U+1D608+)
No digits; ~2 weighted chars each
Bold Italic
𝘽𝙤𝙡𝙙
Math bold italic (U+1D468+)
For a single strong hook word
Monospace
𝙼𝚘𝚗𝚘
Math monospace (U+1D670+)
Fixed-width, code-style look
Strikethrough
s̶t̶r̶i̶k̶e̶
Combining U+0336 overlay
Mark added over normal letters
Underline
u̲n̲d̲e̲r̲
Combining U+0332 overlay
Mark added under normal letters
X has no native rich text — these are decorative Unicode code points that copy into a tweet but are read literally by screen readers, ignored by search, and may show boxes on some devices. Use on one or two words, not a whole tweet.