Markdown Guide
Markdown Guide
hum uses GitHub Flavored Markdown (GFM) with syntax highlighting and XSS-safe rendering. Here's every supported feature.
Headings
Use ## through ##### for section headings. Each heading automatically gets an anchor ID for linking.
## Section Title
### Subsection Title
#### Sub-subsection Title
##### Minor Heading
Text Formatting
**bold text**
*italic text*
***bold and italic***
~~strikethrough~~
`inline code`
Links & Images
[Link text](https://example.com)
[Link text](https://example.com "Title")

https://example.com
Lists
- First item - Second item - Third item
1. First item 2. Second item 3. Third item
- Parent item - Child item - Another child - Back to parent
- [x] Completed task - [ ] Pending task - [ ] Another task
Code Blocks
Fenced code blocks support syntax highlighting for most popular languages. Specify the language after the opening backticks.
```javascript const greeting = "Hello, hum!"; console.log(greeting); ```
```python
def greet(name: str) -> str:
return f"Hello, {name}!"
``````json
{
"title": "My Article",
"category": "analysis"
}
`````` Plain text code block No syntax highlighting ```
Blockquotes
> This is a blockquote.
> First line of the quote. > > Second paragraph of the quote.
> Outer quote > > > Nested quote inside
Tables
Tables use the GFM (GitHub Flavored Markdown) pipe syntax. Column alignment is supported.
| Column A | Column B | Column C | |----------|----------|----------| | Cell 1 | Cell 2 | Cell 3 | | Cell 4 | Cell 5 | Cell 6 |
| Left | Center | Right | |:---------|:--------:|---------:| | Left | Center | Right | | aligned | aligned | aligned |
Horizontal Rules
---
Paywall Marker
For paid articles, use the <!-- paywall --> HTML comment to mark where the free preview ends.
## Introduction Free preview content goes here. <!-- paywall --> ## Premium Content This section is only visible after purchase.
• If the marker is present, content splits at that exact position (ratio is ignored)
• If no marker is present, falls back to preview_ratio percentage
• The marker is invisible in rendered HTML — rehype-sanitize strips HTML comments
• Place it on its own line between paragraphs for a clean break
Supported Languages
Code blocks support syntax highlighting via rehype-highlight. Specify the language after the opening ```:
And many more — any language supported by highlight.js works.
Rendering Pipeline
Your Markdown goes through a multi-stage pipeline to produce safe, styled HTML:
remark-parseParse Markdown into AST
remark-gfmEnable GFM extensions (tables, strikethrough, task lists, autolinks)
remark-rehypeConvert to HTML AST
rehype-sanitizeRemove unsafe HTML (XSS protection)
rehype-slugAdd anchor IDs to headings
rehype-highlightApply syntax highlighting to code blocks
rehype-stringifyOutput final HTML
Limitations
For security and consistency, some features are intentionally restricted:
| Feature | Status |
|---|---|
| Raw HTML | Stripped by sanitizer |
| <script> tags | Removed (XSS protection) |
| <iframe> embeds | Removed (security) |
| <style> tags | Removed (consistency) |
| Footnotes | Not supported (standard GFM only) |
| Math / KaTeX | Not supported |
| Custom containers | Not supported |
| Emoji shortcodes | Not supported (use actual emoji characters) |
Quick Reference
## Heading 2
### Heading 3
**bold** *italic* ~~strike~~ `code`
[Link](url) 
- Unordered list
1. Ordered list
- [x] Task list
> Blockquote
```python
# Code with highlighting
print("hello")
```
| Col A | Col B |
|-------|-------|
| Data | Data |
---