Format your messages

Zulip uses a variant of GitHub Flavored Markdown to allow you to easily format your messages.


**bold**, *italic*, and ~~strikethrough~~ text
***~~All three at once~~***

Markdown emphasis


Bulleted lists

* bulleted lists
  * with sub-bullets too
  * sub-bullets start with 2 spaces
    * start sub-sub-bullets with 4 spaces
* multi
- dashes and
+ pluses are ok too

Markdown bullets

Numbered lists

1. numbered lists
1. increment automatically
1. one more

Markdown numbered lists

Zulip auto-linkifies URLs and valid stream names. You can also add a custom linkifier to link patterns like #1234 to your ticketing system.

Auto-detected URL:
Named link: [Zulip homepage](
Stream: #**stream name**
Topic: #**stream name>topic name**
Custom linkifier: #1234 (links to ticket 1234 in your ticketing system)

Markdown links


See Share and upload files to learn more about dropping, pasting, and attaching images.

[A whale of a good time](https://your.zulip.domain/user_uploads/1/46/IPvysqXEtiTG1ZdNBrwAZODi/whale-time.png)

Markdown image


Inline: `let x = 5`

Code block:
def f(x):
   return x+1

Syntax highlighting:
def fib(n):
    # TODO: base case
    return fib(n-1) + fib(n-2)

Markdown code

You can also use ~~~ to start codeblocks, or just indent the code 4 or more spaces.

Zulip supports syntax highlighting for hundreds of languages, and a typeahead will pop up when you start typing after the ```. If you can't find your language, search for it here and try the short names listed for the lexers for your language.

Organization administrators can also configure a default syntax highlighting language. In this configuration, one can use ```text to display content without any syntax highlighting.


Inline: $$O(n^2)$$

``` math
\int_a^b f(t)\, dt = F(b) - F(a)

Markdown LaTeX

Zulip's LaTeX rendering is powered by KaTeX. Their support table is a helpful resource for checking what's supported or how to express something.


> a multi-line
quote on two lines

normal text

A multi-paragraph

quote in two paragraphs

Markdown quotes


You can use spoilers to hide content that you do not want to be visible until the user interacts with it.

Normal content in message

```spoiler Spoiler Header
Spoiler content. These lines won't be visible until the user expands the spoiler.

The spoiler will initially display in a collapsed form:

Spoiler collapsed

Clicking the arrow will expand the spoiler content:

Spoiler expanded

Emoji and emoticons

To translate emoticons into emoji, you'll need to enable emoticon translations. You can also add custom emoji.

:octopus: :heart: :zulip: :)

Markdown emoji


Learn more about mentions here. The numbers will be added automatically by the typeahead if needed for disambiguation.

Users: @**Polonius** or @**Zoe|2132** (two asterisks)
User group: @*support team* (one asterisk)
Silent mention: @_**Polonius** (@_ instead of @)

Markdown mentions

Status Messages

/me is away

Markdown status

Mention a time

When collaborating with people in another timezone, you often need to express a specific time clearly. Rather than typing out your timezone and having everyone translate the time in their heads, in Zulip, you can mention a time, and it'll be displayed to each user in their own timezone (just like the timestamps on Zulip messages).

A date picker will appear once you type <time.

Our next meeting is scheduled for <time:2020-05-28T13:30:00+05:30>

A person in San Francisco will see:

Our next meeting is scheduled for Thu, May 28 2020, 1:00 AM.

While someone in India will see:

Our next meeting is scheduled for Thu, May 28 2020, 1:30 PM.

You can also use other formats such as UNIX timestamps or human readable dates, for example, <time:May 28 2020, 1:30 PM IST>.


The initial pipes (|) are optional if every entry in the first column is non-empty. The header separators (---) must be at least three dashes long.

|| yes | no | maybe
| A | left-aligned | centered | right-aligned
| B |     extra      spaces      |  are |  ok
| C | **bold** *italic* ~~strikethrough~~  :smile:  ||

Markdown table

Paragraphs and lines

One blank space for a new paragraph
New line, same paragraph

New paragraph

---, ***, or ___ for a horizontal line
Over the line


Under the line

Markdown paragraph

In-app help

A summary of the formatting syntax is available in-app.

  1. Open the compose box.

  2. Click the A () icon at the bottom of the compose box.