If you go onto any Zettelkasten or PKM forum, you’ll find endless questions about the identifier/numbering system. There seems to be a dozen ways to create an ID, all with pros and cons.
Issues with the traditional branching alphanumeric IDs
I used to use the traditional branching alphanumeric ID system, i.e.:
1003/1
1003/1a
1003/2
1003/2a
1003/2a1
1003/2a1a
1003/2a1b
1003/2a1b1
1003/2a1b1a
1003/2b
1003/2c
1003/2c1
1003/2c1a
...
There were several issues with this, however.
The ‘top level’ category was too fixed, and it was hard to know when you needed a new category i.e. 1004 versus 1003/3.
It was similarly difficult to know when you needed a child note versus a sibling note, i.e. 1003/1a versus 1003/2.
Sometimes you realised you wanted a sibling note in between notes, e.g. between 1003/1 and 1003/2.
The strings could get rather long. I ended up with strings as long as 112.5d5a3b.1c2a. (I had to insert additional full stops as the strings were too hard to read.)
This branching became too complicated to easily follow developments of ideas. To an extent it ordered the cards, but the internal branching often also meant that cards such as 112.5d was dozens of notes away from 112.5e, as you had all of the cards up to and including *5d5a3b.1c2a in between.
It made it almost impossible to update the index properly as the strings took up so much space.
I accidentally duplicated numbering as cards stuck together or I simply overlooked that a card already existed as the strings became so long.
It was easier said than done to know when to add punctuation like / or .
In short, it was too easy to overthink.
A better system
I’m probably overconfident in saying this, but I think I have a more streamlined solution. It’s simpler and requires less thought.
There are two ways of creating a new ID for a card.
The first step is to check your index to see if there are already any cards on the topic.
Method 1: There are no cards on the topic
This means you create a new ID for the card based on the current date and time, as you can see below.
Method 2: There are already cards on the topic
This means you create the ID based on the notes relation to those existing cards.
Say you want to create a note about how you can’t organise eBooks as flexibly as you can organise physical books. When you check your index for ‘books’, you see you actually have an entry about ‘bookshelves’, which has note 3046.1706.
When you look at 3046.1706, you see that it’s about how physical bookshelves are relational. This is quite similar to your note about organising eBooks, so you want that new card to be close to it – however you can imagine you may want to insert some cards in between them, so you don’t pick 3046.1707 but 3046.1710 instead. (You could also go before 3046.1706, if you wanted.)
You then update ‘bookshelves’ in your index and also add ‘eBooks’ to your index, too.
Advantages of this system
It’s incredibly simple.
The IDs are short enough to be easy to read, whilst long enough to have ‘buffer’ space in between IDs.
You’re less likely to duplicate IDs.
You’re less likely to read the ID as a date like you would with 202303051341.
You have flexibility to add notes in between others.
You don’t need to worry about the top ‘categories’.
The shorter IDs are easy to add to an index.
Disadvantages of this system
You need to be on top of your index. This is your main navigation system.
As you add cards in between others, you may want to add explicit links on cards rather than relying on proximity. (This can also be an advantage, however, as it forces you to articulate connections.)
If you dislike there being gaps in your numbering, this may irritate you.
It is still possible that you’ll run out of spaces in between two cards if you haven’t left enough space in your numbering.
What do you think? Let me know in the comments.
A wealth of fabulous advice - thank you so much! I’m a well-indexed bullet journallist but with new-found Zettelkasten leanings - so this post is a gem!