Two editors, one format: fancy pants and Markdown mode

In short
  • Every post and comment is stored as Markdown, and the rich-text composer simply writes that Markdown for you.
  • A single newline is the number one trap, because old.reddit folds it away. Leave a blank line instead.
  • Indent code four spaces rather than fencing it, since old.reddit shows backtick fences as literal characters.
  • Superscript with ^(text), spoilers with >!text!< and bare r/ links are Reddit's own additions.

Fancy pants and Markdown mode

Every post and comment on Reddit is stored and rendered as Markdown. What changes is how you type it. The default composer on new Reddit is the rich-text editor the community nicknamed fancy pants: a toolbar with bold and italic buttons that writes the Markdown for you. The alternative is Markdown mode, a plain textarea where you type the syntax yourself.

Reddit keeps your source, then renders it twice

Tools split into two groups. Some keep your Markdown as written. Others convert it on the way in and discard the characters, which is what Notion does with every shortcut you type. Reddit keeps it. That is good for you, and it also explains the site's biggest quirk: one stored source, two renderers, so the same comment can look different on old.reddit than on the new site.

How to switch editors

Look for the toggle in the corner of the composer. It is usually labelled "Markdown Mode", or shown as a small T or pencil icon. Clicking it swaps the box in place, and Reddit remembers the choice. On old.reddit.com there is nothing to switch, because the only editor there is a raw Markdown box.

Which editor to use

Fancy pants is fine for a sentence with a bold word in it. For a table, a code block or nested lists, switch to Markdown mode before you start typing.

Careful: Pasting Markdown source into fancy pants gives you a half-converted mess, because some constructs are recognised on paste and others stay literal. Switching mid-draft can lose formatting too, and Reddit warns you when it does.

Illustration of a Reddit comment box toggling between a rich-text toolbar and raw markdown source

The formatting that works everywhere on Reddit

Reddit's flavour is close to the original Markdown specification. It is far more capable than a chat app such as Discord, and noticeably narrower than GitHub Flavored Markdown. This is the reliable core:

# Heading 1
###### Heading 6

**bold**  *italic*  ***bold italic***  ~~strikethrough~~

