Markdown Support
Accent CMS renders CommonMark markdown with several GFM (GitHub Flavored Markdown) extensions enabled. This page is a complete reference of every supported construct.
CommonMark Baseline
These are the core markdown constructs available in all content pages.
Headings
ATX-style headings use # prefixes:
# Heading 1 ## Heading 2 ### Heading 3 #### Heading 4 ##### Heading 5 ###### Heading 6
Closing hashes are optional and ignored: ## Title ## renders the same as ## Title.
Setext-style headings use underlines:
Heading 1 ========= Heading 2 ---------
All headings automatically receive anchor IDs based on their text content for deep linking.
Paragraphs
Consecutive lines of text form a single paragraph. Separate paragraphs with a blank line:
First paragraph text. Second paragraph text.
Text Formatting
| Syntax | Renders as |
|---|---|
*italic* or _italic_ | italic |
**bold** or __bold__ | bold |
***bold italic*** | bold italic |
`inline code` | inline code |
~~strikethrough~~ |
Links
Inline links:
[Link text](https://example.com) [Link with title](https://example.com "Title text")
Reference links:
[Link text][ref-id] [ref-id]: https://example.com
Autolinks:
<https://example.com>
Renders as a clickable link with the URL as the link text.
Images
 
Lists
Unordered lists use -, *, or +:
- Item one - Item two - Nested item - Another nested item - Item three
Ordered lists use numbers followed by a period:
1. First item 2. Second item 3. Third item
Ordered lists can start at any number:
3. Starts at three 4. Continues from there
This produces <ol start="3">.
Nested lists are created by indenting with two or more spaces:
- Parent item - Child item - Grandchild item - Another parent
Blockquotes
> This is a blockquote. > > It can span multiple paragraphs.
Blockquotes can be nested:
> Outer quote > > Inner quote > > > Deeply nested
Code Blocks
Fenced code blocks use triple backticks with an optional language identifier:
```rust fn main() { println!("Hello, world!"); } ```
The language identifier sets a class="language-rust" attribute on the output, which is used for syntax highlighting.
Indented code blocks use four spaces of indentation:
fn main() { println!("Hello!"); }
Horizontal Rules
Any of these produce a horizontal rule:
--- *** ___
Line Breaks
Hard break – two trailing spaces at the end of a line force a line break (<br />):
First line Second line
Soft break – a single newline within a paragraph does not produce a <br />. The text flows together.
Backslash Escapes
Use a backslash to render literal characters that would otherwise be interpreted as markdown:
\*not italic\* \# not a heading \[not a link\]
Raw HTML
Inline and block HTML is passed through to the output:
This has <span style="color: red">red text</span> in it. <div class="custom"> Block-level HTML is also preserved. </div>
GFM Extensions
Accent CMS enables these GitHub Flavored Markdown extensions.
Tables
Tables use pipes and hyphens:
| Header 1 | Header 2 | Header 3 | |----------|----------|----------| | Cell 1 | Cell 2 | Cell 3 | | Cell 4 | Cell 5 | Cell 6 |
Column alignment is controlled by colons in the separator row:
| Left | Center | Right | |:---------|:--------:|---------:| | left | center | right |
:---aligns left:---:aligns center---:aligns right
Tables support inline formatting within cells (bold, italic, code, links). Literal pipes inside code spans (`a|b`) are handled correctly.
Strikethrough
Wrap text in double tildes:
~~deleted text~~
Renders as: deleted text
Single tildes (~text~) produce subscript by default (not strikethrough); double tildes (~~text~~) produce strikethrough.
Task Lists
- [ ] Unchecked item - [x] Checked item - [ ] Another unchecked item
Produces checkboxes (disabled by default). Regular list items without [ ] or [x] are unaffected.
Footnotes
Reference a footnote in text and define it elsewhere:
This claim needs a source[^1]. Another point[^note]. [^1]: Source citation here. [^note]: Footnotes can have any label.
Footnotes are collected and rendered as a section at the end of the page with back-references.
Heading Attributes
Custom IDs and classes can be added to headings:
# Title {#custom-id} ## Section {.highlight} ### Both {#my-id .my-class} ## Multiple Classes {.a .b}
This produces <h1 id="custom-id">, <h2 class="highlight">, etc. Custom IDs override the auto-generated anchor ID.
Additional Extensions
Smart punctuation, math, definition lists, superscript, subscript, and wikilinks are all enabled by default, alongside footnotes, task lists, heading attributes, admonitions, and metadata blocks. Each is individually toggleable via the markdown: block in config.yaml. See the Markdown Extensions guide for the full syntax and configuration of each extension.
Edge Cases
- Empty input produces empty output
- Unicode is fully preserved in headings, paragraphs, and all constructs
- Deeply nested blockquotes and lists are supported without depth limits
- Long headings render correctly regardless of length
- Special characters in URLs (e.g.,
%20) are preserved as-is in linkhrefattributes