Article formatting: the markdown Replium supports
Knowledge base articles are stored as markdown — both when you write them in the visual editor and when an AI client edits them over MCP. The server turns that markdown into HTML, using the same engine for the editor and for the reader. That is why the Preview tab is not an approximation: it renders through the exact code path your visitors get.
Everything below is shown twice: the markdown you type, and the result your reader sees. Everything not listed here is not supported — the last section says what happens to it.
Inline formatting
| What you type | What the reader sees |
|---|---|
**important** | important |
*emphasis* | emphasis |
~~99~~ | |
`article_id` | article_id |
[our pricing](https://replium.chat) | our pricing |
Headings
You type
## A section
### A subsection
#### A sub-subsection
Your reader sees exactly what the headings on this page look like — they are written the same way. Six levels are available, but the page prints the article's title itself, so start the body at ## rather than #.
Headings do two more things for your reader, and neither needs anything from you.
An article with three or more sections gets a contents list, built from its headings and shown
above the text. Sub-sections (###) are listed under the section they belong to. On a phone the
list arrives folded, so it does not stand between your reader and the first sentence.
Every heading can be linked to. Hovering one shows a # next to it; clicking that copies the
address of that section, so you can send somebody straight to Refunds rather than to the top of a
long article. The same addresses work from inside your own articles — see the link example below.
Paragraphs and line breaks
A blank line starts a new paragraph. A single line break does not — this is the one rule that surprises most people, so it is worth seeing.
You type
Call us on weekdays.
We answer within one hour.
Your reader sees one line
Call us on weekdays. We answer within one hour.
You type — two spaces at the end of the first line
Call us on weekdays.··
We answer within one hour.
Your reader sees the break
Call us on weekdays.
We answer within one hour.
(The two dots above stand for the two spaces, which are invisible in the source.)
Lists
You type
- First
- Second
- Nested, indented by two spaces
Your reader sees
- First
- Second
- Nested, indented by two spaces
Numbered lists work the same way, and they do not have to start at 1 — useful when instructions continue steps from an earlier block.
You type
3. Open Settings
4. Pick Billing
Your reader sees
- Open Settings
- Pick Billing
Checklists
A list of steps can carry checkboxes. The editor has a button for it, next to the two list buttons; in markdown it is a bullet list whose items begin with [ ] or [x].
You type
- [ ] Check the invoice
- [x] Send the refund
- [ ] Close the ticket
Your reader sees
- Check the invoice
- Send the refund
- Close the ticket
The boxes are read-only for your reader. A checklist in an article is a statement about which steps are done — the same article is served to everyone, so there is nowhere to keep one visitor's ticks. A reader clicking a box changes nothing. You set the state while writing, and it is part of the article's text.
Keep the items on consecutive lines. A blank line between them makes it a different kind of list, and there the box lands on its own line with its text underneath — one step reading as two. The editor never writes one; an article typed by hand or edited over MCP can, so it is worth seeing what it looks like.
You type — note the blank line
- [ ] Check the invoice
- [x] Send the refund
Your reader sees
-
Check the invoice
-
Send the refund
Checklists can nest, indented by two spaces, the same as any other list.
Quotes
You type
> Refunds are issued to the original payment method.
Your reader sees
Refunds are issued to the original payment method.
Callouts
A note, a warning or a tip: the coloured panel that interrupts an instruction to say something the reader must not walk past. The editor has a button for it, and while your cursor is inside a panel a strip appears under the toolbar to switch between the three kinds.
In markdown a callout is a quote whose first line carries a marker.
You type
> [!NOTE] Refund window
> Money lands on the same card it left. Your bank may hold it a day longer.
Your reader sees
Refund window
Money lands on the same card it left. Your bank may hold it a day longer.
The three markers are [!NOTE], [!WARNING] and [!TIP], and each has its own colour and icon.
The heading is yours, and it is optional. Whatever follows the marker on that same line becomes the panel's heading — in your own language, because Replium never substitutes a word of its own there. Write the marker alone and the panel has no heading; the icon and the colour still say which kind it is.
You type
> [!WARNING]
> Do not switch the device off while the firmware is updating.
Your reader sees
Do not switch the device off while the firmware is updating.
Three things worth knowing:
- The marker owns the start of the first line.
> See also [!TIP] belowis an ordinary quote, and so is> [!NOTEBOOK]— the marker has to end a word. - A marker Replium does not know is left alone. GitHub has five kinds; Replium reads three.
[!IMPORTANT]and[!CAUTION]stay visible as text inside an ordinary quote, so nothing is lost and you can see why. - Elsewhere, a callout is still a quote. Anything that reads markdown and has never heard of the marker shows the panel as an ordinary quotation rather than as broken punctuation — which is also why the syntax is a quote rather than something more decorative.
Tables
You type
| Plan | Price | Seats |
|:-----|------:|:-----:|
| Free | 0 | 1 |
| Pro | 29 | 10 |
Your reader sees
| Plan | Price | Seats |
|---|---|---|
| Free | 0 | 1 |
| Pro | 29 | 10 |
:--- aligns a column left, ---: right, :---: centre.
Code
You type
```sql
select count(*) from orders
```
Your reader sees
select count(*) from orders
The language after the backticks is written into the page markup, but there is no colour highlighting yet — the block renders in a single colour on a grey background.
Your reader gets a copy button. Hovering a code block shows Copy in its top-right corner; on a phone the button sits under the block, where it cannot cover the code. It copies the block's text exactly — no backticks, no language name, nothing to clean up before pasting.
Horizontal rule
You type
---
Your reader sees
Links
You type
An ordinary link to [our pricing page](https://replium.chat).
A bare address becomes a link on its own: https://replium.chat
So does an email: support@replium.chat
A link to another article of your knowledge base: [Refund policy](/kb/refund-policy)
A link to a section of an article: [Refunds](/kb/refund-policy#refunds)
Your reader sees
An ordinary link to our pricing page.
A bare address becomes a link on its own: https://replium.chat
So does an email: support@replium.chat
A link to another article of your knowledge base: Refund policy
A link to a section of an article: Refunds
Three things happen without you asking:
- External links open in a new tab. Links inside your knowledge base open in the same tab, so a reader working through a series of articles does not collect a dozen tabs.
- The editor has a button that picks an article and fills in its address for you — no need to type
/kb/…by hand. - Only
http,httpsandmailtoare allowed. A link to anything else (javascript:,data:,ftp:) stays visible as text but loses its destination — that protects the visitors reading your public knowledge base.
Images
You type

The address comes from the upload button in the editor, or from the upload tool in MCP. Formats: JPG, PNG, GIF, WEBP, up to 5 MB. SVG is rejected on purpose — that format can carry an executable script inside the file.
The caption in square brackets is not optional. It is the only text of an image that search sees, and the only thing a visitor using a screen reader gets.  is a lost image for both.
A reader can open a picture full size. Clicking an image in a published article shows it over the page, as large as the screen allows, with your caption under it; Escape, the close button or a click outside it returns to the article. A screenshot is rendered at the width of the article's column, which is usually narrower than the file, so this is how the detail you took the screenshot for stays readable. An image you wrapped in a link keeps its link — the click follows the destination instead.
Text set inside a picture does not exist as far as search is concerned. If it is a table or a list of statements, write it as text and keep pictures for screenshots and diagrams.
What is not supported yet
This one is worth seeing rather than reading about, because it looks fine while you are typing it.
You type raw HTML
<div style="padding:16px">Boxed</div>
Your reader sees the tags themselves
<div style="padding:16px">Boxed</div>
The rest, in short:
| Construct | What happens |
|---|---|
| Underline | Markdown has no underline, so the editor deliberately offers no button for one — use bold for emphasis |
Footnotes [^1] | Stay as text |
Emoji shortcodes :smile: | Stay as text. Actual emoji characters work fine 🎉 |
| Video, and embedding of external pages | Not supported |
| Columns, cards | Not supported |
Anything outside the supported list is also lost by the visual editor on save: it rebuilds the text as markdown, and a construct it does not recognise does not survive until the next time the article is opened.
Size limit
One article holds up to 100,000 bytes. Bytes of UTF-8 are counted, not characters — a Latin letter is one byte, a Cyrillic or accented one is two, and an emoji is four.
How to be sure it came out right
The Preview tab in the editor renders on the server, with the same code as the public page. If a construct looks right in the preview, it will look the same to your reader; if the preview shows a tag or stray characters, the reader sees them too.