How do you encode "link sequences" and branching?

Luhmann’s original Zettelkasten method created “strands” of notes that could link to one another. Obsidian handles linking well, but I’m curious if anyone have a good solution for encoding sequences of notes. One could use file names of course and just copy Luhmann, but I wonder if anyone have a better solution.

If you’re not familiar with this concept of strands, there’s tons of blog posts about it. Ahrens describes it in his book, How to take smart notes. This blog post summarises it pretty well.

Some thoughts:

  • I like Andy Matuschak idea about “note titles are like APIs” and note titles with sharp claims (see this link). This conflicts with the file name solution for creating strands though. Could maybe use an alias, but it feels a bit clunky
  • One could use a higher order note/MoC with a numbered bullet point list :man_shrugging:

Ideally it would be nice to see a note’s context once you click on it. I.e. not just links and backlinks, but “this note is part of this strand”, or something.

1 Like

Make a section called “Strands” in each note. In the section make a list. Each list item represents a sequence the note is part of, and contains links to the previous and next notes in the sequence. The list item could also contain a Luhmann ID if you wanted — if you put it at the start, it could enable sorting if you compiled a view of all the list items across notes.

Or you could put Luhmann IDs in a metadata or Dataview field.

1 Like

I have been playing with this myself. So far, my solution is as follows. Sequence notes are part of something bigger so I usually have an index note that acts as a loose table of contents. Sometimes, like for an argument that could have multiple premises that are not necessarily connected in an index, then there is no central point even though there is a sequence of thought. Of course, I could create an index once a full argument has been defined, but I don’t know that until I’m done. So, an index allows for moving around. However, it’s really inconvenient if I come upon a note in a sequence and just want to follow it back or forward. For that, I have at the top a link back to the previous note or premise along with a :arrow_left: icon pointing backward and a link at the bottom of the page that points toward the conclusion or next note with a :arrow_right: icon.

It looks like this at the top of the page:
:arrow_left: back to [[premise]] or [[index]]

and like this at the bottom of the page:
next [[index]] or [[conclusion]] :arrow_right:

It’s a little clunky, but I have noticed when I come upon these notes, it’s fun to follow the trail. For each premise, you just add more backlinks with arrows to the list. If a premise is parallel to others, use up or down arrows to show lateral movement and make a comment such as see parallel premise [[premise]] :arrow_up:

It’s a work in progress. Maybe you’ll discover something much better. I think, as long as there is consistency and it’s understood, just about anything will work.


I’ve experimented with this and haven’t been able to come to a satisfactory solution. The major problem that I have with the MOCs is that it becomes cumbersome to manage when you essentially have bullet point lists within bullet point lists. The physical zettelkasten solved this with the numbering system built into the process.

In a digital system my favorite example has been the “Folgzettel feature” of the ZK^3 program where it helps you essentially create a list with lower level lists being automatically integrated into higher level ones.

I haven’t tried putting Luhmann IDs in a metadata or dataview field, so that may work.

I agree, the concept of a folgezettel also acts as a forcing function to put new knowledge into an existing context, you have to think “how does this new piece of knowledge relate to what I already know”. This will help with remembering and also trigger associations.

This plugin gets you pretty close to ZK^3’s folgezettel feature, (or with slightly nicer file name rendering, but have to be installed manually, obsidian-md-title-sidecar). It’s not documented (for some reason), but it will create the same structure as ZK^3 based on the filename.

For instance, if you have these files

  • 1
  • 2
  • 1a1
  • 1a2
  • 1b1
  • 1a1a

and so on. They will be rendered with the “correct” indentation and order according to Luhmann’s system. This works nicely on macOS since it orders 1a10a after 1a9a (i.e. it respect numerical values). You can of course have more descriptive strings after the id in the file name. Two caveats that I see after 10 minutes of experimentation are

  1. You can’t collapse different levels
  2. Indention is proportional to number of consecutive branches, naturally, and will at some point be rendered off screen. I.e. 1a1a1a1a1a1a1a1a will be indented a lot.

I would love to see this idea further developed. I don’t worry so much about where the folgezettel data lives, file name is fine. With alias support, linking won’t suffer that much, and with obsidian-md-title-sidecar I won’t have to see the ID in the file explorer. I’m going to experiment a bit with this over the weekend.

I see you’ve been active on this topic quite a lot, @lizardmenfromspace, but for others stumbling upon this, you might want to have a look at:

1 Like

It has always seemed to me that folgezettel is essentially an outline as in Dynalist, Workflowy and presumably Roam and Logseq.
In which case, having a MOC note which is simply a bullet list should work (though I don’t know if Obsidian has any limit to the number of levels available in a bullet list.

It would be something like:
1 [[Note 1 Title]]
2 [[Note 1a Title]]
3 [[Note 2 Title]]
& etc

idk how to do sub-bullets here

Number lists cycle 1-a-i-1

Actually, I’ve just tried a little test and it seems to work quite well. Ctrl click to see the note content.
And it allows the note processing to be in two phases - writing the note and placing the note in the hierarchy.

Simple solution: when creating notes or collecting other documentation pertaining to an existing note, create a folder with the same name and put them there. If you know the sequence, number them.

You could check out the Breadcrumbs plugin in Community. It provides a very configurable mechanism for linking and navigating a 2D structure between notes using YAML metadata in the notes.

  • Up/Down (Parent/Child)
  • Next/Previous (Same level. Strands?)
  • Sibling (Same level but unordered.)

It has several ways to automatically add YAML metadata.