Skip to main content

Obsidian Markdown: The Complete Guide to Syntax, Tables & Cheat Sheet

Last updated: April 22, 2026 • By Mohan Raj Kolavi

Obsidian markdown is standard CommonMark plus GitHub Flavored Markdown (GFM) with Obsidian-specific extensions: [[wiki-links]] for internal note references, > [!note] callouts, ![[embed]] syntax, block references with ^block-id, tags, and LaTeX math through MathJax. Every note is a plain .md file stored locally on your device, so your knowledge base stays portable, private, and future-proof.

Does Obsidian Support Markdown?

Yes. Obsidian uses plain markdown (.md) files as its native format. It supports CommonMark, GitHub Flavored Markdown (GFM) features like tables and task lists, footnotes in reading view, and adds its own extensions: wiki-links for internal note references, callouts for styled blocks, embeds that pull one note into another, highlights, block references, nested tags, and LaTeX math through MathJax. There is nothing to convert or export - your notes are already markdown.

Because every note is a plain text file on your disk, Obsidian markdown is compatible with any other markdown editor. Open a vault folder in VS Code, Typora, or iA Writer, and the same .md files render with the same formatting. Only Obsidian-specific syntax like [[wiki-links]] or > [!callouts] will show as plain text in tools that do not understand them, but the underlying file stays intact.

In short, Obsidian does not fork markdown. It starts from the standard spec and layers extra syntax on top. Read on for the full syntax reference, a copyable cheat sheet, and a feature matrix that compares CommonMark, GFM, and Obsidian-specific extensions side by side.

Obsidian Markdown Syntax

Every syntax Obsidian supports, grouped by category. Each example is copyable. For a quick reference, jump to the cheat sheet. For the CommonMark baseline, see our markdown syntax reference and extended syntax guide.

Headings, paragraphs, and line breaks

Obsidian uses standard # hash syntax for headings, one hash per level up to six. A blank line between blocks creates a new paragraph. End a line with two spaces or a backslash to force a line break.

# H1 - top of page
## H2 - main section
### H3 - subsection

A paragraph of text. End with two spaces  
to force a line break.

Bold, italic, strikethrough, and highlights

Bold uses two asterisks, italic uses one. Strikethrough uses two tildes (GFM). Highlights are an Obsidian extension that wraps text in == double equals.

**bold**
*italic*
***both***
~~strikethrough~~
==highlight==
`inline code`

Lists and task lists

Unordered lists use dashes, ordered lists use numbers, task lists use GFM checkbox syntax. Indent with four spaces (or a tab) to nest.

- Unordered item
    - Nested item

1. First
2. Second

- [ ] Open task
- [x] Completed task

Obsidian's signature syntax is the wiki-link: double square brackets around a note title. Obsidian resolves the link against filenames in your vault. Pipe-separated aliases give the link custom display text. External URLs still use standard CommonMark syntax.

