Obsidian Markdown Formatting
Obsidian extends standard Markdown with wikilinks, embeds, block references, tags, and callouts. Every syntax — with copy-ready examples.
All standard CommonMark works. The features below are what make Obsidian different from GitHub, Notion, or any other Markdown editor.
What makes Obsidian different
Three Obsidian-only features you can't get in plain Markdown
1. Wikilinks
[[Note Title]]
Link by note title. Auto-completes, auto-resolves, and creates the note if it doesn't exist yet.
2. Embeds
![[Note]]
Transclude a whole note, a section, a single block, or any media file inline.
3. Block references
[[Note#^id]]
Link to a single paragraph or list item — Obsidian generates the ID for you.
Wikilinks
Obsidian's signature feature. Type [[ and an auto-complete menu surfaces every note in your vault. Wikilinks resolve by note title, so renaming a note updates every link automatically.
Links to a note by its filename (without the .md extension). Auto-completes as you type [[
[[Note Title]]Pipe character separates the target from the visible link label.
[[Note Title|Display Text]]Hash navigates directly to a specific H1–H6 heading inside another note.
[[Note Title#Heading]]Caret + block ID links to a specific paragraph, list item, or table row. Block IDs are appended to the target line as ^block-id.
[[Note Title#^block-id]]Embeds (Transclusion)
Prepend any wikilink with ! to embed the target inline. Obsidian renders the embedded content directly inside the current note — text, images, audio, video, and PDFs all work.
Bang prefix turns a wikilink into a transclusion — the target note's content is rendered inline in the current note.
![[Note Title]]Embeds only the content under a specific heading until the next same-level heading.
![[Note Title#Heading]]Embeds one paragraph, list item, or table row identified by its block ID.
![[Note Title#^block-id]]Embeds images stored in the vault. Use a pipe to set width: ![[image.png|400]] (in pixels).
![[image.png]]Obsidian embeds .mp3/.mp4/.webm/.pdf inline with native HTML players.
![[video.mp4]]Block References
Tag any paragraph, list item, or table row with a unique block ID, then link or embed it from anywhere. Obsidian generates the ID for you when you Ctrl/Cmd-drag a reference into a target note.
This paragraph has a block ID. ^my-quote
[[Other Note#^my-quote]]
![[Other Note#^my-quote]]^my-quote at the end of a line marks that line as a referenceable block.
[[Other Note#^my-quote]] links to that block.
![[Other Note#^my-quote]] embeds the block inline.
Block IDs must be unique within a single note.
Callouts
Obsidian callouts use the same > [!type] syntax as GitHub alerts, but Obsidian supports 13 built-in types and lets you make them collapsible by appending + (open) or - (closed).
> [!note]
> Default callout. Use for general notes and side commentary.Default callout. Use for general notes and side commentary.
> [!tip]
> Helpful advice or shortcuts. Aliases: hint, important.Helpful advice or shortcuts. Aliases: hint, important.
> [!success]
> Positive outcomes or completed work. Aliases: check, done.Positive outcomes or completed work. Aliases: check, done.
> [!warning]
> Cautions or risks. Aliases: caution, attention.Cautions or risks. Aliases: caution, attention.
> [!danger]
> Critical hazards. Aliases: error.Critical hazards. Aliases: error.
also: [!hint], [!important]
also: [!check], [!done]
also: [!caution], [!attention]
also: [!error]
also: [!cite]
also: [!summary], [!tldr]
also: [!fail], [!missing]
> [!note]+ Title (opens by default)
> Click the chevron to collapse.
> [!warning]- Title (closed by default)
> Click the chevron to expand.Append + after the type to make a callout collapsible and open by default.
Append - to make it collapsible and closed by default.
Add a title after the type: > [!note] Custom title
Highlights
Wrap text in double equals signs (==text==) to highlight it. Obsidian renders this as yellow-highlighted text. This is not part of standard CommonMark — GitHub, Notion, Reddit, Slack, and Discord all render it as literal text.
This sentence has ==highlighted text== in the middle.Math (KaTeX)
Inline math uses single $...$. Block math uses double $$...$$ on their own lines. Obsidian uses KaTeX, the same engine GitHub uses, so most LaTeX syntax renders identically across both platforms.
The Pythagorean theorem is $a^2 + b^2 = c^2$.$$
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
$$YAML Frontmatter
Frontmatter is YAML metadata at the very top of a note, fenced by ---. Obsidian reads several special keys (tags, aliases, cssclasses, publish), and arbitrary key/value pairs are surfaced to Dataview and templater plugins.
---
title: My Note
tags:
- project
- research
aliases:
- "Project Alpha"
- "Alpha Notes"
cssclasses:
- wide-page
author: Andy
date: 2026-05-25
---
# Note body starts heretags — list, no # prefix
aliases — alternative names that resolve wikilinks
cssclasses — applied to the note's container in Reading view
publish — true/false for Obsidian Publish
Any other key — accessible via the Properties view and Dataview queries
Mermaid Diagrams
Open a fenced code block with ```mermaid and write standard Mermaid syntax. Obsidian ships with Mermaid built in — no plugin required. Flowcharts, sequence, class, state, gantt, and pie diagrams all render in Reading view and Live Preview.
```mermaid
flowchart LR
A[Start] --> B{Has tag?}
B -- Yes --> C[Index it]
B -- No --> D[Skip]
C --> E[Done]
D --> E
```Reading view vs Live Preview vs Source mode
Obsidian has three editing modes. Some syntax behaves differently depending on which mode you're in — knowing the difference saves a lot of confusion.
| Feature | Source mode | Live Preview | Reading view |
|---|---|---|---|
| Editable | Yes | Yes | No |
| Renders bold/italic/headings | No (raw) | Yes (in place) | Yes (rendered) |
| Renders wikilinks | No | Yes | Yes |
| Renders embeds (![[Note]]) | No | Yes | Yes |
| Shows comments (%%text%%) | Yes (visible) | No (hidden) | No (hidden) |
| Shows raw block IDs (^id) | Yes | Partial | Hidden |
| Mermaid diagrams render | No | Yes | Yes |
| Math ($...$) renders | No | Yes (on cursor leave) | Yes |
| Default for new notes | — | Default | Toggle Cmd/Ctrl+E |
Toggle between Live Preview and Reading view with Cmd/Ctrl + E. Switch to Source mode in Settings → Editor → Default editing mode.
Standard Markdown Still Works
Everything from CommonMark and GFM works in Obsidian: headings, lists, tables, code blocks, task lists, strikethrough, links, and images. Here's a quick example.
# Heading
**Bold** and *italic* text.
- [x] Task one
- [ ] Task two
| Col A | Col B |
|-------|-------|
| 1 | 2 |Heading
Bold and italic text.
- Task one
- Task two
| Col A | Col B |
|---|---|
| 1 | 2 |
Common Mistakes
The five most common Obsidian-specific gotchas.
Don't
[[note.md]]
Do
[[note]]
Wikilinks do not include the .md extension. Adding it works but creates a literal filename match that may not resolve.
Don't
[[Note Title (with parens)]]
Do
Use the [[Note Title \(with parens\)]] escape or rename the note
Parentheses in note titles confuse the wikilink parser. Either escape them with backslashes or simplify the title.
Don't
# tag
Do
#tag
No space between # and the tag text. A space turns it into a heading instead.
Don't
[[Note]] inside `code`
Do
Wrap normally — code spans suppress wikilink parsing
Wikilinks inside inline code or code blocks render as literal text. Use this intentionally when documenting wikilink syntax.
Don't
Block ID on a separate line
Do
Block ID at the end of the target line: A paragraph. ^my-id
Block IDs must be on the same line they tag. A standalone ^my-id on its own line is treated as text.
Quick Reference
Every Obsidian-flavored Markdown feature at a glance.
| Syntax / Feature | Works? | Notes |
|---|---|---|
| Standard CommonMark (bold, italic, lists) | Yes | All CommonMark syntax works in every Obsidian view mode. |
| GFM Tables (| --- |) | Yes | Native support — both Live Preview and Reading view render tables. |
| GFM Task lists (- [ ]) | Yes | Renders as interactive checkboxes. Clicking toggles the state and saves the file. |
| GFM Strikethrough (~~text~~) | Yes | Double tildes only. Single tildes render literally. |
| Wikilinks [[Note]] | Yes | Obsidian-specific. The signature feature for linking notes inside a vault. |
| Embeds ![[Note]] | Yes | Transclude another note, image, audio, video, or PDF inline. |
| Block references ^block-id | Yes | Append ^id to a line to make it linkable as a specific block. |
| Tags (#tag, #parent/child) | Yes | Inline tags and YAML frontmatter tags both index in the Tags pane and graph view. |
| Highlights (==text==) | Yes | Renders as yellow-highlighted text. Not part of CommonMark. |
| Comments (%%hidden%%) | Yes | Obsidian-only. Hidden in Reading view, visible only in Source mode. |
| Callouts (> [!note]) | Yes | Same syntax as GitHub alerts, plus more types: tip, success, warning, danger, quote, bug, todo, abstract, info, example, failure. |
| Math ($...$ and $$...$$) | Yes | KaTeX renders inline and display math. Same syntax as GitHub but Obsidian uses single $ for inline (no requirement for surrounding non-whitespace). |
| Mermaid diagrams (```mermaid) | Yes | Built in. Flowcharts, sequence, gantt, class diagrams all render in Reading view. |
| Footnotes ([^1]) | Yes | Both reference and inline (^[note]) styles are supported. |
| YAML frontmatter | Yes | Native. Used for tags, aliases, cssclasses, publish, and plugin metadata. |
| HTML pass-through | Yes | Most HTML tags render. <iframe>, <video>, and <audio> work; <script> is stripped. |
Frequently Asked Questions
Does Obsidian use standard Markdown?
Yes — Obsidian is built on top of CommonMark with most GitHub-Flavored Markdown extensions (tables, task lists, strikethrough). On top of that, Obsidian adds its own features: wikilinks ([[Note]]), embeds (![[Note]]), block references (^block-id), tags (#tag), highlights (==text==), comments (%%hidden%%), and callouts (> [!note]). Standard Markdown files written outside Obsidian render correctly inside the vault.
What is the difference between [[wikilinks]] and [Markdown](links)?
Wikilinks are an Obsidian convention that lets you link by note title without writing the full path: [[Note Title]] auto-resolves to the note. Standard Markdown links use [text](path/to/note.md) and require the explicit path. Wikilinks are easier to write inside a vault, but they don't render outside Obsidian without a converter. You can switch the default in Settings → Files & Links → Use [[Wikilinks]].
How do I create a block reference in Obsidian?
Hover over any paragraph, list item, or table row, hold the Ctrl/Cmd key, and drag-select to a new location. Obsidian auto-generates a block ID. Or write one manually by appending ^block-id (a caret followed by an alphanumeric identifier) to the end of the target line, then link to it with [[Note Title#^block-id]].
What are the differences between Reading view, Live Preview, and Source mode?
Source mode shows the raw Markdown — no rendering. Live Preview (the default since Obsidian 0.13) renders syntax inline as you type, so you see bold, headings, links, and embeds rendered while still being able to edit. Reading view renders the document like a published web page with no editing affordances. Some features behave differently: comments (%%hidden%%) appear only in Source mode, and some plugins only render in Reading view.
How do tags work in Obsidian?
Type # immediately followed by alphanumeric text (no space). Tags are case-insensitive, can be nested with slashes (#project/research), and are indexed across the vault. They show up in the Tags pane, the graph view, and search queries. You can also declare tags in YAML frontmatter under a tags: key — both work interchangeably.
Can I use HTML in Obsidian notes?
Yes — most HTML tags pass through and render. This includes <iframe>, <video>, <audio>, and styled <div>s. <script> tags are stripped for security. HTML is commonly used in Obsidian for things Markdown can't express: underline (<u>text</u>), colored text (<span style="color:red">), centering (<div align="center">), and image sizing (<img width="300">).
How do I create callouts in Obsidian?
Callouts use the same syntax as GitHub alerts: a blockquote starting with [!type] on the first line. For example, > [!warning] creates a warning callout. Obsidian supports 13 built-in types (note, tip, success, warning, danger, info, quote, bug, todo, abstract, example, failure, question). You can also fold callouts by adding a + (open by default) or - (closed) after the type, e.g. > [!note]-
Does Obsidian support Mermaid diagrams?
Yes — Mermaid is built in. Open a code block with ```mermaid and write standard Mermaid syntax: flowcharts, sequence diagrams, class diagrams, state diagrams, gantt charts, and pie charts all render in Reading view and Live Preview. No plugin required.
What is YAML frontmatter in Obsidian?
Frontmatter is a YAML block at the very top of a note, between two --- delimiters. Obsidian uses it for metadata: tags, aliases (alternative names for the note), cssclasses (custom styling), publish (Obsidian Publish), and arbitrary key/value properties accessible to Dataview and other plugins. Properties view (the GUI editor) reads and writes the same YAML directly.
Learn More Markdown
Obsidian builds on top of standard Markdown. Compare it to other platforms and Markdown flavors:
Comments
Wrap text in double percent signs (
%%hidden%%) to hide it from Reading view and Live Preview. The text is still visible in Source mode and is preserved in the file. Obsidian-only — every other Markdown renderer treats it as literal text.This paragraph is visible.
(The block comment renders as nothing in Reading view, but the text is preserved in Source mode.)