When to use pages, tags, or attributes in Roam Research?

Reading time: 3 minutes

One of the peculiarities and most powerful design choices of Roam Research is the absence of folders. Forget about files placed into a specific location; instead Roam helps you build a graph of bi-directionally linked nodes, making the most of the network effect by multiplying the potential for new connections.

There are three types of nodes you can create:

  1. [[Pages]] (using double square brackets)
  2. #Tags (using a hashtag)
  3. Attributes:: (using two colons)

What some people find confusing is when to use a page, a tag, or an attribute in Roam. The fact that each type of node technically creates the same output doesn’t make things easier. Here are some rules of thumbs to know when to use which type of node.

Page, tag or attribute in Roam Research


You should use pages with double square brackets at least 80% of the time. If you don’t know which type of node to go for, just use pages. They work in most situations, and you’ll be completely fine using Roam if you never use tags or attributes.


This is absolutely optional, but you can use tags for one-word categories that you use extremely often. This is more of a stylistic choice so you can use the hashtag to visually make the difference between what you would normally consider a page, and what you would normally consider a tag. But, again, a hashtag will create the exact same kind of node as a page, so it’s completely fine to stick with pages with double square brackets.

A cool but more advanced feature of tags is that they come with a data-tag CSS class, which means you can target specific tags and style them the way you want. This is how I styled my tags in the Roamness theme. Obviously, this is far from essential to be able to use Roam.

Styling tags in Roam Research with custom CSS

Special case: please note that hashtags currently don’t play well with non-Roman languages such as Japanese and Korean (anti-ironic, I know). If you want to use tags with these languages, you will have to use the more convoluted tag and brackets: see #[[仕事]] for instance.


Use attributes if you need to build some sort of tracker — for instance a habit tracker or a reading tracker — and you need to build a table based on that metadata. If you don’t need to build a table out of the data, you probably don’t need to use attributes.

Attribute table in Roam Research

In summary, stick to pages when in doubt. If you like the look of tags, you can use them for common categories of content you create, but that’s optional. Only use attributes when you want to track metadata and display it in a table.