Better Tagging Practices for PKM

6 minutes reading time

This article first appeared in my Roam newsletter Letters from a Roaman. I still view it as a work-in-progress.

Last week Roamhacker tweeted about sharing best practices for using tags in PKM. This is one of the perennial questions that students of my course ask. I’ve avoided writing too much on it so far because I don’t know that we’re close to “Best Practices” yet. However, here are some better practices that I’ve found to work well for me, or for others. I started to create a quick Twitter thread but it got rather long. So instead I thought I’d write it up in a little more detail and see what other practices readers may have found successful.

Tools Matter

I do think that tagging is also quite a personal thing. You have to find what works for you in your PKM tool of choice. My tool is Roam Research.

The tools themselves do matter. Not all tools work the same or provide the same abilities. What works well or is supported in one tool, may not be applicable in others.

For example, some will only let you use all lower-case, and single words. This is very limiting, and certainly forces certain choices to be made.

I’ve seen many in the Roam community ask for tags to be only lower-case or be case-insensitive. I don’t agree, at all. I want the richer nuance available that case sensitivity provides. It gives you far more flexibility.

Auto-completion is essential, ideally with a fuzzy search, so that you can find and use the same tags consistently.

You’ll make mistakes, or accidentally create a new tag so having a tool that makes it simple and easy to merge or rename them is also a really important feature to maintain your system. It ought to apply everywhere so you can rely on the fact that changing it once, changes it everywhere and any connections you made with it don’t break.

Conventions and Style

Choose some conventions and styles and then stick to them. Here are some conventions you can use:

  • lower-case
  • Title Case
  • camelCase
  • snake_case
  • name/space

Case-sensitivity gives you more options. Conventions are particularly important in shared graphs if you need to do meaningful work together. However, as with everything there are trade-offs. Unless the tool makes it simple to add complex conventions then you are best to keep it simple so that your flow isn’t disrupted and the tags can be added easily.

As an example, in the Roam Collective project, they decree that pages should be all lower-case, except for Proper Nouns and collections.

Use-case: Status

I use these to track things like the stage an article I’m writing is in. I use the convention of status/ALL-CAPS, for example:




Namespace and case helps them stand out in auto-completion. Namespaces group them and make autocompletion easier. Typing status/ gives you the focused list of statuses to choose from.

Additionally, I use CSS to style each one so I can see the state visually.

I like to use namespacing in tags to group them together and disambiguate terms. Use symbols consistently too.

Use-case: Task Management

For example, if you use tags as part of your task management, consider reserving the @ only for temporal tags. It provides a shorthand for completion and helps to disambiguate the common words, e.g. #@today #@tomorrow #@this-week #@next-week


One of the nice things that Roam enables is the ability to easily apply colours and other styling to tags, while they don’t show up in the auto-completion, they do make it immediately obvious when you have selected the wrong tag. Pick colours to identify and group tag types. (See my Zettelkasten example below).

Use-case: Zettelkasten

Zettelkasten coloured tags

Context over Metadata

In our rush to carry over practices from the more conventional page and folder system of note-taking, there is a lot of discussion around metadata best practices. I’m as guilty as anyone, blindly following advice with little thought as to why. One common one in particular is a “Tags” attribute, and then a list of tags you might think relate to the page. This is often too coarse, and the tags aren’t necessarily that helpful in finding or resurfacing the right information later.

Instead, tag (or in Roam specifically, use the inline page reference notation), preferring multi-word phrases that are more contextual to the block. Remember to stick to your chosen conventions. Your notes are for thinking; don’t concern yourself with whether your notes are pretty or conform to grammar and punctuation norms. If you use the block for output later, you can easily clean these up with editing tools.

Additionally, I will use the hashtag notation at the end of the block to add more orthogonal associations or connections. This provides for more dense connections and deeper linking to the relevant blocks.

When you are adding the additional connections, think of the phrase “This reminds me of…“ and add those specific phrases which come to mind.1

One further comment which is an exception to my page metadata rule above. If you do have some page-level tags listed at the top of your page in a single block, then you should nest the rest of your pages notes underneath them. Why? It will give you more ways to filter, query and resurface your notes later in more serendipitous ways because all the child blocks will inherit those top level tags.


Use deliberately misspelt words for categorisations. For example, don’t tag quotations with tags using common words like quote. Instead, use something more unique and deliberate. I like to append the words with an x - quotex. Use this same idea for common tag uses. idea becomes ideax, thoughts becomes thoughtx. It’s a long-held practice I picked up from Better Mess

Use-case: TK

Until very recently I had been calling this TBC, but then I learnt that in publishing circles it’s known as TK, “To Kome”. Deliberately mis-spelt. A tag I use to keep me in flow and remind me to come back and choose the right word, or that it isn’t yet finished.

“Hang Tags”

I think I first heard this term from Cynthia Lou, which stuck in my mind. They are a shorthand convention for conveniently “hanging” things off. For example, resources I collect toward my 12 Favourite Problems, are consistently tagged with #12-<unique word indicating the problem>.

E.g. “How do I become a better note-taker?”: #12-note-taking

In my experience, you want to limit these to more specific purposes and your most frequent use-cases. If you have to think too hard to apply the right one, it’s too much friction and takes you away from flow and ease.


Create a [[meta/tags]] page, and pin it to your shortcuts. Take a bit of time to think through your main use cases for tags and define your conventions and styles and list our your primary tags that you expect to use. Refer to this page often as you learn and internalise them. Adjust and maintain the page. It can also conveniently act as a dashboard to these areas.

Ruthlessly prune and merge your key tags. The M in PKM is Management. This means you need to manage things. Yes, we want technology to work for us, but I don’t believe we should necessarily automate everything. It’s our knowledge we’re building. The tools are to augment that. We shouldn’t be deferring our decision making to an algorithm mindlessly. I should choose actively whether something is tagged one way or another. Don’t view it as extra work. It’s a chance to happen upon past thoughts, a form of spaced repetition if you will. You might be surprised at some of the things you already wrote, and you’ll see new connections. This is the time to add those too. This is Active Knowledge Management.

Where next?

If you enjoyed this, you might like to learn more about Roam with my free email course, or if you’re already familiar with Roam, join me and thousands of other Roamans with my bi-weekly newsletter, Letters from a Roaman, to keep you up to date on what’s happening and share other insights I’ve learned.

  1. For further reading, and a hat-tip to David Crandall (@DavidCrandall_W) who first introduced me to this idea, read The case against metadata tagging in Roam

Topics: , , , ,

Got any questions or comments? Drop me a message on Twitter (@elaptics).