# Message formatting
[//]: # (All screenshots here require line-height: 22px and font-size: 16px in .message-content.)
[//]: # (Requires some additional fiddling for the LaTeX picture, inline code span, and maybe a few others.)
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**](#message-formatting-reference) in the Zulip app that you can use
whenever you need a reminder of the formatting syntax below.
* [Text emphasis](#text-emphasis)
* [Lists](#lists)
* [Links and images](#links)
* [Code blocks](#code)
* [LaTeX](#latex)
* [Quotes](#quotes)
* [Spoilers](#spoilers)
* [Emoji and emoticons](#emoji-and-emoticons)
* [Mentions](#mentions)
* [Status messages](#status-messages)
* [Global times](#global-times)
* [Tables](#tables)
* [To-do lists](#to-do-lists)
* [Paragraphs and lines](#paragraphs-and-lines)
## Text emphasis
{!emphasis.md!}
!!! tip ""
You can also use buttons or keyboard shortcuts (Ctrl +
B or Ctrl + I) to make text bold or italic.
[Learn more](/help/text-emphasis).
## Lists
Bulleted lists
```
* bulleted lists
* with sub-bullets too
* sub-bullets start with 2 spaces
* start sub-sub-bullets with 4 spaces
* multi
line
bullet
- dashes and
+ pluses are ok too
```

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

## Links
Zulip auto-linkifies URLs and [valid stream (and topic) names][link-to-conversation].
You can also add a [custom linkifier](/help/add-a-custom-linkifier) to link
patterns like `#1234` to your ticketing system.
[link-to-conversation]: /help/link-to-a-message-or-conversation
```
Auto-detected URL: zulip.com
Named link: [Zulip homepage](zulip.com)
Stream: #**stream name**
Topic: #**stream name>topic name**
Custom linkifier: #1234 (links to ticket 1234 in your ticketing system)
```

## Images
See [Share and upload files](/help/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)
```

## Code
~~~
Inline: `let x = 5`
Code block:
```
def f(x):
return x+1
```
Syntax highlighting:
```python
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.
See the main [code blocks article](/help/code-blocks) for details on
[syntax highlighting](/help/code-blocks#language-tagging), [code
playgrounds](/help/code-blocks#code-playgrounds), and other features.
## LaTeX
~~~
Inline: $$O(n^2)$$
Displayed:
``` math
\int_a^b f(t)\, dt = F(b) - F(a)
```
~~~

Zulip's LaTeX rendering is powered by [KaTeX](https://katex.org).
Their [support table](https://katex.org/docs/support_table.html) is a
helpful resource for checking what's supported or how to express
something.
## Quotes
~~~
> a multi-line
quote on two lines
normal text
```quote
A multi-paragraph
quote in two paragraphs
```
~~~

## Spoilers
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:

Clicking the arrow will expand the spoiler content:

## Emoji and emoticons
To translate emoticons into emoji, you'll need to
[enable emoticon translations](/help/configure-emoticon-translations).
You can also [add custom emoji](/help/custom-emoji).
```
:octopus: :heart: :zulip: :)
```

## Mentions
Learn more about mentions [here](/help/mention-a-user-or-group).
```
Users: @**Polonius** or @**aaron|26** or @**|26** (two asterisks)
User group: @*support team* (one asterisk)
Silent mention: @_**Polonius** or @_**|26** (@_ instead of @)
```
The variants with numbers use user IDs, and are intended for
disambiguation (if multiple users have the same name) and bots (for
the variant that only contains the user ID).

## Status messages
```
/me is away
```

## 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 `