Tags - best practice for using tags to replace hierarchical folder structure

I am interested in replacing my hierarchical folder structure with the tag system.

Are there any best practices (or do you have personal experience) of how to use tags as a replacement for the hierarchical file structure?


Experts recommend that you should set up the minimal hierarchical folder structure that is logical for you, and use tags for all other categories.

For example, Kerry Gleeson's classic book The Personal Efficiency Program (1994, 4th edition 2009) recommends the following three folders: 1. Working, 2. Reference, 3. Archives. "Working" would contain files related to projects you have not yet finished (organized into subfolders by project); "Archives" would contain finished projects (perhaps organized into subfolders by year or month); "Reference" would contain files that are unrelated to particular projects. David Allen's classic book Getting Things Done (2001) recommends similar categories.

But Gleeson and Allen's recommendations are just examples; use whatever folder structure seems right for you. That's one of the lessons of the book The Science of Managing Our Digital Stuff (2016) by human–computer interaction researchers Ofer Bergman and Steve Whittaker. Bergman and Whittaker describe "the user-subjective approach to personal information management" which has three principles:

  1. Organize stuff by project, just like Gleeson and Allen recommended, as I mentioned above (and in addition to creating a project folder in your folder hierarchy, you can also create a tag for the project, and create a Smart Folder to retrieve all items tagged with that project tag, including email and calendar events, as described below);
  2. Organize stuff by its importance to you, which means that stuff you think is important should be highly visible and accessible, and stuff you think is less important should be less visible, so as not to distract you with clutter (part of the purpose of the "Archives" folder mentioned above is to make older, closed projects less visible, and hierarchical folders in general are great for hiding stuff that is less important);
  3. Organize stuff by context, which means in connection to related attributes: internal context includes your thoughts while you were interacting with an item (these thoughts can be put into tags, as Brett Terpstra describes in a quotation below), external context includes the place where you were or the other items that you were using while you were using an item (these contexts can be put into tags or links); social context includes other people related to the item, such as other people who have edited the item; and temporal context includes when you last edited an item, why, and what state you left it in (this information is put in, for example, a file's date modified and date created, and in the file versioning system available in macOS since Lion (10.7), and more explicitly in the "commit" messages used in version control systems such as Git).

You can manage tags in many ways, which I will describe in detail below:

  1. in the Finder,
  2. in Spotlight searches and Smart Folders,
  3. in third-party apps,
  4. on the command line,
  5. in scripts,
  6. in Save dialog boxes, and
  7. in many apps, by clicking on the title bar of a document window to see and edit a list of tags for that document.

In the Finder, make sure you have the Edit Tags button enabled in the toolbar of Finder windows (it is enabled by default, but if you disabled it you can enable it again from the Finder menu View > Customize Toolbar...) and the Tags list enabled in the sidebar of Finder windows (it too is enabled by default, but if you disabled it you can enable it again from the Finder menu Finder > Preferences... > Sidebar). You can customize the list of tags in the sidebar from the Finder menu Finder > Preferences... > Tags. In the Finder, you can select file(s) and then add or remove tags by using the Edit Tags button (add a keyboard shortcut in the Keyboard system preference pane if you wish) or the Get Info window (command + I) or the Inspector modal window (option + command + I).

You can search by tags in the search field in the toolbar of Finder windows: just start typing the name of a tag, and a menu will drop down with a list of tags: click on the desired tag to finish the search. (Then click on the Save button if you want to save the search as a Smart Folder.) You can search for tags in Spotlight searches by typing the prefix tag: and then the tag name. In both of these search fields, you can also search for multiple tags at once and use the Boolean operators AND, OR, and NOT (or the minus sign , which means NOT) to narrow search results: for example, tag:trip NOT tag:france is equivalent to tag:trip -tag:france. If you search your entire computer with Spotlight, you can also edit the tags of any email (from Mail.app), calendar events (from local or iCloud calendars in Calendar.app), or reminders (from Reminders.app) that appear in the search results; this is a great way to tag items from multiple apps for inclusion in a single tag search result or Smart Folder.

The Finder is not always the best way to browse by tags. Some people have called tags "Finder tags"—but this phrase is a misnomer because tags are an extended attribute in the filesystem and are not limited only to the Finder! You can also tag files and browse by tags in third-party apps such as Fresh and Leap from Ironic Software. I find Leap to be an especially excellent way to manage tags, thanks to its tag cloud and many ways of viewing files that are not available in the Finder. You can also index your files in the information-management app DEVONthink, which reads and writes standard tags but also allows you to organize tags into a hierarchy, which allows for what librarians call faceted classification.

The easiest way to use tags on the command line is to install James Berry's command-line tool tag, which can be installed with either of two package managers: Homebrew (brew install tag) or MacPorts (sudo port install tag). After installing tag, you can use it to search for tags and to tag files on the command line; for more information, consult tag --help or man tag. You can also use tag in scripts, either stand-alone shell scripts or as part of an Automator workflow.

Here is the tagging philosophy of software developer and tag enthusiast Brett Terpstra:

The beauty of tagging, as you may know, is that you can easily assign multiple categorizations and topics to each item, rather than just having them exist at one location which defines it as a type or part of a static collection. I still use the shallow hierarchy of folders that drill down to individual projects and topics, so it's not a "one pile" deal. I couldn't function like that; it's difficult to weed, and if metadata is lost, so is the file, essentially. I use folders to maintain filesystem sanity. I use tags and other metadata to maintain my sanity.

I also use tags on iCal events, emails, web sites and other elements of my system. They're easy to filter in searches and allow me to make a project "folder" that contains more types of data than Finder would normally make convenient.

[...]

The secret, which I've learned from a few years of doing this, is to tag intelligently, sparingly and consistently. Being liberal with tags like "important" or "flagged" just means more upkeep and reviews that have to be done to keep the tags relevant. While tags like "neat" or "supercool" seem silly to me, I use one "inspiration" tag on anything that I'm saving just because it's, well, inspirational. I have a Smart Folder in Finder that pulls up everything with that tag, and then I can filter the files based on date, type, etc. If I add additional tags, they are pretty general, such as "color," "webdesign," or "productivity." These are big buckets I can dive into when I need an idea, or a kick in the pants. The tags on project and research files tend to be more specific, and I can drill down to precise sets of files by typing a few words in Tags or HoudahSpot.

To keep the cruft down, I use tags which aren't already defined by other metadata like the creation or modified date, the filetype, the filename, etc. I do tag files with the name of their parent project or topic, even though it's often redundant to the folder hierarchy. This allows me to tie projects together across multiple folders, disks or even servers. Sometimes a file is more strongly tied to a topic than it is to an individual project. Say it's a general reference item or a stock photo that I gathered while working on a specific project, but that I know I'll need again. I put it into a reference folder or photo collection, and tag it with the related project. It's easy to view it in the context of the project with a tag search, but part of a larger collection of similar items at the same time.

When in doubt, I usually choose tags based on the first thought that pops into my head. Chances are, when I'm looking for it again in a year, I'll have the same thought. It doesn't always work, but I've had a pretty good success rate over the last couple of years. As often as possible I try to reuse tags; a tag that reveals one or two files is a useless tag. My "Yearly Review" includes weeding out tags that have very few associated files, or that could be merged into more common tags.

Keep in mind that you may lose your tags if you transfer files to a filesystem that does not support tags, or if you use a version control system like Git that does not support tags. Some important reading on this topic includes:

  • Brett Terpstra's blog post "How to lose your tags"
  • The Ask Different question "Are tags portable, and if so how?"

I use tags for everything and love them. Dropbox supports them too. I use homebrew so I just did

brew install tag

Now, I can easily find anything. Doing my Tax Return? Simple, just show files tagged Tax and 2016. Want to see a favourite photo from 2012, easy just view files tagged 2012 and favourite. Need a recipe? That'll be files tagged recipe.

The joy is that with a hierarchical system, you must choose whether that PDF about Image Processing in C++ goes in the C++ directory, or with the PDFs or in Image Processing - with tags, put it any place. Love it!