Telegram Text Formatter

Telegram supports a rich MarkdownV2 syntax in messages, channels, and bot output. This formatter wraps your text with the right markers and previews how it renders in the Telegram chat. Bold, italic, underline, strikethrough, spoiler tag, inline code, and code blocks all supported.

Copied to clipboard
0Characters 0Words 0%of 4096 limit

Telegram MarkdownV2

Telegram has the richest native formatter of the social cluster: bold, italic, underline, strikethrough, spoiler, inline code, and code blocks. All are MarkdownV2 syntax that paste straight into channel posts, group chats, and bot messages.

Message limit

Telegram caps messages at 4096 characters. The widget shows what percentage of the limit your message uses (markers included). For channels with longer announcements, split into multiple messages.

Private by default

Everything runs in your browser.

How to format text for Telegram

1. Type or paste your message

Drop the message or channel post you want to format into the input box. Telegram messages can be up to 4096 characters; channel post captions up to 1024.

2. Pick a style button

Click Bold, Italic, Underline, Strikethrough, Spoiler, Code, or Block. The output box updates with the MarkdownV2 syntax wrapping your text.

3. Preview before copying

The preview box mimics Telegram's rendering: bold appears bold, code in a green-tinted box, spoiler as a gray block (Telegram blurs it until tap). Verify the formatting looks right before sending.

4. Copy and paste into Telegram

Click Copy and paste into a Telegram chat, channel post, or bot send_message call. Telegram parses the MarkdownV2 syntax and renders the styling. Some clients require explicitly selecting MarkdownV2 in bot send options.

Telegram MarkdownV2 reference

Telegram supports the most features of any major social platform. Full syntax:

StyleSyntaxExample
Bold*text*bold
Italic_text_italic
Underline__text__underline
Strikethrough~text~strike
Spoiler||text||tap to reveal
Inline code`text`monospace
Code block```code```multi-line code

Telegram MarkdownV2 has a few stricter rules than other markdown dialects. Some special characters must be backslash-escaped (!, ., (, ), -, =, +, {, }, #) when used outside formatting markers. For chat messages and most channels, Telegram's clients accept the markers without strict escaping.

Spoiler tags: when to use them

Spoiler tags are unique to Telegram. They blur the wrapped text in the chat bubble and require the reader to tap to reveal. Useful in a handful of contexts:

Plot reveals in book/movie/game discussion

A book club channel can post: The ending was ||completely unexpected|| and readers who have not finished the book can scroll past without spoilers.

Hidden answers in puzzle channels

Riddle or quiz channels post the question, then the answer wrapped in ||...||. Readers think first, tap to verify.

Mild content warnings

For posts that might catch a reader off-guard, the spoiler blur is a polite warning that creates a tap-to-confirm moment.

Spoilers are NOT a security feature. The wrapped text is still in the message body and visible via API, just blurred in the official client UI.

Bots, channels, and inline code

Telegram bot output benefits from formatting more than human chat does.

Bot status messages

Bold the operation result (Done, Failed, Pending), italic the timing (took 1.2s), code-format any returned IDs or URLs. Telegram bots that ship plain-text output feel a generation behind ones that use MarkdownV2.

Channel announcements

Channel post starts with a bold headline, an italic subtitle, and structured body. The format pattern is the same as a newsletter.

Inline code for shareable commands

Code-wrap any command, file path, or short identifier so users can tap-to-copy. Telegram clients copy the code text without the backticks when a user taps an inline code span. Very useful for tutorial channels.

Escaping special characters

Telegram MarkdownV2 requires backslash escaping for these characters when they appear outside of a formatting marker pair:

_ * [ ] ( ) ~ ` > # + - = | { } . !

Most chat clients are lenient and render messages without escapes, but if you are sending via the Bot API with parse mode set to MarkdownV2 and you have not escaped a stray . or !, the message fails to send with a parse error.

Safe pattern for bots: escape every special character in user-supplied strings before injecting them into your template. The formatter on this page does not auto-escape (because most chat use cases do not require it). For bot use, run a final escape pass yourself.

Telegram vs WhatsApp vs LinkedIn vs X formatting

The four platforms take very different approaches.

Telegram (this tool)

MarkdownV2 with the richest feature set: bold, italic, underline, strike, spoiler, inline code, code blocks. Markers are hidden, styling is rendered. Best-in-class native formatting.

WhatsApp

Smaller markdown subset: bold, italic, strike, monospace, plus lists and quotes on newer clients. WhatsApp formatter.

LinkedIn

No native markdown. Bold and italic via Unicode mathematical letter substitutions. LinkedIn formatter.

X (Twitter)

Same Unicode trick as LinkedIn. No native markdown. X formatter.

Related tools

Frequently asked questions

Does Telegram render MarkdownV2 automatically?

In personal chats and channels, yes. Telegram clients parse the markdown syntax inline and render the styling. For bot send_message calls, you must explicitly set parse_mode to MarkdownV2 in the API request.

What is a spoiler tag and when should I use it?

A spoiler tag wraps text in ||double pipes|| and tells Telegram to render it as a blurred block that the reader has to tap to reveal. Useful for plot reveals, hidden answers in puzzle channels, and mild content warnings. Not a security feature: the text is still readable via API.

Why is my message failing to send via bot?

If you are using parse_mode MarkdownV2 in the Bot API, every reserved character (_ * [ ] ( ) ~ ` > # + - = | { } . !) must be backslash-escaped outside of formatting marker pairs. An unescaped period or exclamation is the most common cause of a parse_error 400 response.

Can I combine bold and italic?

Yes. Wrap your text in *bold* first, then wrap that in _italic_ : _*bold italic*_. Both markers render correctly because Telegram parses MarkdownV2 recursively. The formatter supports this by clicking Bold then Italic in sequence.

What is the maximum message length on Telegram?

4096 characters for regular messages. 1024 characters for media captions (photos, videos, files). Channel posts also follow the 4096 limit per post. The widget shows your message length as a percentage of the 4096 cap.

Do the formatting markers count against the character limit?

Yes. Every asterisk, underscore, tilde, and backtick counts as a character. *hello* is 7 characters: 2 asterisks plus 5 letters. The widget's character count includes all markers.

Does the text leave my browser?

No. The formatter runs entirely in your browser using JavaScript. Your message and the formatted output are never sent to our servers and are not logged.

Will the formatting work in older Telegram versions?

Yes. MarkdownV2 has been supported in Telegram clients since 2019. Any device updated within the last 5 years will render the markers correctly. Underline and spoiler require slightly newer clients (2020 and 2021 respectively) but those have effectively universal adoption now.

More wordcounter.ai tools

Other tools you might find useful.

Browse the full catalog →