/help/markdown
Markdown cheatsheet
Blog posts and comments take full markdown (CommonMark plus GFM tables, strikethrough, and task lists). Chat and PMs stay light. Raw HTML never renders anywhere.
Posts and comments
# Heading 1
## Heading 2 … up to ###### Heading 6
Paragraphs are separated by a blank line.
A single newline is a line break.
**bold**, *italic*, ***both***, ~~strike~~, `code`, and \*escaped\*.
- bullet
- bullet
- nested bullet
1. numbered
2. numbered
1. nested
- [ ] task to do
- [x] task done
> quoted line
> > nested quote
[link](/tags) · <https://example.com> · bare https://example.com

| Left | Right |
|:-----|------:|
| a | 10 |
---
```ts
const n = 1
```
```art
┌──────────┐
│ boxen │
└──────────┘
```
indented code block
Links may point at http(s), mailto:, or a same-origin path. External links open in a new tab. Images must be same-origin paths starting with / — a remote image URL renders as its alt text.
Posts only
A fence may carry a filename in brackets. Tag a fence art (or ascii / utf8) for ASCII / UTF-8 art — same monospace stack as chat, spaces kept, no markdown inside. Embeds need a same-origin src starting with /, no ... Help samples live under public/. Blog attachments are uploaded on create or edit (audio, video, PDF, torrent, eml; 5 GB max) and served at /media|docs|torrents|emails/{itemId}/file with the same visibility as the post.
```ts [app/server.ts]
const n = 1
```
::eml{src="/emails/hello.eml"}
::torrent{src="/torrents/example.torrent"}
::pdf{src="/docs/report.pdf"}
::audio{src="/media/clip.mp3"}
::video{src="/media/demo.mp4"}
Chat and PMs (light)
| **bold** | Bold |
| *italic* or _italic_ | Italic |
| ~~strike~~ | Strikethrough |
| `inline code` | Inline code |
| [label](https://example.com) | Link (http(s) or /path) |