TL;DR Standard Mastodon composes posts as plain text — there is no bold or italic button, and typing
**bold**publishes the literal asterisks. The glitch-soc fork lets opted-in users write Markdown, but that's one fork, not the whole fediverse. Display names and bios are plain text everywhere. The one method that works on every instance — in posts and profiles — is pasting Unicode styled characters, with the trade-off that screen readers mangle them, so use it sparingly.
Here's the honest answer most "Mastodon formatting" articles skip: on standard Mastodon, you cannot bold or italicize a post the way you would in a chat app. The composer is plain text. There's no formatting toolbar, no Markdown parsing, and if you type **bold** hoping for emphasis, your post ships with the asterisks showing. That's true on the flagship mastodon.social and most ordinary instances.
That doesn't mean styled text on Mastodon is impossible — it just means the path depends on which instance you're on, and that the only reliable cross-instance route is a different trick entirely. This guide breaks down exactly where native formatting works, where it doesn't, and how to get a bold, italic, or "fancy" look that copies and pastes anywhere on the fediverse.
The short version: Mastodon is plain text by default
On vanilla Mastodon, a post (historically called a "toot") is plain text. The composer gives you a character counter, content warnings, polls, media, and hashtags — but no bold, italic, or heading controls. Nothing wraps your text in styling, and Markdown symbols are not interpreted. So _italic_ stays _italic_, and **bold** stays **bold**.
This is the same situation you face on Instagram, X, or LinkedIn captions: the field is a plain-text box, so the only way to look bold is to use characters that are already bold. We'll get to that below. First, the cases where Mastodon genuinely does offer richer text — because they exist, but they're narrower than people assume.
Native formatting vs where you need Unicode
The single most important distinction on Mastodon is display versus create. Mastodon will often show you rich text. It just won't let a standard user make it. Here's the full picture.
| What you want to do | Standard Mastodon | glitch-soc fork |
|---|---|---|
| See a bold/italic post in your timeline | ✅ Yes, renders fine | ✅ Yes |
| Write a post with real Markdown bold/italic | ❌ No — plain text only | ⚠️ Only if you opt in, and the admin enabled it |
| Bold/italic in your display name | ❌ Plain-text field | ❌ Plain-text field |
| Bold/italic in your bio / profile | ❌ Plain-text field | ❌ Plain-text field |
| A styled look that works everywhere | ✅ Paste Unicode characters | ✅ Paste Unicode characters |
A few rows deserve unpacking.
Mastodon displays rich text it didn't author — but not always faithfully. If a bold or italic post lands in your timeline, it was likely written on a fork like glitch-soc or on another fediverse platform such as Friendica, Hubzilla, or Misskey/Sharkey. Standard Mastodon renders inline styling like bold, italics, and strikethrough correctly. Structural formatting is a different story: vanilla Mastodon's HTML sanitizer is restrictive, so incoming headers are flattened into bold text in a separate paragraph rather than true headings, and lists lose their structure. So you'll see styled posts — just not a pixel-perfect copy of how they looked at the source. And seeing one doesn't unlock a button for you. Display and creation are separate, and your plain-text composer hasn't changed.
Markdown authoring exists, but on the glitch-soc fork — and only if you turn it on. The glitch-soc fork ("Mastodon Glitch Edition") lets users compose in Markdown or HTML: headers, bold, italics, strikethrough, blockquotes, inline code, code blocks, even subscript, superscript, and lists. The catch is threefold. First, you have to be on a glitch-soc instance. Second, it's a per-user opt-in — you enable "Show content-type choice when authoring toots" in your compose-box settings, which adds a per-toot format dropdown (or you set a default content type in your preferences). Third, not every glitch-soc admin enables it by default. So "Mastodon supports Markdown" is simply not a safe general statement — it's a per-fork, per-user feature, and glitch-soc even warns that the formatting can be degraded or stripped when your post is read on mainline Mastodon.
A note on a fork people often lump in here: Hometown is not a Markdown-authoring fork. Its stated goal is to accept more content types for reading — it renders a wider range of incoming rich text (including longer-form Article objects federated from blogging tools) and adds local-only posting. It does not add a Markdown or HTML compose mode, so on Hometown you still write plain-text posts like vanilla Mastodon.
Display names and bios are plain text on every instance. Mastodon's posting documentation describes the composer and profile fields as plain text — the display name is a plain-text field, and the bio (the "note," 500 characters by default) doesn't support Markdown styling. Profile fields can hold mentions, hashtags, custom emoji, and links — but not bold or italic. So even on a glitch-soc instance with Markdown posts, your name and bio won't render **bold**. The only way to make them look styled is Unicode characters.