Internal links & embeds

Links are what turn a folder of notes into a connected body of knowledge. Fable makes linking effortless: type two brackets, pick a note, and you are done. This page covers every kind of link and embed.

The quickest way to link is a wikilink. Type [[ and start typing a note name; Fable autocompletes existing notes and offers to create a new one if there is no match.

See [[Three laws of motion]] for details.
Link into a folder with [[Physics/Kinematics]].
Link a non-note file by its full name: [[Diagram 1.png]].

Fable also reads standard Markdown links, where the destination is URL-encoded (spaces become %20):

See [Three laws of motion](Three%20laws%20of%20motion.md).
SettingEffect
Use [[Wikilinks]] (on by default)Autocomplete writes wikilinks. Turn it off to write Markdown links instead.

Whatever you choose, Fable always reads both formats, so a vault that mixes them works fine.

Aliases and display text

Add a pipe to show different text than the note name:

[[Internal links|the way links work]]
[[Physics/Kinematics|kinematics]]

To give a note permanent alternative names, list them in the aliases property at the top of the note:

---
aliases:
  - JFK
  - President Kennedy
---

Now typing [[JFK finds the note. When you pick an alias from autocomplete, Fable writes [[John F. Kennedy|JFK]], keeping the real note as the target and the alias as the display text. Aliases also surface in the quick switcher and in unlinked mentions.

Linking to headings and blocks

Use # to point at a heading and #^ to point at a specific block.

TargetSyntax
A heading in another note[[About Fable#Philosophy]]
A heading in the current note[[#A later section]]
A subheading, by path[[Guide#Setup#Requirements]]
A specific block[[Daily note#^cell-fact]]

When you type [[Note#, Fable lists that note's headings; type [[Note#^ to pick a block and it will add a block id if the block does not have one. See block identifiers for how to write ids by hand.

Embeds and transclusion

Put a ! in front of any internal link to embed the target's rendered content inline. Embeds stay live: when the source changes, the embed updates.

EmbedSyntax
A whole note![[Internal links]]
One heading section![[Internal links#Embeds]]
A single block![[Daily note#^cell-fact]]
An image![[Diagram 1.png]]
A canvas![[My board.canvas]]

Sizing images and PDFs

For an embedded image, add a pixel width, or width and height, after a pipe. For external Markdown images, the size goes inside the alt-text brackets instead.

![[Diagram 1.png|300]]        embed at 300px wide
![[Diagram 1.png|300x200]]    embed at 300 by 200
![300](https://example.com/cat.jpg)   external image, 300px wide

![[Report.pdf#page=3]]        open the PDF at page 3
![[Report.pdf#height=400]]    constrain the embed height

How links resolve

When Fable writes a link, the path it uses is set by Settings → Files and links → New link format:

OptionWhat Fable writes
Shortest path when possible (default)Just the note name when it is unique, falling back to a longer path only to resolve a clash.
Relative path to fileA path relative to the current note's folder.
Absolute path in vaultThe full path from the vault root.

Note names match case-insensitively, so [[my note]] finds My Note. The .md extension is optional for notes but required for other file types.

Links to notes that do not exist yet

A link whose target is missing is shown in a distinct, muted style. This is a feature, not an error: click it and Fable creates the note and opens it, ready to write. These unresolved links are still tracked, and they appear in the graph as placeholder nodes, so you can see the shape of ideas you have not written yet.

Automatic link updating

Rename freely

With Automatically update internal links on (the default), renaming or moving a note inside Fable rewrites every link and embed that points to it, across the whole vault. You never have to hunt down broken links.

  • This covers both wikilink and Markdown-link formats.
  • Renaming a heading does not update #heading links; only file renames and moves are covered.
  • A rename made outside Fable, in another app, cannot trigger the update, because Fable did not perform it.