Guide: Babycode

What is babycode?

You may be familiar with BBCode, a loosely related family of markup languages popular on forums. Babycode is another, simplified, dialect of those languages. It is a way of formatting text by enclosing parts of it in special tags.

A tag is a short name enclosed in square brackets. Tags can be opening tags, like [b] or closing tags, like [/b]. Anything inserted between matching opening and closing tags is known as the tag's content.

Some tags can provide more specific instructions using an attribute. An attribute is added to the opening tag with an equals sign (=). This allows you to specify details like a particular color or a link's address.

Babycode is used in posts, user signatures, and MOTDs.

Text formatting tags

  • To make some text bold, enclose it in [b][/b]:
    [b]Hello World[/b]
    Will become
    Hello World
  • To italicize text, enclose it in [i][/i]:
    [i]Hello World[/i]
    Will become
    Hello World
  • To make some text strikethrough, enclose it in [s][/s]:
    [s]Hello World[/s]
    Will become
    Hello World
  • To underline some text, enclose it in [u][/u]:
    [u]Hello World[/u]
    Will become
    Hello World
  • To make some text big, enclose it in [big][/big]:
    [big]Hello World[/big]
    Will become
    Hello World
  • Similarly, you can make text small with [small][/small]:
    [small]Hello World[/small]
    Will become
    Hello World
  • You can change the text color by using [color][/color]:
    [color=red]Red text[/color]
    [color=white]White text[/color]
    [color=#3b08f0]Blueish text[/color]
    Will become
    Red text
    White text
    Blueish text
  • You can center text by enclosing it in [center][/center]:
    [center]Hello World[/center]
    Will become

    Hello World

  • You can right-align text by enclosing it in [right][/right]:
    [right]Hello World[/right]
    Will become

    Hello World

  • Note: the center and right tags will break the paragraph. See Paragraph rules for more details.

Emoji

There are a few emoji in the style of old forum emotes:

Short code Emoji result
:angry: angry
:(: frown
:D: grin
:imp: imp
:angryimp: impangry
:impangry: impangry
:lobster: lobster
:|: neutral
:pensive: pensive
:scissors: scissors
:): smile
:smiletear: smiletear
:crytear: smiletear
:,: sob
:T: sob
:cry: sob
:sob: sob
:o: surprised
:O: surprised
:hmm: think
:think: think
:thinking: think
:P: tongue
:p: tongue
:weary: weary
:;: wink
:wink: wink

Special thanks to the Forumoji project and its contributors for these graphics.

Paragraph rules

Line breaks in babycode work like Markdown: to start a new paragraph, use two line breaks:

code blockparagraph 1

paragraph 2
Will produce:

paragraph 1

paragraph 2

To break a line without starting a new paragraph, end a line with two spaces:

code blockparagraph 1  
still paragraph 1
That will produce:

paragraph 1
still paragraph 1

Additionally, the following tags will break into a new paragraph:

  • [code] (code block, not inline);
  • [img];
  • [center];
  • [right];
  • [ul] and [ol];
  • [quote].

Loose links (starting with http:// or https://) will automatically get converted to clickable links. To add a label to a link, use [url=https://example.com]Link label[/url]:
Link label

Attaching an image

To add an image to your post, use the [img] tag:
[img=https://forum.poto.cafe/avatars/default.webp]the Python logo with a cowboy hat[/img]

the Python logo with a cowboy hat

The attribute is the image URL. The text inside the tag will become the image's alt text.

Images will always break up a paragraph and will get scaled down to a maximum of 400px. However, consecutive image tags will try to stay in one line, wrapping if necessary. Break the paragraph if you wish to keep images on their own paragraph.

Multiple images attached to a post can be clicked to open a dialog to view them.

Adding code blocūs

There are two kinds of code blocks recognized by babycode: inline and block. Inline code blocks do not break a paragraph. They can be added with [code]your code here[/code]. As long as there are no line breaks inside the code block, it is considered inline. If there are any, it will produce this:

code blockfunc _ready() -> void:
	print("hello world!")

Optionally, you can enable syntax highlighting by specifying the language in the attribute like this: [code=gdscript]

GDScriptfunc _ready() -> void:
	print("hello world!")

A full list of languages that can be highlighted is available here (the short names column).

Inline code tags look like this: Inline code

Babycodes are not parsed inside code blocks.

Quoting

Text enclosed within [quote][/quote] will look like a quote:

A man provided with paper, pencil, and rubber, and subject to strict discipline, is in effect a universal machine.

Lists

There are two kinds of lists, ordered (1, 2, 3, ...) and unordered (bullet points). Ordered lists are made with [ol][/ol] tags, and unordered with [ul][/ul]. Every new paragraph according to the usual paragraph rules will create a new list item. For example:

code block[ul]
item 1

item 2

item 3  
still item 3 (break line without inserting a new item by using two spaces at the end of a line)
[/ul]
Will produce the following list:
  • item 1
  • item 2
  • item 3
    still item 3 (break line without inserting a new item by using two spaces at the end of a line)

Spoilers

You can make a section collapsible by using the [spoiler] tag:

code block[spoiler=Major Metal Gear Spoilers]Snake dies[/spoiler]
Will produce: All other tags are supported inside spoilers.

Mentioning users

You can mention users by their username (not their display name) by using @username. A user's username is always shown below their avatar and display name on their posts and their user page.

A mention will show up on your post as a clickable box with the user's display name if they have one set or their username with an @ symbol if they don't:

@user-without-display-name User with display name Your display name

Mentioning a user does not notify them. It is simply a way to link to their profile in your posts.

Horizontal rules

The special --- markup inserts a horizontal separator, also known as a horizontal rule:

code blocksome section
---
another section
Will become

some section


another section

Horizontal rules will always break the current paragraph.

Void tags

The special void tags [lb], [rb], [d] and [at] will appear as the literal characters [, ], -, and @ respectively. Unlike other tags, they are self-contained and have no closing equivalent.

  • [lb] and [rb] allow you to use square brackets without them being interpreted as Babycode:
    code block[color=red]This text will be red[/color]
    
    [lb]color=red[rb]This text won't be red[lb]/color[rb]
    Will result in:
    This text will be red

    [color=red]This text won't be red[/color]

  • The [at] tag allows you to use the @ symbol without it being turned into a mention.
  • The [d] tag allows you to use the - (dash) symbol without it being turned into a rule.