[[Other note]]
[[Other note|Display text]]
[[Other note#Heading]]
[[Other note#^block-id]]
[External link](https://obsidian.md)

Wiki-links are portable within a vault but render as plain text in non-Obsidian parsers. If you need cross-app compatibility, use standard [text](path.md) links instead.

Embeds: inline notes, headings, images, and PDFs

Prefix a wiki-link with ! to embed the referenced content inline. Embeds pull in other notes, specific headings, blocks, images, PDFs, and audio files. Useful for maps-of-content, atomic note composition, and transclusion workflows.

![[Other note]]
![[Other note#Heading]]
![[Other note#^block-id]]
![[image.png]]
![[document.pdf]]

Code blocks and inline code

Fenced code blocks use three backticks. Add a language identifier after the opening fence for syntax highlighting. Obsidian supports most common languages out of the box.

```js
function greet(name) {
  return `Hello, ${name}!`;
}
```

Inline: `const x = 1;`

Obsidian markdown tables

Obsidian supports GFM-style pipe tables. Column alignment uses colons in the divider row::--- for left,:---: for center,---: for right. For an interactive builder, try our visual markdown table generator.

| Task      | Owner  | Due        |
| :-------- | :----: | ---------: |
| Draft PR  | Alice  | 2026-05-01 |
| Review    | Bob    | 2026-05-02 |

Blockquotes and callouts

Standard blockquotes use a greater-than sign. Obsidian extends this with callouts: prefix the first line with [!type] to get a styled, colored block. Supported types include note, abstract, info, tip, success, question, warning, failure, danger, bug, example, quote. Append - for collapsed by default or + for expanded by default.

> Plain blockquote text.

> [!note]
> This is a styled note callout.

> [!warning] Custom title
> Foldable warning content.

> [!tip]- Click to expand
> Hidden tip, collapsed by default.

LaTeX math (MathJax)

Wrap an expression in single dollar signs for inline math, or double dollar signs for display math. Obsidian renders LaTeX through MathJax. Most standard commands work, and you can add custom macros in Settings → Editor.

Inline: $E = mc^2$

Block:
$$
\int_0^1 x^2 \, dx = \frac{1}{3}
$$

Footnotes

Footnotes render in reading view only. Use [^label] where you want the reference, and define the body elsewhere in the file.

This claim has a footnote[^source].

[^source]: Obsidian Help, accessed 2026-04.

Tags, block references, and other extras

Tags start with # and support nesting with slashes. Block references assign an id to any block; link to that block from anywhere using [[Note#^id]].

#project/active #status/in-progress

A quotable paragraph. ^paragraph-1

Link to it: [[This note#^paragraph-1]]

Obsidian Markdown Cheat Sheet

Every Obsidian markdown syntax in one table. Copy any row's code with the button next to it. For a printable version, use the copy-all button below, or see our general-purpose markdown cheat sheet.

CategoryFormatSyntaxRenders as
TextHeading 1-6
# H1
## H2
### H3
Large to small headings
TextBold
**bold text**
bold text
TextItalic
*italic text*
italic text
TextBold + italic
***both***
bold italic text
TextStrikethrough
~~struck~~
struck-through text (GFM)
TextHighlight
==highlight==
highlighted text (Obsidian)
TextInline code
`code`
monospaced inline code
ListsUnordered list
- Item one
- Item two
Bulleted list
ListsOrdered list
1. First
2. Second
Numbered list
ListsTask list
- [ ] Open task
- [x] Done task
Checkbox list (GFM)
ListsNested list
- Parent
    - Child
Indented sublist
LinksWiki-link (internal)
[[Note Title]]
Link to another note in your vault
LinksWiki-link with alias
[[Note Title|Display text]]
Link with custom label
LinksWiki-link to heading
[[Note Title#Section]]
Link to a specific heading
LinksWiki-link to block
[[Note Title#^block-id]]
Link to a specific block
LinksExternal link
[Obsidian](https://obsidian.md)
Standard CommonMark link
EmbedsEmbed a note
![[Note Title]]
Inlines another note's content
EmbedsEmbed a heading
![[Note Title#Section]]
Inlines a single section
EmbedsEmbed an image
![[image.png]]
Displays a local image
EmbedsEmbed a PDF
![[doc.pdf]]
Inlines a PDF viewer
QuotesBlockquote
> Quoted text
Indented quote block
QuotesCallout
> [!note]
> This is a note callout.
Styled note block (Obsidian)
QuotesFoldable callout
> [!tip]- Click to expand
> Hidden tip.
Collapsed callout (Obsidian)
CodeFenced code
```js
console.log('hi');
```
Syntax-highlighted code block
TablesTable
| A | B |
| --- | --- |
| 1 | 2 |
Pipe table (GFM)
MathInline LaTeX
$E = mc^2$
Inline math via MathJax
MathBlock LaTeX
$$\int_0^1 x^2 dx$$
Display math block
RefsFootnote
Text[^1]

[^1]: Footnote body
Footnote (reading view)
RefsBlock reference id
A paragraph. ^block-id
Anchor for linking to a block
RefsTag
#project/active
Nested tag
OtherHorizontal rule
---
Divider line
OtherEscape character
\*not italic\*
Literal * symbols

Obsidian Markdown Support Features

Obsidian markdown support spans three layers: CommonMark (the baseline spec), GitHub Flavored Markdown (adds tables, task lists, strikethrough, autolinks), and Obsidian's own extensions. The matrix below shows which features come from which layer, so you can tell what will survive in a non-Obsidian editor.

FeatureCommonMarkGFMObsidian
Headings (H1-H6)YesYesYes
Bold, italic, inline codeYesYesYes
Unordered + ordered listsYesYesYes
Links + imagesYesYesYes
BlockquotesYesYesYes
Fenced code blocksYesYesYes
StrikethroughNoYesYes
Task listsNoYesYes
Pipe tablesNoYesYes
Autolinked URLsNoYesYes
Footnotes

Rendered in reading view only

NoNoPartial
Wiki-links [[note]]NoNoYes
Wiki-link aliases [[note|text]]NoNoYes
Embeds ![[note]]NoNoYes
Callouts > [!note]NoNoYes
Highlights ==text==NoNoYes
Block references ^block-idNoNoYes
Tags #tagNoNoYes
LaTeX math (MathJax)NoNoYes
Diagrams (Mermaid)NoPartialYes
HTML passthroughYesYesYes
Underline (native syntax)

Use <u>text</u> or CSS snippet

NoNoNo

How Obsidian Stores Notes as Local Markdown Files

Obsidian stores every note as a plain .md text file inside a folder called a vault. A vault is just a regular folder on your disk. Notes sit as .md files; images, PDFs, and other attachments sit alongside them as regular files. There is no proprietary database, no hidden container, and no required cloud service. You own every byte.

That local-first architecture is why people call Obsidian a knowledge base rather than just a note app. You can:

  • -Back up your entire vault with any file-sync tool (iCloud, Dropbox, Syncthing, Git).
  • -Open the same .md files in VS Code, Typora, or any other markdown editor.
  • -Version-control your notes with Git for a full history of every change.
  • -Grep or ripgrep across thousands of notes instantly, because they are plain text.
  • -Read your notes in 20 years, regardless of what happens to the Obsidian app.

For the canonical reference, see Obsidian's official docs on local markdown files.

How to Use Markdown in Obsidian

Four common tasks, each with copyable syntax and a step list. For CommonMark basics outside Obsidian, start with our complete markdown guide.

How to create a table in Obsidian markdown

Obsidian uses GFM pipe tables. Separate columns with vertical bars, add a divider row of dashes under the header, then one row per record. Obsidian renders the table in live preview and reading mode.

  1. Type a header row, columns separated by pipes.
  2. Add the divider row: pipes and at least three dashes per column.
  3. Add one data row per record.
  4. Switch to live preview or reading mode to see the rendered table.
| Task      | Owner  | Due        |
| :-------- | :----: | ---------: |
| Draft PR  | Alice  | 2026-05-01 |
| Review    | Bob    | 2026-05-02 |

Tip: install the Advanced Tables community plugin for tab-key navigation, auto-alignment, and sort-by-column while editing.

How to import markdown files into Obsidian

Because Obsidian stores notes as plain .md files on disk, there is no import step. Copy the files into the vault folder and they appear in the sidebar immediately.

  1. Export your notes as .md from the source app (Notion, Bear, Logseq, Apple Notes, etc.).
  2. Open Obsidian Settings, then Files and links, and note the vault folder path.
  3. Drag or copy the exported .md files into the vault folder using your OS file manager.
  4. Open Obsidian. The new notes appear in the file sidebar automatically.

For Notion imports, the official Obsidian Importer plugin converts Notion exports and rewrites links to wiki-link format. For Bear or Apple Notes, the exported .md files work as-is, though internal links remain in standard [text](path.md) form.

How to underline text in Obsidian

Obsidian has no native markdown syntax for underline. Neither CommonMark nor GFM defines one, and the Obsidian team has not added a custom symbol. Three workarounds:

1. Use HTML directly

Obsidian renders inline HTML. Wrap the text in <u> tags.

This word is <u>underlined</u>.

2. Repurpose highlights with a CSS snippet

Add a CSS snippet in Settings → Appearance → CSS snippets that styles mark as underline. Now ==text== renders as an underline across every note in your vault.

3. Use a community plugin

The Underline community plugin adds a shortcut (Cmd/Ctrl + U) that wraps the selection in<u> tags.

How to query markdown tables with Dataview

Dataview is a community plugin that treats your vault like a database. Give your notes frontmatter fields, then query them with SQL-like blocks that render as live tables.

  1. Install Dataview: Settings → Community plugins → Browse → Dataview → Install and Enable.
  2. Add YAML frontmatter to notes you want to query.
  3. Write a Dataview query in a fenced code block.
  4. Switch to reading mode to see the live table.
```dataview
TABLE status, priority, due
FROM #project
WHERE status = "active"
SORT priority DESC
```

Obsidian Markdown Editor

The Obsidian markdown editor has three viewing modes:

Source mode

Pure text view. Every symbol is visible, nothing is rendered. Closest to what the .md file looks like on disk.

Live preview

Hybrid mode. Symbols render as you move the cursor off the line. Good for fast writing with immediate feedback.

Reading mode

Fully rendered, read-only view. Footnotes, Dataview queries, and embeds all render here.

Obsidian ships with standard shortcuts (Cmd/Ctrl + B for bold, Cmd/Ctrl + I for italic, Cmd/Ctrl + E to toggle source/preview). Community plugins extend the editor with Advanced Tables, Templater, Dataview, Calendar, and hundreds more. If you just want to try markdown without installing Obsidian, use our free online markdown editor in the browser.

Obsidian runs on Windows, macOS, Linux, iOS, and Android. The desktop app is free for personal use; paid add-ons include Sync (encrypted cloud sync) and Publish (publish vaults as websites).

Obsidian vs Standard Markdown

Obsidian follows CommonMark plus GFM for core syntax, then adds extensions that only render inside Obsidian. Here is what changes between a standard markdown file and an Obsidian markdown file.

AspectStandard markdownObsidian markdown
Internal link[Other note](other-note.md)[[Other note]]
Embed a noteNot supported natively![[Other note]]
CalloutJust a blockquote> [!note] styled, colored, foldable
Block referenceNot supportedAppend ^block-id, link with [[Note#^block-id]]
HighlightNot supported in CommonMark or GFM==highlight==
TagNot supported#topic or nested #project/active
MathNot in CommonMark or GFM$inline$ and $$block$$ via MathJax
StorageDepends on the platformPlain .md files on your local disk
PortabilityVaries by parserReadable in any plain-text editor

If cross-app portability matters, stick to CommonMark plus GFM and avoid Obsidian-only syntax in those notes. For knowledge-base notes that live in your vault, Obsidian extensions give you linking, embedding, and querying that standard markdown cannot match. Compare other apps in our Notion markdown support or Logseq markdown guides.

Frequently Asked Questions

What is Obsidian markdown?

Obsidian markdown is standard markdown (CommonMark and GitHub Flavored Markdown) with Obsidian-specific extensions layered on top. Every note is a plain .md file that stores your formatting as symbols like # and **, plus extras like [[wiki-links]], callouts, embeds, and block references that only Obsidian reads natively.

Does Obsidian use markdown?

Yes. Obsidian uses plain markdown (.md) files as its native file format. There is no proprietary database or hidden container. Every note you write is saved as a regular text file on your disk, which means you can open the same file in any other markdown editor without converting anything.

Does Obsidian support markdown?

Yes. Obsidian fully supports CommonMark plus GitHub Flavored Markdown (GFM) features like tables, task lists, strikethrough, and autolinked URLs. It also supports footnotes in reading view and adds its own syntax for wiki-links, callouts, embeds, highlights, block references, and LaTeX math through MathJax.

What markdown does Obsidian use?

Obsidian uses CommonMark as its baseline, adds GitHub Flavored Markdown (GFM) extensions for tables and task lists, then layers its own syntax on top: [[wiki-links]], ![[embeds]], > [!callouts], ==highlights==, ^block-references, #tags, and LaTeX math. Everything stays in plain .md files.

How does Obsidian markdown work?

You type markdown symbols into a .md file inside your vault. Obsidian reads those symbols and renders them in live preview or reading mode. Wiki-links resolve against other note filenames in the vault, embeds pull in content by filename, and the file itself stays as plain text on disk.

How does Obsidian store notes as local markdown files?

Obsidian stores every note as a plain .md text file inside a folder on your computer called a vault. Images, PDFs, and attachments sit alongside the notes as regular files. Nothing is locked in a database, which is why you can open, edit, or back up your notes with any tool.

How do you bold text in Obsidian?

Wrap the text in double asterisks: **bold text**. You can also select the text and press Cmd + B on Mac or Ctrl + B on Windows or Linux. The same syntax and shortcut work in every standard markdown editor, so bolded text carries over to other apps without change.

How do you underline text in Obsidian?

Obsidian has no native markdown syntax for underline because CommonMark and GFM do not define one. The workaround is to use HTML: <u>underlined text</u>. Obsidian renders inline HTML in live preview and reading mode. You can also add a CSS snippet to style ==highlights== as underlines if you prefer pure markdown.

How do you create a table in Obsidian markdown?

Use pipe table syntax: separate columns with vertical bars and put a divider row of dashes under the header. Example: | Column A | Column B |\n| --- | --- |\n| Row 1 | Value |. Obsidian renders the table in live preview and reading mode. The Advanced Tables community plugin adds tab-key navigation.

How do you import markdown files into Obsidian?

Drag a folder of .md files into any Obsidian vault folder, or copy them in through your operating system file manager. Because Obsidian stores notes as plain markdown on disk, there is no import step - the files appear in the sidebar as soon as they land inside the vault.

How do you query markdown tables with Dataview in Obsidian?

Install the Dataview community plugin. Then write a ```dataview code block in any note with a TABLE, LIST, or TASK query. Dataview reads frontmatter and inline fields from every note in your vault and generates a live table that updates when you edit the source notes.

Can Obsidian render LaTeX math?

Yes. Obsidian uses MathJax to render LaTeX. Wrap an expression in single dollar signs for inline math ($E = mc^2$) and double dollar signs for block math ($$\int_0^1 x^2 dx$$). Most standard LaTeX commands work, and you can add custom macros in the editor settings.

Is Obsidian markdown compatible with other apps?

Mostly. Standard markdown (headings, bold, italic, lists, links, code, tables) opens cleanly in any other editor. Obsidian-specific syntax like [[wiki-links]], ![[embeds]], callouts, and ==highlights== will display as plain text in apps that do not understand them, but your underlying .md files stay intact.

What is the difference between Obsidian markdown and standard markdown?

Standard markdown (CommonMark plus GFM) covers headings, formatting, lists, links, tables, and task lists. Obsidian adds wiki-links for linking notes by filename, embeds for inlining other notes, callouts for styled blocks, highlights, block references, nested tags, and LaTeX math through MathJax.

Does Obsidian use its own markdown flavor?

Obsidian does not fork markdown. It starts from CommonMark, adds GFM, and then supports extra syntax on top. A plain Obsidian note is still valid markdown that any CommonMark parser can read. Only the Obsidian-specific extras like wiki-links and callouts render as plain text elsewhere.

Keep exploring

Obsidian Markdown: Complete Syntax Guide + Cheat Sheet (2026) | Kolavi Studio