Everything to know about formatting a post

What is this?

This post is a comprehensive guide to all the formatting features available when composing posts on Discourse forums, including the use of the forum’s editor toolbar, Markdown, BBCode, and HTML.

This guide is an update of my previous guide from another forum, both in aesthetics and information. The guide was put together using information from several sources adapted to match the capabilities of this forum. References can be found here.

Table of Contents

Click to navigate to a specific section

Editor Bar Overview

Text Editor Mode

This button allows users to switch between a purely plaintext editor with markdown rendering and a rich text editor that functions closer to a google docs or microsoft word editor. Each editor has their own strengths and weaknesses

Plaintext
Rich Text
Strengths More control over formatting User-friendly, familiar for users
Weaknesses Steeper learning curve Less direct control over formatting

The options below change what they visually do depending on what editor mode is chosen

    
Click on a details box below to see information on the various options of the editor bar

Change reply

Controls who/what your reply is directed to. Clicking it opens a dropdown menu with three possible choices:

Reply as linked topic

Use this to branch off into a separate topic without derailing the current one. Ideal for tangents or related side conversations.

Reply to a specific post by 𝙪𝙨𝙚𝙧

Visible when replying to a topic AFTER trying to reply to a specific post within it. Selecting it switches your response to target that specific post.

Reply to topic

Visible when you’re replying to a specific post. Allows for switching to replying to the topic without clicking out of the composer window.

Strong (Bold)
Bold formatting button

Inserts **strong text** where the text cursor is located. Wraps a highlighted selection in double asterisks.

Example:

This **makes words bold**. It can be ***combined with italics***.

This makes words bold. It can be combined with italics.

Second formatting button

Toggles bolding at the position of the text cursor. Toggles bolding of highlighted sections.

Emphasis (Italics)
Bold formatting button

Inserts *emphasized text* where the text cursor is located. Wraps a highlighted selection in asterisks.

Example:

This *makes words italicized*. It can be ***combined with bold***.

This makes words italicized. It can be combined with bold.

Second formatting button

Toggles bolding at the position of the text cursor. Toggles bolding of highlighted sections.

Headings

Headings can be added by starting a line with `#`. Subheadings can be added by adding more than one `#` at the beginning of a line, to a limit of 6.

Example
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
####### Heading 7

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

####### Heading 7

The option itself only includes headings 1-4

Hyperlink

