Skip to content
back to blog
obsidianAugust 7, 2026 · 4 min read

Obsidian Block Embeds: Stop Copy-Pasting Your Own Notes

Whole-note embeds are the easy part. Block references are where transclusion in Obsidian actually pays off, and where one misplaced caret silently breaks everything.

Dan Holloran
Dan Holloran
Senior Frontend & Fullstack Developer
Obsidian Block Embeds: Stop Copy-Pasting Your Own Notes

You wrote a clean definition of your deploy process once, in a note called Deploy Runbook. Six months later that same paragraph lives in four other notes, and three of them are wrong. Copy-paste is the quiet killer of a vault: it feels efficient in the moment, and it guarantees that some day you will trust a stale version of your own thinking.

Obsidian's answer is transclusion, embedding a piece of one note inside another so there is exactly one copy and every reader sees the current version. Most people know ![[Note]]. Far fewer use the two narrower forms that make it genuinely useful.

Three levels of granularity

An embed is just a link with an exclamation mark in front of it:

markdown
![[Deploy Runbook]]
![[Deploy Runbook#Rollback]]
![[Deploy Runbook#^prod-checklist]]

Whole note, heading section, single block. Whole-note embeds are blunt instruments, useful mostly for pulling an index into a dashboard. Heading embeds bring the heading text along with the content, which is what you want in a Map of Content and almost never what you want mid-sentence. Block embeds are the surgical option: one paragraph, one list item, no wrapper.

Blocks are the level most people skip, because the identifier looks like line noise. You do not have to type it. Type #^ at the end of a link and Obsidian shows a picker of every block in the target note. Select one and it stamps a random six-character ID like ^37066d onto that block in the source file.

You can also name them yourself. Add a space, a caret, and an identifier at the end of a block:

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

Now ![[Daily Reading#^quote-of-the-day]] pulls it in anywhere. Identifiers accept only Latin letters, numbers, and dashes, so no spaces and no underscores.

Where the caret goes, and why embeds silently go blank

Placement depends on what kind of block you are marking. Getting it wrong is the single most common reason an embed renders as empty space with no error message.

For a plain paragraph, the ID goes at the end of the last line, after a space:

markdown
Rollbacks are cheap. Rolling forward under pressure is not. ^rollback-rule

For a structured block, meaning a list, blockquote, callout, or table, the ID has to sit on its own line with a blank line before it:

markdown
> Rollbacks are cheap. Rolling forward under pressure is not.

^rollback-rule

Jam that caret directly beneath the last line of a callout and it becomes part of the callout instead of an anchor. The link still resolves to something, the embed renders nothing, and Obsidian never complains. If an embed of yours is mysteriously blank, check the source file before you check the link. Nine times out of ten the anchor got swallowed by the block above it.

Two limits are worth knowing before you build a workflow on this. Obsidian does not support linking to a part of a quotation, callout, or table. And block references are an Obsidian extension, not standard Markdown, so the moment you export the vault to a static site generator or open it in another editor, #^rollback-rule is just text.

Composing instead of copying

Once block embeds are reliable, the writing workflow inverts. A note stops being a container you fill and becomes an arrangement of things that already exist.

The pattern that pays off fastest: write genuinely atomic notes, one idea per file, then compose longer pieces by embedding the parts and writing only the connective tissue between them.

markdown
## Why we stopped shipping on Fridays

![[Deploy Runbook#^rollback-rule]]

That constraint is most of the argument. Add a weekend and the cheap
option is the one nobody is around to take.

![[Incident 2026-03-11#^postmortem-takeaway]]

The essay is now a view over your vault rather than a snapshot of it. Sharpen the rollback rule once and every piece quoting it updates.

Finding blocks worth embedding gets easier with two search shortcuts. Typing [[## searches headings across the whole vault, and [[^^ searches blocks. Block search returns far more results than heading search, since nearly every paragraph qualifies, so it works best when you already have a distinctive phrase in mind.

Start small. Pick the one paragraph in your vault you have copied most often, a definition, a checklist, a standing decision, give it a human-readable ID, and replace the copies with embeds. The full syntax, including the placement rules above, lives in the Internal links page of the Obsidian docs.

~/subscribe
# new posts on code, craft & travel — no noise, no schedule
$subscribe