Message formatting

Zulip uses Markdown to allow you to easily format your messages. Even if you've never heard of Markdown, you are probably familiar with basic Markdown formatting, such as using * at the start of a line in a bulleted list, or around text to indicate emphasis.

This page provides an overview of all the formatting available in Zulip. There is a convenient message formatting reference in the Zulip app that you can use whenever you need a reminder of the formatting syntax below.

Text emphasis

In Zulip, you can make text bold or italic, or cross it out with strikethrough.

What you type

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

What it looks like

Markdown emphasis

You can also use buttons or keyboard shortcuts (Ctrl + B or Ctrl + I) to make text bold or italic. Learn more.

Bulleted lists

You can create bulleted lists using *, -, or + at the start of each line. Add two spaces before the bullet to create a nested list.

What you type

* 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

What it looks like

Markdown bullets

Numbered lists

You can create numbered lists by putting a number followed by a . at the start of each line. Lists are numbered automatically, so you can reorder list items while editing your message without having to update the numbers. Add two spaces before the number to create a nested list.

What you type

1. numbered lists
1. increment automatically
   1. use nested lists if you like
   3. delete or reorder lines without fixing the numbering
1. one more
   17. lists can start at any number
   18. so you can continue a list after some other text

What it looks like

Markdown numbered lists

In Zulip, you can insert a named link using Markdown formatting. In addition, Zulip automatically creates links for you when you enter:

What you type

Named link: [Zulip homepage](
A URL (links automatically):
Stream link: #**stream name**
Stream and topic link: #**stream name>topic name**
Custom linkifier: For example, #2468 can automatically link to an issue in your tracker.

What it looks like

Markdown links

You can also use a button or a keyboard shortcut (Ctrl + Shift + L) to insert a link. Learn more.

Code blocks

You can write snippets of code, code blocks, and other text in a fixed-width font using standard Markdown formatting. Zulip also has syntax highlighting and supports configuring custom code playgrounds.

What you type

Inline code span: `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)

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

What it looks like

Markdown code

A widget in the top right corner of code blocks allows you to easily copy code to your clipboard.


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

What you type

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

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

What it looks like

Markdown LaTeX


You can format quotes one line at a time, or create a block of text that will be formatted as a quote.

What you type

> a multi-line
quote on two lines

normal text

A multi-paragraph

quote in two paragraphs

What it looks like

Markdown quotes

There is a handy option to quote and reply to a message in Zulip.


Zulip lets you temporarily hide content in a collapsible spoiler section, with only the header initially shown. Clicking on the header reveals the hidden content.

What you type

```spoiler The spoiler heading might summarize what's inside
This content is initially hidden.

> You can combine spoilers with other formatting.


A message can contain both spoilers and other content.

Leave the heading blank if you like.

What it looks like

Collapsed spoilers:

Spoiler collapsed

Expanded spoilers:

Spoiler expanded

Emoji and emoticons

There are several ways to use an emoji in your message:

You can add custom emoji for your organization. Like default emoji, custom emoji can be entered into the compose box by name, or selected from the emoji picker.

What you type

:octopus: :heart: :zulip: :)

What it looks like

Markdown emoji

Mention a user or group

You can mention a team member or user group to call their attention to a message. Mentions follow the same notification settings as direct messages and alert words. A silent mention allows you to refer to a user without triggering a notification.

What you type

Users: @**Bo Lin** or @**Ariella Drake|26** (two `*`)
User group: @*support team* (one `*`)
Silent mention: @_**Bo Lin** or @_**Ariella Drake|26** (`@_` instead of `@`)

A | followed by a user ID is inserted automatically when you select a user from the typeahead suggestions, if there are two users with the same name in the organization.

What it looks like

Markdown mentions

Status messages

/me is away

Markdown status

Global times

When collaborating with people in another time zone, you often need to express a specific time clearly. Rather than typing out your time zone 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 time zone (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

To-do lists

Sending a message with the text /todo creates a simple collaborative to-do list. Any user who can access the message can add tasks by entering the task's title and description and clicking "Add task". Once created, task titles and descriptions cannot be edited.

Tasks can be marked (and unmarked) as completed by clicking the checkboxes on the left.

Markdown todo-lists

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

Message formatting reference

A summary of the formatting syntax above is available in the Zulip app.

  1. Open the compose box.

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