Creates a clickable element that redirects the user to a different webpage.
[Example](https://example.com)
Example

Blockquote

Inserts > at the beginning of every selected line

> Line 1
> Line 2
> Line 3

Line 1
Line 2
Line 3

Example: Nested blockquotes
> Line 1
>>Line 2
>>> *Line 3*
> > > > > > > > Line 4
>>> **Line 5**

Line 1

Line 2

Line 3

Line 4
Line 5

Upload

Image upload from a user’s local files through File Explorer.
Alternatively, drag and drop a file into the composer window to upload.

e

Progress is shown next to the “Send” or “Save Edit” button. In the composer window, a markdown image link is generated where the typing cursor is positioned.

[Processing: FileName.format...]()
[Uploading: FileName.format...]()
![FileName|LengthxWidth, Percentage%](Upload Link)
Lists
Bulleted List
Inserts * at the beginning of each selected line.
* Line 1
* Line 2
* Line 3
  • Line 1
  • Line 2
  • Line 3
Staggered bullet lists are possible. It requires 3 spaces preceding the bullet point. Staggering beyond 3 steps renders the bullet point as
* Line 1
   * Line 2
      * Line 3
         * Line 4
             * Line 5
* Line 5
   * Line 6
  • Line 1
    • Line 2
      • Line 3
        • Line 4
          • Line 5
  • Line 5
    • Line 6
Numbered Lists can be used in combination with Bulleted Lists
1. Line 1
2. Line 2
   - Line 3
        - Line 4
2. Line 4
   1. Line 5
      2. Line 6
  1. Line 1
  2. Line 2
    • Line 3
      • Line 4
  3. Line 4
    1. Line 5
      2. Line 6
Numbered list
Inserts #. at the beginning of each selected line. Numbering is sequential and automatic regardless of the number in front.
1. Line 1
2. Line 2
10. Line 3
  1. Line 1
  2. Line 2
  3. Line 3
Staggered number lists are possible. It requires 3 spaces preceding the number and the first staggered number to be '1'. Staggering beyond 2 steps is not rendered.
1. Line 1
2. Line 2
   3. Line 3
     4. Line 4
5. Line 5
   1. Line 6
      2. Line 7
         3. Line 8
  1. Line 1
  2. Line 2
    3. Line 3
    4. Line 4
  3. Line 5
    1. Line 6
      2. Line 7
      3. Line 8
Numbered Lists can be used in combination with Bulleted Lists
1. Line 1
2. Line 2
   - Line 3
        - Line 4
2. Line 4
   1. Line 5
      2. Line 6
  1. Line 1
  2. Line 2
    • Line 3
      • Line 4
  3. Line 4
    1. Line 5
      2. Line 6
Check list
Inserts - [ ] at the beginning of each selected line. Checks are marked by an x
- [ ] Line 1
- [ ] Line 2
- [x] Line 3 
  • Line 1
  • Line 2
  • Line 3
Staggered check lists are possible. It requires 3 spaces preceding the bullet point.
- [ ] Line 1
   - [ ] Line 2
      - [ ] Line 3
         - [ ] Line 4
             - [ ] Line 5
- [ ] Line 5
   - [ ] Line 6
  • Line 1
    • Line 2
      • Line 3
        • Line 4
          • Line 5
  • Line 5
    • Line 6
Check Lists can be used in combination with Bulleted and Numbered Lists
1. Line 1
2. Line 2
   - Line 3
      - [ ] Line 4
         - Line 5
2. Line 6
   1. Line 7
      2. Line 8
2. Line 9
   1. Line 10
      2. Line 11
         - [ ] Line 12
             - [ ] Line 13

  1. Line 1
  2. Line 2
    • Line 3
      • Line 4
        • Line 5
  3. Line 6
    1. Line 7
      2. Line 8
  4. Line 9
    1. Line 10
      2. Line 11
      • Line 12
        • Line 13
Emoji

Inserts an emoji where the typing cursor is positioned.

:augh: :true: :unoreverse: :cat: :cat_question: (etc)...
:augh: :true: :unoreverse: :cat: :cat_question: :fox_ban: :huh_skull: :monke: :really_true: :shoot: :skull_sob: :sword: :thonking: :wolf_heart:


Menu is scrollable. Emojis are searchable and separated by sections. Certain emojis have color variants, click :clap: to change.

e


Emotes can be moused over to show their markdown syntax
e

More Editor Options

This portion of the guide will cover editor options found under the options button

Click on a details box below to see information on the various options

Quote whole post

Feature used for replying to posts. Quotes a replied-to post in its entirety.

Preformatted text

Wraps text within ```. See more info here

``` type or paste code here ```
type or paste code here
Insert table

The instructions for use can be found by clicking the image icon on the bottom-right. See the picture below for additional controls.

Common Bugs
Table Duplication
Empty Headers are automatically filled

[SOLUTION] Bug regarding empty header cells being filled when edited in Discourse table - Chill Corner - Swordbattle Community

The table inserted is a markdown table. See more below.

Hide details

Wraps selected text in the [details] tag, which hides it behind a clickable summary. When a user clicks the summary, the hidden content expands. Clicking it again collapses it.

See more info here

Insert date/time

This is a Discourse unique feature (see Date/Time syntax)

You can set the following options from the menu:

Date, Time

You can select a date using the calendar

image

ㅤㅤ ㅤㅤ
A. Clicking the arrow moves the calendar forward/back by one month.
B. Clicking the month opens a dropdown menu with all months of a year
C. Hovering over a week name displays its full name
D. Clicking the year opens a dropdown menu with all the years ±10 of the current selected year

Example:
2025-05-13T16:13:00Z

Time Interval

The second date option Until... is for setting a time interval.

Example:
2025-05-13T16:13:00Z2025-05-20T04:00:00Z

Timezone

Timezone is defined using TZ identifiers.

Advanced Options

Clicking the cog opens up the following options:

Recurrence

Can set whether the inserted time appears on specific dates after a certain time interval

Example (the 1st of every month): 2026-07-01T04:00:00Z

Timezones to display

Defines displayed timezones when the element is clicked on

2025-05-10T04:00:00Z

Date format

Controls how the date is displayed to a user.

Presets

[date=2026-01-01 time=00:00:00 timezone=America/New_York format=LL] January 1, 2026
[date=2026-01-01 time=00:00:00 timezone=America/New_York format=LLL] January 1, 2026 5:00 AM
[date=2026-01-01 time=00:00:00 timezone=America/New_York format=LLLL] Thursday, January 1, 2026 5:00 AM
[date=2026-01-01 time=00:00:00 timezone=America/New_York format=LT] 5:00 AM
[date=2026-01-01 time=00:00:00 timezone=America/New_York format=LTS]
5:00:00 AM
Insert footnote

Inserts ^[Footnotes] at the position of the text cursor, rendered as [#]. Functionally, whatever is written within the brackets is hidden within [#] and only shown when hovered on.

I'm the best worldguessr player ever, it ain't even close.^[This is a lie]

I’m the best worldguessr player ever, it ain’t even close.[1]

For more info on footnotes, click here

Build poll

The forum has native poll support. Clicking the “Build Poll” option brings up the basic Build Poll menu. Notable settings include:

Show who voted

Option that affects the anonymity of the poll.

Favorite Continent
  • Asia
  • Africa
  • North America
  • South America
  • Australia
  • Antarctica
  • Europe
0 voters
Favorite Ocean
  • Indian Ocean
  • Atlantic Ocean
  • Pacific Ocean
  • Arctic Ocean
0 voters
Manually Open/Close Poll

After creating a poll, the creator has the option to close and reopen the poll manually by opening its settings menu

Poll Types

There are 4 types of poll which allow users to interact with polled choices.

Single Select

Users voting on the poll can only select one option

What device are you viewing this guide on?
  • Phone
  • Laptop/PC
  • Console
  • Watch
  • Refrigerator
0 voters

Multiple Select

Users voting on the poll can select multiple options from 0 to the total number of options

Number Rating

A single select number poll. Poster can manipulate the minimum, maximum, and the steps (deviation) of each number option

Rate your experience with this guide
  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100
0 voters

Ranked Choice

Advanced Options

Clicking the gear opens the advanced Build Poll menu. Notable settings include:

Title

It adds a title to the poll in the syntax of a Markdown header

Titles can be any size, use syntax of any kind supported by the forumRick Astley GIF
  • Cool
  • Uncool
0 voters
Limit voting to these groups

This option limits the users that can vote in the poll to users in specific group(s).

Poll limited to users in the Moderators group. What’s their favorite smell?
  • Smell of freshly cut grass
  • Smell of rain
0 voters
Automatically Close Poll

This option allows for the scheduling of polls to close at specific dates and times, selectable in 15-minute increments.

This poll will close 2033-01-01T05:15:00Z. Which is heavier?
  • A pound of bricks
  • A pound of feathers
0 voters
Result Chart

This allows you to show the poll results with either a bar chart or pie chart

Pie Chart
  • Pie 1
  • Pie 2
  • Pie 3
  • Pie 4
0 voters
Bar Chart
  • Bar 1
  • Bar 2
  • Bar 3
0 voters
Blur Spoiler

Wraps highlighted text in a [spoiler] tag, blurring the text beyond recognition

Apply Wrap (Currently Nonfunctional)

Inserts stylized containers using the [wrap] tag as opposed to pure HTML.

Currently there is no CSS that [wrap] is able to target on the forum. Hound any of the forum admins for it.

How an admin can add CSS for [wrap] targetting

Admin Panel → Customize → Themes
Edit CSS for that theme and add this

[data-wrap="*𝑾𝒓𝒂𝒑 𝒏𝒂𝒎𝒆*"][data-*𝑲𝒆𝒚*="*𝒗𝒂𝒍𝒖𝒆*"] {
CSS HERE
}

                  OR

[data-*𝑲𝒆𝒚*="*𝒗𝒂𝒍𝒖𝒆*"] {
CSS HERE
}

                  OR

[data-wrap="*𝑾𝒓𝒂𝒑 𝒏𝒂𝒎𝒆*"] {
CSS HERE
}

Other Editor Options INCOMPLETE

This portion of the guide will cover editor options found outside the composer window.

Why are you editing?

Appends a note to edit history when a post edit is saved. Useful for keeping track of edit history and/or when there are multiple collaborators in a wiki topic.

Example: Edit #30 of this topic

Image GridINCOMPLETE - grid has all markdown images contained in a container with all images being the same width and height - carousel is a mode of the `[grid]` tag which renders the images within a container with one image displayed at a time and front and back arrows to cycle through the images within the container

Formatting Table NEEDS EDITING

This portion of the guide functions as a cheat sheet for all style changes and their corresponding Markdown, BBCode, and HTML alternatives. It is sorted alphabetically based on the Format (left) column

Key
No formatting option
🔒 Formatting option disabled in this forum
✖️ No Rendered Result
Link More info in the guide, won’t fit in the table

Click to open table
Format Markdown BBCode HTML Rendered Result
Audio :cross_mark: :cross_mark: <audio src="audio.mp3" controls></audio> See Here
Blockquote > Text :locked: <blockquote>Text</blockquote> See Here
Bold **Text** [b]Text[/b] <b>Text</b>, <strong>Text</strong> Text
Checklist [] [X] :cross_mark: :locked:
Date/Time :cross_mark: See Here :locked: 2025-05-22T04:00:00Z
Emoji :EmojiName: :cross_mark: :cross_mark: :smile:
Heading 1 # Text :cross_mark: <h1>Text</h1> Text
Hide Details :cross_mark: [details] <details>
Displayed TextHidden Text
Hidden Text :cross_mark: :cross_mark: [comment], <!-- Text -->
Highlight :locked: :cross_mark: <mark>Text</mark> Text
Horizontal Rule --- :cross_mark: <hr> :multiply:
Image ![ImageName | LengthxWidth, Scale%](example.com) [img]example.com[/img] <img src="https://example.com" alt="ImageName" width="200" height="100"> Rick Astley GIF
Italics *Text* [i]Text[/i] <i>Text</i>, <em>Text</em> Text
Keybind :cross_mark: :cross_mark: <kbd>Key</kbd> Ctrl
Large Text Size :cross_mark: :cross_mark: <small>Text <small>Text</small></small> Text Text
Line Break Natively supported :cross_mark: <br> Text
Text Text
Text
Link [Display Text](example.com) [url]http://example.com[/url] <a href="https://example.com">Display Text</a> Display Text
List * , 1. :cross_mark: :locked: See here
Marked Delete :cross_mark: :cross_mark: <del>Text</del> Text
Marked Insert :cross_mark: :cross_mark: <ins>Text</ins> Text
Mentions @username :cross_mark: :cross_mark: @spheroid
Preformatted Text/Code `Text` [code]Text[/code] <code>Text</code>, <pre>Text</pre> Text
Quote :cross_mark: [quote="username, post: PostNumber, topic: TopicNumber, full=true/false"] Quoted Text [/quote] :cross_mark: See Here
Small Text Size :cross_mark: :cross_mark: <big>Text</big> Text
Strikethrough ~~Text~~ [s]Text[/s] <s>Text</s> Text
Structuring/Grouping Native [wrap] <div> :multiply:
Superscript :locked: :cross_mark: Text<sup>Text</sup> Text Text
Subscript :locked: :cross_mark: Text<sub>Text</sub> Tex tText
Tables See Here :cross_mark: See Here :multiply:
Underline :locked: [u]Text[/u] :cross_mark: Text
Video https://www.youtube.com/.... :cross_mark: <video src="video.mp4" controls></video> :multiply:
‎ ‎ ‎

Misc Info

Everything below provides additional information linked from the sections above.

Hiding Details

[BBCode] <HTML>
This is the simpler of the two to use, and the version used in the Formatting Options.

[details=Displayed Text]
Hidden Text
[/details]


It has one limitation in that the Displayed Text cannot be formatted at all.







This is more annoying to use as it requires more HTML tags, space, and characters to format something similarly to BBCode.

<details>
<summary>Displayed Text</summary>
Hidden Text
</details>

This version of Hide Details allows for the formatting of Displayed Text.

It also has the advantage of accessing css classes specific to <details>

<details class="elided">
<summary>Summary</summary>
...
</details>

Hiding Text with HTML

HTML allows for users to hide text within the composer. Using the methods below, the HIDDEN TEXT will only be viewable when editing a post.

SINGLE LINE:
[comment]: <> (HIDDEN TEXT)

<!-- Hidden Text -->
MULTI-LINE:
<!---

HIDDEN
TEXT

-->

Date/Time with BBCode

Note: Traditional BBCode parser will not read this

Single Date:
[date=YYYY-MM-DD time=HH:MM:SS timezone="TZ Identifier"⁽²⁾ recurring="[interval].[unit]"⁽³⁾]

Multidate:
[date-range from=YYYY-MM-DDTHH:MM:SS⁽¹⁾ to=YYYY-MM-DDTHH:MM:SS timezone="TZ Identifier"⁽²⁾ recurring="[interval].[unit]"⁽³⁾]
1 - YYYY-MM-DDTHH:MM:SS [Date]T[Time on 24HR clock]
2 - TZ Identifier List of names for timezones of countries, learn more here
3 - [interval].[unit] interval in counting numbers (1, 2, 3…), units of time (year, month, week, day)
Reference Material Link

Multiline Code

This is the feature when clicking the Preformatted Text option. Multiline code requires text to be wrapped in ``` at the minimum

```
Text
Text Text
Text
```
Text
Text Text
Text

To display ``` within the code box, the text must be wrapped in more ` than the desired display amount

Progressively removing `

6 `

`````
Text
````
Text Text
```
Text Text Text
```
Text Text
````
Text
`````

5 `

Text
````
Text Text
```
Text Text Text
```
Text Text
````
Text

4 `

Text

Text Text
```
Text Text Text
```
Text Text

Text

3 `

Text
Text Text

Text Text Text

Text Text
Text

Syntax Highlighting

To add syntax highlighting, specify a language next to the `before the code block.

```json

  "firstName": "Joe",
  "lastName": "Shmoe",
  "age": 50

```
  "firstName": "Joe",
  "lastName": "Shmoe",
  "age": 50

A full list can be found here

Footnotes

Single-use

Example text.^[Anything within the brackets 
is rendered within the footnote element when hovered on]

Example text.[2]

Multiuse

Single line,[^singleline] then multiline.[^multiline1] [^multiline2] Finally multiuse [^singleline] [^multiline1] [^multiline2]

[^singleline]: Using only a single line, no breaks between lines using <kbd>Enter</kbd>. 

[^multiline1]: Using multiple lines is possible in two ways.
First way is by having no line separation between text.
You can use a **good** amount of formatting options within the element, only issue being a lack of horizontal space.
Any formatting that only spans a single line will work this way.

[^multiline2]: If you need to use formatting options that use multiple lines or need more space for clarity when typing, then indenting is necessary.
<br>
To indent, start a line with 4 spaces.
    ```
    Line 1
    Line 2
    Line 3
    Line 4
    ```

Single line,[3] then multiline.[4] [5] Finally multiuse [3:1] [4:1] [5:1]

Some things work cleanly, while others do not. For example,[details] only works intermittently while <details> seems to always work.


  1. This is a lie ↩︎

  2. Anything within the brackets
    is rendered within the footnote element when hovered on ↩︎

  3. Using only a single line, no breaks between lines using Enter. ↩︎ ↩︎

  4. Using multiple lines is possible in two ways.
    First way is by having no line separation between text.
    You can use a good amount of formatting options within the element, only issue being a lack of horizontal space.
    Any formatting that only spans a single line will work this way. ↩︎ ↩︎

  5. If you need to use formatting options that use multiple lines or need more space for clarity when typing, then indenting is necessary.


    To indent, start a line with 4 spaces.

    Line 1
    Line 2
    Line 3
    Line 4
    
    ↩︎ ↩︎
6 Likes

<div>

Back


<div>
  This is a basic container.
</div>
This is a basic container.

align


<div align="center">This text is centered.</div>
<div align="right">This text is aligned right.</div>
<div align="left">This text is aligned left.</div>
This text is centered.
This text is aligned right.
This text is aligned left.

dir


<div dir="rtl">
  هذا نص عربي من ترجمة جوجل. #Translation: "This is Arabic text from Google Translate"
</div>
هذا نص عربي من ترجمة جوجل.

<div dir="rtl" align="center">
  Right-to-left text, centered.
</div>
Right-to-left text, centered.

<div> with other HTML

<div>
  <strong>Bold text</strong> and <em>italic text</em> inside a div.
</div>
Bold text and italic text inside a div.

<div>
  <img src="upload://244lo1jVWMVaPjkxXPw0crZlIls.gif" alt="Example Image">
  <p>Image inside a div</p>
</div>

---

Example Image

Image inside a div


<div>
  Check out <a href="https://www.example.com">this website</a>.
</div>
Check out this website.

<div>
  <h3>Section Title</h3>
  <p>This paragraph is grouped inside a div section.</p>
</div>

Section Title

This paragraph is grouped inside a div section.


<div>
  <table border="1">
    <tr><th>Item</th><th>Price</th></tr>
    <tr><td>Apple</td><td>$1</td></tr>
  </table>
</div>

ItemPrice
Apple$1
4 Likes
Reference Material Link

Examples

<audio>

<audio controls>
  <source src="https://www.w3schools.com/html/horse.mp3" type="audio/mpeg"> # Multiple <source> tags can be used for if the first <source> doesn't work. It will try each audio file sequentially until it finds an audio file
  Your browser does not support the audio element. #Will only show if all sources fail to show anything
</audio>

6 Likes

space space space

4 Likes
Reference Material Link

Reference Material

https://forum.swordbattle.io/t/everything-to-know-about-formatting-a-post/27699?u=ioi

ChatGPT used to generate the following examples
3 Likes

EXtra space

3 Likes

2x EXtra space

3 Likes

uhh do u wanna list this?

2 Likes

I think it’s a WIP

3 Likes

But do you need the maximum character limit for a post increased?

2 Likes

That would be nice, double it if you can

3 Likes

alr lemme do it

2 Likes

alr I doubled it u should be set

3 Likes

Is this how you farm likes

4 Likes

double posting, for likes :skull: . There is a option to “edit”

4 Likes

wdym?

2 Likes

I must be raking in likes with my septuple post :laughing:

3 Likes

Mostly done now, at the very least functional. If anything looks weird, just point it out.

4 Likes

This is SO COOL.

4 Likes

we MEET AGAIN… I got MY eye on you MR “why are you editing?”

4 Likes