[link text](https://example.com)
https://example.com   (bare URLs link themselves)

- bullet item
  - nested item
1. numbered item

> a quoted line

`inline code`

---

Small rules with big consequences

New Reddit follows the CommonMark rule that a heading needs a space after the hashes. So # Title is a heading and #Title is not. Old.reddit accepted either. That is why one line can be a heading in one place and a stray hash in the other, a split our headings guide traces back to the spec.

Two more rules earn their keep:

  • Lists need a blank line before the first item, or they merge into the paragraph above.
  • Numbered lists re-sequence themselves, so every line can safely start with 1..

Reddit also autolinks its own references. Write r/formatting or u/spez and it becomes a link with no bracket syntax at all. That is a house extension, so do not expect it in the links guide or anywhere off Reddit.

Code on Reddit: the four-space rule and fenced blocks

Inline code behaves the same as everywhere else: single backticks render monospace and switch off formatting inside. Blocks are where Reddit's history shows.

The historical four-space indent

For most of Reddit's life the only way to make a code block was to indent every line by four spaces. It still works, and it is still the most compatible option:

Here is a code block:

    def total(items):
        return sum(items)

Back to normal text.

The blank line before the indented block is required. The rule is also a trap in reverse. Any paragraph you indent by four spaces quietly becomes a code block, which is why pasted text sometimes turns into a grey monospace slab.

Fenced blocks

New Reddit and the official apps also accept three-backtick fences with an optional language name. The catch is blunt: old.reddit does not render fenced blocks. Readers there see literal backticks wrapped around unformatted code. Reddit never colourises code either way, so the language tag buys you nothing here, unlike the fenced blocks you write on GitHub.

```
def total(items):
    return sum(items)
```

Tip: Choose the block style by audience. Indent four spaces for anything a stranger might read, and save fences for places where you know everybody is on the apps or new Reddit.

Reddit-only syntax: superscript, spoilers and tables

Superscript

A caret raises the text that follows it. A bare caret lifts a single word, while parentheses raise a whole phrase and behave more consistently. Prefer the parentheses form.

E = mc^2
Everyone knows this. ^(Source: trust me)
Stacked ^^carets go higher still on old.reddit

Superscript is Reddit's house style for asides and disclaimers. It is also an easy accident to have.

Careful: A caret in a maths expression lifts everything after it. Write 2\^10 with a backslash whenever you mean a power rather than a whisper.

Spoilers

Reddit's official spoiler syntax wraps text in >! and !<. The words hide behind a black bar until the reader clicks them.

The butler >!did it!< in the library.

This renders on new Reddit and in the official apps. Old.reddit support has been patchy, and some long-running subreddits still carry CSS spoiler hacks from before the official tag existed. Preview rather than trust it blind. Discord solves the same problem with double pipes, which is worth knowing if you cross-post.

Tables

Pipe tables work on Reddit, including alignment colons in the divider row. A header row and a divider row are both mandatory. Without them, the pipes stay pipes.

| Item      | Qty | Price |
|:----------|:---:|------:|
| Keyboard  |  1  |   $89 |
| Mouse     |  2  |   $24 |

Reddit tables have no cell merging, no multi-line cells and no captions. Anything more elaborate belongs in a linked image or an external page. Our Markdown tables guide has the general rules, plus the trick for putting a literal pipe inside a cell.

Reddit Markdown support matrix

Behaviour below reflects the Markdown renderer used for posts and comments. Where old.reddit and new Reddit disagree, the note says so.

FeatureSyntaxWorks?Notes
Headings# to ###### YesNew Reddit needs the space after the hashes; old.reddit did not
Bold**text**YesDouble underscores also work
Italic*text* or _text_YesEscape underscores inside snake_case words
Bold italic***text***Yes
Strikethrough~~text~~YesNo spaces inside the tildes
Link[text](url)YesReference-style links are unreliable; use inline
Bare URLhttps://...YesAutolinked
Subreddit and userr/name, u/nameYesReddit extension; no brackets needed
Bulleted list- itemYesBlank line before the first item
Numbered list1. itemYesNumbers are re-sequenced automatically
Blockquote> textYesNesting with >> is fragile; add blank lines
Inline code`code`YesDisables formatting inside
Indented code blockfour spacesYesThe only block form old.reddit understands
Fenced code blockthree backticksPartlyNew Reddit and the apps only; renders literally on old.reddit
Tablepipes and dashesYesHeader and divider rows required; no merged cells
Superscript^(text)YesReddit extension; parentheses form is safest
Spoiler>!text!<MostlyReddit extension; old.reddit support has been inconsistent
Horizontal rule---YesNeeds a blank line above or it makes a heading
Image by syntax![alt](url)NoUpload instead; image comments only where mods enable them
Task list- [ ] itemNoRenders as literal square brackets
Footnote[^1]NoNot supported; use superscript or a plain list
Raw HTML<b>text</b>NoStripped for safety

The line-break trap and the other things that break

Single newlines vanish

Take the fix first. Leave a blank line between blocks, or end a line with two trailing spaces to force a break inside one paragraph. The blank line is the safer habit, because trailing spaces are invisible and editors strip them.

Here is the cause. In classic Markdown a single newline counts as a space, so these three lines collapse into one paragraph:

Line one
Line two
Line three

New Reddit's renderer usually keeps the break, which is what makes the bug so confusing. Your address list looks right as you write it. Then it arrives as one run-on sentence for everyone reading on old.reddit.

Images, HTML and footnotes

Markdown image syntax does not render on Reddit at all. Upload an image as its own post, or post a link. Image comments do exist, but they are a per-subreddit setting moderators enable, and some subreddits allow Reddit's own GIF syntax. Neither is reliable site-wide, unlike the platforms covered in our images guide. Raw HTML is stripped, and footnotes have never been supported.

Quote and indent quirks

A blockquote swallows the line after it unless you leave a blank line. A reply typed directly beneath > quoted text ends up inside the quote. Nested >> quotes need a blank quoted line between levels, as our blockquotes guide shows. And because four spaces means "code", indenting a paragraph under a list item produces a code block.

Escaping

A backslash before a character prints it literally. The ones worth escaping on Reddit are *, _, ^, ~, #, >, [, ] and |.

\#1 problem      keeps the hash instead of making a heading
5 \* 3 = 15      keeps the asterisk
2\^10            keeps the caret

Underscores deserve special care, because usernames, file paths and snake_case variables are full of them. Wrapping the whole string in backticks is quicker than escaping each one, the same shortcut our bold and italic guide recommends.

old.reddit versus new Reddit, and how to write for both

A large and vocal share of Reddit still browses old.reddit.com and its older renderer. Your words are read through both, so write for the stricter one. The differences that bite are short enough to memorise:

  • Fenced code blocks render on new Reddit and show as literal backticks on old.reddit. Indent four spaces instead.
  • Single line breaks often survive on new Reddit and collapse on old.reddit. Use a blank line.
  • Headings without a space after the hash work on old.reddit and fail on new Reddit. Always add the space.
  • Spoiler tags are dependable on new Reddit and the apps, less so elsewhere.
  • Subreddit CSS only exists on old.reddit, so custom community styling changes nothing on new Reddit.

A two-minute check before you post

  1. Put a blank line between every block, including before lists and rules.
  2. Swap backtick fences for four-space indents.
  3. Add the missing space after each #.
  4. Preview it, then open the thread on old.reddit if the post is long.

Two habits cover almost all of it. Leave blank lines between everything, and prefer the older syntax when two forms exist. Comments cap at 10,000 characters, while self-post bodies allow 40,000.

Where Reddit sits among the rest

Reddit is one dialect among many, which is why the same text can look different in three places. Discord's chat subset is the tighter cousin, and Obsidian shows what changes once the file itself belongs to you. The platform hub lines every app up in one table.

Still deciding what to learn? Our explainer on which Markdown flavor to learn is the short answer. The complete Markdown guide and the cheat sheet are the long one.

Support data verified

Frequently Asked Questions

How do I switch to the Markdown editor on Reddit?

In the new Reddit composer, look for the toggle in the corner of the box, usually labelled "Markdown Mode" or shown as a small T or pencil icon. Clicking it replaces the rich-text editor with a plain text box, and Reddit remembers the setting. On old.reddit.com every box is already Markdown.

Why does Reddit ignore my line breaks?

Because a single newline counts as a space in classic Markdown, and old.reddit still does exactly that. Leave a blank line to make separate paragraphs, or two trailing spaces to force a break inside one. The blank line is safer, since trailing spaces are invisible and easily lost.

How do I make a code block in a Reddit comment?

Indent every line by four spaces and leave a blank line above it. That form renders everywhere, including old.reddit. Three-backtick fences also work on new Reddit and the apps, but old.reddit readers see literal backticks.

Can I post an image in a Reddit comment with Markdown?

No. The ![alt](url) syntax does not render anywhere on Reddit. You can upload an image in a comment only in subreddits where moderators turned image comments on; otherwise post it as its own submission or paste a link.

Does Reddit support tables?

Yes. Pipe tables render on both old.reddit and new Reddit, and colons in the divider row control alignment. A header row and a divider row are both required. There is no merged-cell, multi-line-cell or caption support.

Keep learning

Try the Editor

Try the Editor