Skip to content

Links, tags & embeds

Node text is the source of truth, and three bracket syntaxes turn plain text into a graph: [[links]], #tags, and ((embeds)). Every reference is tokenized and resolved on the same write transaction that saves your edit, so the graph is always exactly as of your last keystroke, never a background job behind it.

Syntax Renders as Meaning
[[Page Title]] A blue link Clicking navigates to the target page
#tag or #[[Multi Word Tag]] A tag chip A lightweight, clickable label; use the bracketed form when the tag has spaces
((Page Title)) An embedded block Renders the target page’s content inline, in place, as part of this page

All three share one resolver: a reference’s target text is looked up as an exact page title, then as an alias, and if neither matches, Subspace implicitly creates a new page with that exact title, filed under the unfiled directory, so the link is never dangling. This applies equally to [[links]], ((embeds)), and #tags: typing #roadmap for the first time creates a page titled “roadmap” in unfiled and tags become ordinary, clickable, mergeable pages just like anything else. See rename and merge for how a page’s title (and therefore every ref to it) stays consistent as it moves around.

A node whose text starts with key:: value, for example:

cash:: 812k, runway to March

maintains a page-level label: cash becomes a key on the page, addressable from tables and formulas or a custom function as [[Q3 planning]]:cash, where the value is everything after ::. Labels re-derive on every text edit to that node, edit the bullet and the label’s value updates with it, and a page can carry any number of distinct label keys, one node owning each key (a second cash:: node on the same page overwrites which node backs the label).

Every page that links, embeds, or tags a given page shows up automatically: the “Linked references · N” footer at the bottom of a page lists every referencing node, grouped and sorted by source page title, with the exact bullet text that made the reference. Click a backlink’s source title to jump to that page. Backlinks are computed live from kb.links (indexed by destination page), so they never fall out of date and require no manual upkeep, if a reference is deleted or rewritten, it disappears from the footer on the next read.

A #tag renders as a small chip (using the --tag-ink / --tag-bg design tokens) rather than the bracketed link styling. Because tags resolve through the same link-resolution path as [[links]], a tag is a real page: click a chip to open the tag’s page, and use its “Linked references” footer to see everything tagged with it. Group related tags under a directory the way you would any other pages.

((Page Title)) embeds the target page’s body as a rendered block inside the current page, useful for transcluding a shared checklist, a status table, or a canonical definition without duplicating its text. An embed is a live view: editing the embedded page updates every page that embeds it, the same convergence mechanism that keeps multiple open windows in sync.