Nodes are the fundamental building blocks of Tana, each representing a piece of information that exists in the hierarchy of the outline structure. A node is atomic in format, making it infinitely malleable and rearrangeable. Nodes can exist in many places at once, as References. Everything in Tana is a type of node, which is part of the design philosophy that makes Tana so powerful.
The first thing you'll encounter in Tana is the node.
Nodes look like bullets, and are the basic building blocks of Tana: They are designed to be light, rearrangeable packets of information. Use it to store a piece of information: A note, an idea, a paragraph.
The atomicity of nodes is key for unlocking the power of Tana: Nodes are the indivisible parts of a living information system. Living, because a node can grow and change over time. The simplicity of the node allows it to be used as a plain bullet for taking notes, all the way to powering sophisticated daily dashboards of dynamic information driven by Commands and enhanced by AI.
A node is an object that can be reused anywhere in Tana: Imagine if every time you visited your friends, they would forget your name and all the memories you've had together in the past? It's not just very annoying, but this is what's happening in documents and folders everywhere: you as a person is mentioned by name, but none of these mentions connect to a single entity that represents you, so the info gets stale (unless you're one of those who, on your birthday, is "always" turning 25). In Tana, every time you mention a quote in different contexts, you can connect it to the actual quote in the book it came from. Let's say the quote had a mistake - changing the quote in one place changes it everywhere it has been mentioned. These mirror versions of nodes in Tana are called References.
References ensure that important information stays relevant and updated: In Tana, if you have entered the information once, it is easy to pull it into different contexts again and again just where you need it. In meeting notes, create tasks as they arise in conversation and use Supertags to make them magically appear on someone's task board an instant later. This powerful connectivity enables you to update information everywhere, on the fly, in one go. No more mission-critical information getting outdated, going stale and being forgotten.
In Tana, everything is a node: The fields, the views, the commands, the settings, layouts, workspaces, the daily page... everything. The difference between these node types is the kind of information Tana stores in them. For more info, see Node types.
Every node is unique: Nodes are not just bullets, they are sophisticated containers for information. Every node in Tana is given a unique ID upon creation. You can see the ID of the node in the URL bar when you copy a link of it. This means that even though two nodes may look the same and spell out the exact same thing, they are considered different if they have different IDs. There's also a dozen other pieces of metadata collected per node in Tana.
Every node has an owner, a single source of truth: All nodes have a permanent address within Tana's outline hierarchy. This means that a node will always have a parent: a node that is one level higher than them in the hierarchy, essentially their owner (with some exceptions). Why nodes only have one owner each is explained in the next paragraph:
Mirror copies of nodes are References: In Tana, you can have mirror copies of nodes. These copies reference the original node, hence their name Reference, and are one and the same for all intents and purposes. Editing one reference edits the original and thus every other reference of this node in Tana. There are some differences to keep in mind. For one, they are not owned by their parent: Parents of these mirrored nodes are just parents. Also, when you delete references, you're not deleting the original node, the single source of truth.
Nodes do not accept line breaks: To maximize the reusability of nodes means upholding strong design principles that keep their atomicity and simplicity intact. Therefore, Tana does not accept soft line breaks within a node, as it would make the node less uniform and universal.
The easiest way to find it is to use the command get html link to node and paste it somewhere. This yields a text that looks like this, where the link opens Tana at the specified node given you have access to it:
You can use this code to find the node it refers to. Paste it into the global search bar and the node with that ID should show up. Note: You have to have access to the workspace that the node resides in, or it won't work.
A node cannot be referenced more than once as a child. This is because we don't allow the same nodeID to appear twice in the same list.
What is a node: A node is a container for information.
What is a reference: A reference represents a mirror copy of a node.
Node/reference relationship: Every reference has a direct connection to their original node. You can't have a reference without an original node that it refers to. If the original node is trashed, references won't be trashed but appear with a trashcan which you can click to bring out of the trash.
The technical difference between nodes and references: They are carbon copies because they use the same ID to draw from the same data. The only difference is that one of the parents of the references matches the value in the Owner field, turning that reference into the "original" node.
Changing a node's ownership:
Within the same workspace: you can change a node's ownership by swapping places between the original node and any of its references. On a reference, use the command Bring referenced node here and it'll change the owner to its parent, making this the original node.
Between workspaces: you have to use the command Move to, or cut-paste a node between workspaces.
Keeping track of tasks in the form of checkboxes are a fundamental part of a node. It is baked into the metadata of every node through the Done and Done time system fields. There are some very simple and powerful things you can do with checkboxes in Tana to track your tasks:
Any plain node can be a checkbox: Cycle through each checkbox state by hitting Cmd/Ctrl+Enter.
Checkboxes have three "done states": no checkbox, not done, and done.
You can find all checkbox nodes that is a descendant of a node by running the command Find todos within →. This is handy when you've been creating tasks on the fly and want to gather them all.
Special search terms exist for finding nodes with checkboxes:
TODO - finds all nodes with checkboxes, no matter their done state
NOT DONE - finds all nodes that are unchecked
DONE - finds all nodes that are checked
DONE LAST <X> DAYS - finds all nodes that were done the past X days. Write it out like this: DONE LAST 7 DAYS
There's an option to lock nodes so they become non-editable.
Nodes can be locked by using the command Lock node. If using Build Title on a Supertag, this will also lock parts of the node that are derived from field values.
Option 1a: @-mention on empty node. Type @ and then the keywords for the node you're looking for. Hit Shift+Enter to select it.
Option 1b: @-mention in the middle of a node. Type @ and then the keywords for the node you're looking for. Hit Enter to select it.
Option 1c: @-mention in the middle of node to make a new node in Library. Type @ and then the keywords for the node you're looking for. Use Cmd/Ctrl+Enter which will create a new node in Library and make an inline reference to it here.
Option 1d: @-mention with text selected. With text selected, type @ and then find the node you're looking for. Hit Enter to create an inline link using the selected text as alias.
Option 2: Copy/paste, then type. Create inline reference by first copying the node/reference with Cmd/Ctrl+C, then paste into empty node with Cmd/Ctrl+V . Hit Spacebar or any other key to make it inline.
Option 3: Type, then paste. Start typing in an empty node, and if you have a reference already copied, you can paste it anywhere in the node to make an inline reference.
For a quick look at what's inside the inline reference, you can expand it in context without navigating to it:
Shift+click on an inline reference
Focus on an inline reference and press Cmd/Ctrl+Arrow down
(This section is greatly improved thanks to Navigator Maciej for writing an excellent post on all the ways to create references and inline references back in early 2023! 🙏)
If you want the inline reference to be written out differently, select the inline reference , then use Set Alias on the Text selection toolbar and type out what you'd like it to be.
References: If a node has references, at the bottom of such a node will be a section with the title "References". Expanding this will show you the breadcrumbs of where these references exist in the workspaces it appears in.
Unlinked mentions: Here you'll also find something called "unlinked mentions", which shows you all places where the name of the current node is found elsewhere in Tana but is not linked (as a reference or inline reference) to this node. From here, Tana gives you the opportunity to establish a link if you want using the button "Link" to the right.
Nodes and references are made differently from regular bullets, so there are some things to keep in mind when wanting to delete them.
To delete a node with no references:
Option 1: Use Cmd/Ctrl+Shift+Backspace on the node.
Option 2: Right-click on the node bullet and select "Delete node"
Option 3: Using Backspace on all the words and then finally the node itself will also work.
Note: If a node has content and your caret is at the beginning of it and you hit Backspace, it will delete the node and merge this node's content with the node above it.
To delete a reference without editing its contents:
Option 1: Use Cmd/Ctrl+Shift+Backspace on the reference.
Option 2: Right-click on the node bullet and select "Delete reference"
To delete a node and all its references:
Use the command Hard delete including references. This will remove the references in the current workspace, but make references in other workspaces show up with a Trash icon.
You can trigger custom commands to run when child nodes are added or removed from the target node.
To configure: Use the command configure node and scroll down to the On child added/removed. Add the command nodes here.
Use case examples:
When a child is added, give it a tag and run an AI prompt
When a child is removed, add the current time to a field of the child
Limitation: If nodes are added/removed via API, it will not trigger as they are currently not recorded as a user action. This is a limitation with the way the API is implemented.
To add notes to a node without making it permanently part of that node, you can use something we call contextual content.
In List view: use the shortcut Cmd+Option+Arrow Down (Mac)
In Table view: It's available as a column via the Add+ button at the end of the columns
A node with contextual content will display as a diamond instead of a circle.
Contextual content tends to be most helpful when you write a live search (viewed as a table) and want to process all of the results in some way without adding new data directly to the nodes. It can be as simple as adding a contextual checkbox field that says "I already looked at this."
If you have duplicate objects in Tana and you want to merge them to one, you can select them and use the command Merge node to choose which node you'd like to merge the other into. This works on nodes, supertags and fields. When a node is merged into another:
All the children are combined (if they both have the same fields, children in that field are also combined)
All tags are combined, and the original node is put into trash
All references and inline references in the available workspaces are updated to point to the new node.
If there are workspaces that had not been loaded during the merge with references to the merged node, these references will clearly point to the new node.
ImprovedPasting a Tana node or a link to a Tana node while text is selected, turns the selected text into an inline link to the node (similar to what happens if you paste an external URL over selected text) ()
ImprovedWe now automatically create a new checkboxed item when you hit enter at the end of one checkboxed item. A simple backspace will remove the checkbox on the new node. ()
ImprovedButtons in the panel header are now right aligned instead of left aligned, and showing only the source material icon, not text. ()
FixedFix issue where second right click didn't open native context menu on nodes in fields ()
InfoWe now hide first/last page button in pager menu if there's less than 5 pages ()
FixedRe-introduced: Right click when node options context menu is already open opens the native context menu. Now we can fix our spellng errors again! ()
ImprovedWhen you right-click a node now, you see a context menu instead of the toolbar. We've also added context menus on right-click to several places, like related content headers, panel headers, and breadcrumb items. ()
FixedDragging images to upload a new banner to a node was broken, it's fixed now. ()
NewWe have fullscreen preview! Expand image nodes by hitting <space> while it's focused. Use the previous/next buttons to navigate to the previous or next image in the list. ()
ImprovedFullscreen preview now supports video nodes, in addition to image nodes. It works just like images, and will autoplay when viewed. ()
Fixed@-mentions will now only show recently opened nodes from workspaces you have "allowed content from". ()
ImprovedWe decrease the font size of the panel header for very long node names ()
ImprovedThe sorting for at-mentions no longer penalizes nodes with title expressions, but we slightly boost nodes whose name (not title) start with the same string that you searched for ()
ImprovedEnsure that recently created nodes show up in the at-mentions immediately ()
FixedFix bug that prevented newer Vimeo videos with longer IDs from embedding ()