Obsidian Syntax Compatibility Test

Published September 10, 2026 by Amaya

# Obsidian Syntax Compatibility Test

This file is a fixture for checking how completely the app's markdown pipeline supports the official Obsidian syntax. It mirrors the three source documents:

- [Basic formatting syntax](https://obsidian.md/help/syntax)
- [Advanced formatting syntax](https://obsidian.md/help/advanced-syntax)
- [Obsidian Flavored Markdown](https://obsidian.md/help/obsidian-flavored-markdown)

Each section contains **live content** (actual syntax so a renderer demonstrates support) followed by a displayed source example.

Dialect legend:

- **CM** = CommonMark
- **GFM** = GitHub Flavored Markdown
- **OFM** = Obsidian Flavored Markdown (Obsidian-only extension)

## Coverage checklist

Mark each row as `pass` / `fail` / `n/a` after rendering this file through the pipeline.

| # | Feature | Syntax | Dialect | Status |
|---|---------|--------|---------|--------|
| 1.1 | ATX headings | `#` to `######` | CM | ☐ |
| 1.2 | Setext headings | `===` / `---` | CM | ☐ |
| 1.3 | Bold | `**text**`, `__text__` | CM | ☐ |
| 1.4 | Italic | `*text*`, `_text_` | CM | ☐ |
| 1.5 | Bold + nested italic | `**text _nested_ text**` | CM | ☐ |
| 1.6 | Bold + italic | `***text***`, `___text___` | CM | ☐ |
| 1.7 | Strikethrough | `~~text~~` | GFM | ☐ |
| 1.8 | Highlight | `==text==` | OFM | ☐ |
| 1.9 | Escaping | `\*literal\*` | CM | ☐ |
| 1.10 | Line breaks | trailing ` ` or backslash | CM | ☐ |
| 1.11 | Internal links (wikilinks) | `[[Note]]` | OFM | ☐ |
| 1.12 | Wikilink alias | `[[Note|alias]]` | OFM | ☐ |
| 1.13 | Heading link | `[[Note#Heading]]` | OFM | ☐ |
| 1.14 | Block link | `[[Note#^block-id]]` | OFM | ☐ |
| 1.15 | External links | `[text](url)` | CM | ☐ |
| 1.16 | Link spaces escaped | `%20` / `< >` | CM | ☐ |
| 1.17 | Obsidian URI | `obsidian://open?...` | OFM | ☐ |
| 1.18 | Images (external) | `![alt](url)` | CM | ☐ |
| 1.19 | Image resize | `![alt\|640x480](url)` | OFM | ☐ |
| 1.20 | Blockquotes | `> text` | CM | ☐ |
| 1.21 | Unordered lists | `-`, `*`, `+` | CM | ☐ |
| 1.22 | Ordered lists | `1.` and `1)` | CM | ☐ |
| 1.23 | Task lists | `- [ ]`, `- [x]` | GFM | ☐ |
| 1.24 | Nested / mixed lists | indented | CM | ☐ |
| 1.25 | Horizontal rules | `***`, `---`, `___` | CM | ☐ |
| 1.26 | Inline code | `` `code` `` | CM | ☐ |
| 1.27 | Fenced code | ```` ``` ```` / `~~~` | CM | ☐ |
| 1.28 | Indented code | 4 spaces / Tab | CM | ☐ |
| 1.29 | Code language | ```` ```js ```` | CM | ☐ |
| 1.30 | Nested code fences | 4+ backticks | CM | ☐ |
| 1.31 | Footnotes | `[^1]` | CM | ☐ |
| 1.32 | Inline footnote | `^[text]` | CM | ☐ |
| 1.33 | Comments | `%%text%%` | OFM | ☐ |
| 1.34 | Tags | `#tag`, `#parent/child` | OFM | ☐ |
| 1.35 | Autolinks | `` / bare URL | GFM | ☐ |
| 2.1 | Embeds (note) | `![[Note]]` | OFM | ☐ |
| 2.2 | Embeds (heading) | `![[Note#Heading]]` | OFM | ☐ |
| 2.3 | Block references | `^block-id` | OFM | ☐ |
| 2.4 | Properties / frontmatter | YAML `---` block | CM | ☐ |
| 2.5 | Directory links | `[[Folder/Note]]` | OFM | ☐ |
| 2.6 | HTML passthrough | `` etc. | CM | ☐ |
| 3.1 | Tables | pipe tables | GFM | ☐ |
| 3.2 | Table alignment | `:--` `:--:` `--:` | GFM | ☐ |
| 3.3 | Styled content in tables | links / `**bold**` / embeds | GFM | ☐ |
| 3.4 | Escaped pipes in tables | `\|` | GFM | ☐ |
| 3.5 | Mermaid diagrams | ```` ```mermaid ```` | OFM | ☐ |
| 3.6 | Math (inline) | `$...$` | OFM | ☐ |
| 3.7 | Math (block) | `$$...$$` | OFM | ☐ |
| 4.1 | Callouts (basic) | `> [!note]` | OFM | ☐ |
| 4.2 | Callout titles / custom titles | `> [!tip] Title` | OFM | ☐ |
| 4.3 | Foldable callouts | `> [!faq]-` / `[!info]+` | OFM | ☐ |
| 4.4 | Nested callouts | `>> [!todo]` | OFM | ☐ |

---

## 1. Basic formatting syntax

### 1.1 ATX headings

# Heading 1

## Heading 2

### Heading 3

#### Heading 4

##### Heading 5

###### Heading 6

####### This is NOT a heading (seven hashes)

### 1.2 Setext headings

Setext headings (heading level 1 and 2 only).

Setext Heading 1
=================

Setext Heading 2
-----------------

### 1.3 Bold

**Bold text** and __also bold text__.

### 1.4 Italic

*Italic text* and _also italic text_.

### 1.5 Bold and nested italic

**Bold text and _nested italic_ text** — nested italic stays italic inside bold.

### 1.6 Bold and italic

***Bold and italic text*** and ___bold and italic text___.

### 1.7 Strikethrough (GFM)

~~Striked out text~~ stays struck through.

### 1.8 Highlight (Obsidian-only)

==Highlighted text== renders highlighted.

### 1.9 Escaping markdown syntax

\*\*This line will not be bold.**

\*This line will not be italic.*

`\#` escaped hash: \#not-a-heading

### 1.10 Line breaks

Two trailing spaces at the end of a line start a hard break:
next line, still same paragraph.
Or a backslash at line end: \
also a hard break.

### 1.11 Internal links

Wikilink format: [[Three laws of motion]]

Markdown format: [Three laws of motion](Three%20laws%20of%20motion.md)

### 1.12 Wikilink aliases

[[Three laws of motion|The 3 laws]]

### 1.13 Link to a heading

Link to heading in the same note: [[#Internal links]]

Link to a heading in another note: [[About Obsidian#Links are first-class citizens]]

Link to subheadings with multiple hashes: [[Help and support#Questions and advice#Report bugs and request features]]

### 1.14 Link to a block

This paragraph is a block we link to from another note. ^block-reference-example

Link to a block: [[2023-01-01#^block-reference-example]]

### 1.15 External links

[Obsidian Help](https://help.obsidian.md)

### 1.16 Escape blank spaces in links

[My Note](obsidian://open?vault=MainVault&file=My%20Note.md)

Escaped URL wrapped in angle brackets: [My Note](\)

### 1.17 Obsidian URI

[Note](obsidian://open?vault=MainVault&file=Note.md)

### 1.18 External images

![Pride flag](https://thumb.wikimedia.org/wikipedia/commons/thumb/7/73/Pride_flags_%2851302958040%29.jpg/500px-Pride_flags_%2851302958040%29.jpg?utm_source=en.wikipedia.org&utm_campaign=index&utm_content=thumbnail)

### 1.19 Image resize (Obsidian-only)

Width and height: ![Pride flag|100x145](https://thumb.wikimedia.org/wikipedia/commons/thumb/7/73/Pride_flags_%2851302958040%29.jpg/500px-Pride_flags_%2851302958040%29.jpg?utm_source=en.wikipedia.org&utm_campaign=index&utm_content=thumbnail)

Width only (aspect preserved): ![Pride flag|100](https://thumb.wikimedia.org/wikipedia/commons/thumb/7/73/Pride_flags_%2851302958040%29.jpg/500px-Pride_flags_%2851302958040%29.jpg?utm_source=en.wikipedia.org&utm_campaign=index&utm_content=thumbnail)

### 1.20 Blockquotes

> Human beings face ever more complex and urgent problems, and their effectiveness in dealing with these problems is a matter that is critical to the stability and continued progress of society.
> \- Doug Engelbart, 1961

### 1.21 Unordered lists

- First list item
- Second list item
- Third list item

* Asterisk items
* Also valid

+ Plus items
+ Also valid

### 1.22 Ordered lists

1. First list item
2. Second list item
3. Third list item

Ordered list with parentheses:

1) First list item
2) Second list item
3) Third list item

A line break inside an ordered list item without breaking the numbering:

1. First list item
2. Second list item
shift-enter line break inside item
3. Third list item

### 1.23 Task lists (GFM)

- [x] This is a completed task.
- [ ] This is an incomplete task.

Custom markers considered complete:

- [x] Milk
- [?] Eggs
- [-] Eggs

### 1.24 Nested and mixed lists

Mixed ordered and unordered nesting:

1. First list item
1. Ordered nested list item
2. Second list item
- Unordered nested list item

Nested task list:

- [ ] Task item 1
- [ ] Subtask 1
- [ ] Task item 2
- [x] Subtask 2

### 1.25 Horizontal rules

Three or more dashed lines, stars, or underscores, optionally spaced.

---

***

___

* * *

--- ---

### 1.26 Inline code

Text inside `backticks` on a line will be formatted like code.

Backticks inside inline code use double backticks: inline ``code with a backtick ` inside``.

### 1.27 Fenced code blocks

Backtick fence:

```text
cd ~/Desktop
```

Tilde fence:

~~~text
cd ~/Desktop
~~~

### 1.28 Indented code blocks

cd ~/Desktop

Alternatively indented with Tab.

### 1.29 Code blocks with language

```js
function fancyAlert(arg) {
if (arg) {
$.facebox({ div: "#foo" });
}
}
```

### 1.30 Nested code fences

Fence with four backticks wraps a three-backtick fence:

````markdown
```js
console.log("Hello world");
```
````

### 1.31 Footnotes (CM)

Here is a sentence with a footnote reference.[^1]

[^1]: And here is the footnote definition.

### 1.32 Inline footnotes

Here is an inline footnote reference.^[This is the footnote text, no definition line needed.]

### 1.33 Comments (Obsidian-only)

This text is visible. %%This text is a comment, hidden in Reading view and Live Preview.%%

### 1.34 Tags (Obsidian-only)

Inline tag: #project/active

Nested tag: #projects/active/2026

### 1.35 Autolinks (GFM)

Check if renders as an autolink.

Bare URL autolink literal: https://obsidian.md

---

## 2. Obsidian Flavored Markdown extensions

### 2.1 Embeds

Embed a note: ![[Pride_flag.jpg]]

Embed a section: ![[About Obsidian#Links are first-class citizens]]

Embed an image with a resize pipe inside a wikilink: ![[Pride_flag.jpg|100]]

### 2.2 Block references

Define a block with a human-readable ID at end of a line.

"You do not rise to the level of your goals. You fall to the level of your systems." by James Clear ^quote-of-the-day

Link to it: [[2023-01-01#^quote-of-the-day]]

Embed a block: ![[2023-01-01#^quote-of-the-day]]

Block IDs on a structured block (listed on a separate line, blank line before and after):

> A quoted paragraph that is a linkable block.

^structured-block-id

This is the tale of Gemmy, the Unhelpful assistant.

### 2.3 Properties (YAML frontmatter)

Must be the very first thing in a note (shown here in a code block since this fixture has a heading above):

```yaml
---
title: My Note
date: 2026-09-10
tags:
- pkm
- projects/active
aliases:
- The 3 laws
cssclasses:
- wide
---
```

### 2.4 Directory links

[[Projects/Three laws of motion]]

[Three laws of motion](Projects/Three%20laws%20of%20motion.md)

### 2.5 HTML passthrough (Obsidian does NOT render markdown inside HTML)

This **will not** be bold — markdown inside HTML is left untouched.

``This **will not** be bold either`

---

## 3. Advanced formatting syntax

### 3.1 Tables

| First name | Last name |
| ---------- | --------- |
| Max | Planck |
| Marie | Curie |

Table without outer pipes:

First name | Last name
-- | --
Max | Planck
Marie | Curie

### 3.2 Table column alignment

| Left-aligned | Center-aligned | Right-aligned |
| :-- | :--: | --: |
| Content | Content | Content |

### 3.3 Formatting content inside tables

| First column | Second column |
| ------------------ | --------------------------------------- |
| [[Internal links]] | Link to a file _within_ your **vault**. |
| Emphasized | ~~strikethrough~~ and ==highlight== |

### 3.4 Escaped pipes and aliases in tables

| First column | Second column |
| -- | -- |
| Wikilink with alias, needs escaped pipe: `[[Basic formatting syntax\|Markdown syntax]]` | Resized image: `![[Pride_flag.jpg\|200]]` |

### 3.5 Mermaid diagrams

```mermaid
graph TD
Biology --> Chemistry
```

```mermaid
sequenceDiagram
Alice->>+John: Hello John, how are you?
Alice->>+John: John, can you hear me?
John-->>-Alice: Hi Alice, I can hear you!
John-->>-Alice: I feel great!
```

Mermaid diagram with Obsidian internal-link classes:

```mermaid
graph TD
Biology --> Chemistry
class Biology,Chemistry internal-link;
```

### 3.6 Inline math

This is an inline math expression: $e^{2i\pi} = 1$.

Also inline: $x^2 + y^2 = z^2$

### 3.7 Block math

$$E = mc^2$$

$$
\begin{vmatrix}a & b\\ c & d \end{vmatrix}=ad-bc
$$

---

## 4. Callouts (Obsidian-only)

### 4.1 Basic callout

> [!info]
> Here is a callout block. It supports **Markdown**, [[Internal link|Wikilinks]], and embeds.

### 4.2 Custom title and title-only callouts

> [!tip] Callouts can have custom titles
> Like this one.

> [!tip] Title-only callout

### 4.3 Foldable callouts

Folded by default (minus):

> [!faq]- Are callouts foldable?
> Yes! In a foldable callout the contents are hidden when collapsed.

Expanded but foldable (plus):

> [!info]+ This one starts expanded
> It can still be collapsed.

### 4.4 Nested callouts

> [!question] Can callouts be nested?
>
> > [!todo] Yes, they can.
> >
> > > [!example] You can even use multiple layers of nesting.

### 4.5 All supported callout types

> [!note] Note

Aliases: `summary`, `tldr`

> [!abstract] Abstract

> [!info] Info

> [!todo] Todo

> [!tip] Tip

Aliases: `hint`, `important`

> [!success] Success

Aliases: `check`, `done`

> [!question] Question

Aliases: `help`, `faq`

> [!warning] Warning

Aliases: `caution`, `attention`

> [!failure] Failure

Aliases: `fail`, `missing`

> [!danger] Danger

Alias: `error`

> [!bug] Bug

> [!example] Example

> [!quote] Quote

Alias: `cite`

---

## 5. Edge cases worth verifying

- Escaped wikilink: \[[This is not a wikilink]] — the backslash should suppress the link.
- A lone `#` inside a line is not a heading: This is `#` a hash inside a word like C# code.
- Emoji and unicode in headings: ## Emoji 🎉 and accented characters é è à
- A wikilink inside a code block should NOT resolve: `[[Not a real link]]`.
- A wikilink inside inline code: [[Also not a real link]]
- Link followed by punctuation: see [[Three laws of motion]].
- Empty table cell: | A | B |
| --- | --- |
| | value |
- Markdown link with anchors: [Section name](Example.md#Details)

---

## Coverage summary

Fill in the results and total up the columns:

- **CommonMark features passing:** ___ / ___
- **GFM features passing:** ___ / ___
- **Obsidian-only features passing:** ___ / ___

List the failing features below:

- [ ] Failing feature 1
- [ ] Failing feature 2