Homepage    |    GitHub    |    API    |    Wiki    |    FAQ

What would make a good zettelkasten plugin?

There have been various requests related to the zettelkasten method, which I think is mainly about improving linking between notes. It would be useful to narrow down the list of features that would make a good zettelkasten plugin in case someone wants to develop it some day (or if we make it part of a future GSoC). So far I can think of this:

  • Display the last modification date of a linked note next to the link.
  • Strikethrough linked notes that have been completed.
  • Update link title when the linked note title changes.
  • Make it easier to link to a note - for example use Goto Anything to find the note, and insert the link from it.

Any other ideas of what could be added?


I use Joplin partly for a zettelkasten-system. Existing plugins like quick-link, backlink or the visual graph plugin already help a lot. The link-features you mentioned sound very helpfull too.

On the other hand at the moment it is more of a problem to realize the static-linear side of my zettelkasten than to build its hypertext, as the schemes for sorting are only date, title and the basic individual order, which could be upgraded in some way for example. For my use cases the potential of a zettelkasten unfolds, when it can "oscillate" between a linear and a hypertext structure. That's crucial for classic, famous examples like the zettelkasten by Niklas Luhmann too. At the moment I work with leading numbers/letters before the note-title to get a safe subject related and/or hierarchical order. Therefore nice zettelkasten-features would be:

  • ability to arrange notes in a specific, visible order
  • automatically insert and update links between neighbour-notes (front & follow-up), then linear subject strands would be connected to the hypertext (visible in the link graph for example)
  • would be great, if I could define for every notebook if it lists notes by date, title or individual order
  • ability to highlight important notes, as it would help to maintain the zettelkasten and makes sorting easier

Personally, I find Luhmann's indexing method to be deeply tied to the physical nature of the index cards he used — a form of clustering information together to aid browsing. I would have my doubts about trying to impose any global order on the notes through their IDs. The moment our notes cease to be tree-like in structure and become a graph (possibly containing cycles), we can no longer have any top-down structure.

However, along the same lines of discussion, there is an ordering in the way we visit notes, creating one (or many) linear narratives throughout. I think this could be very valuable in a Zettelkasten system.

With large pools of notes, it becomes unmanageable to pinpoint the information we're seeking. So we rely instead on forms of fuzzy search to get us within the vicinity: keywords, tags, master pages, or search grammars. However, even this is can sometimes not be enough — I will often find myself relying on note links when I'm not even sure about what I am looking for, that "I know something about X" feeling. Or for mind-wandering. Or when I'm looking for a particular angle.

In the book "How To Take Smart Notes", Sönke Ahren quotes Luhmann "conversing" and being "surprised by" his slip-box. I find this description spot-on: we converse with ourselves by linking thoughts through semantic relationships. This build context around the information and makes the initial entry point less crucial. Sometimes the value is not in the final note but the traversal: how did you get to this piece of information, what it relates to, and what sparked the relationship.

This process feels to me very much like keeping a few stacks of notes, moving up and down as thinking unfolds. On top of Joplin's search functionality, the ability to jump hyperlink backwards and forwards helps somewhat. So does the Graph UI for a bird's-eye view. But I find myself often relying on the Note Tabs plugin to "anchor" thoughts as I move through them, to avoid losing some of that context.

This concept of stacking is executed beautifully in Andy Matuschak working notes. The layout used makes the traversal explicit by piling up notes horizontally as we click links, providing a visual representation of the process of "I was thinking about this, then this, then this...". The preview of links is also a nice complement to "look ahead" without clicking.

I would vouch for some plugin that would allow a similar track record of the notes visited. Some mechanism that would trigger after performing a search and keep records as we click through links, perhaps "branching off" on-demand by using "alt+click", middle-button click, or any other well-established convention. Apologies for the long-winded post, but I thought that the Why might be more valuable than the Hows for this discussion.

I suppose this idea could take many forms in the hands of a great developer/designer: visual stacking like the example above or something as simple as an extension of the idea of "browsing history" in our internet browsers. Code management systems like git solve similar problems in presenting the information, though this is perhaps too much of a conceptual jump.



Thank you for this interesting post. I have tried a lot of things in this area and I think stacking is interesting but not enough. I think that if some people like Obsidian for the Zettelkasten it is because of the power of exploration of the graph produced from the links between the notes. The great strength of this graph is that you can integrate the "tags". You can see in the same graph the notes connected according to their content (classic link) and the notes attached to the same "tag". With Joplin, the "backlink" plugin allows to see the links between notes and the search by "tag" notes by tags but not both in the same view.

For the exploration of a path of thought, I quite agree that a path history in the notes would be interesting. One could imagine it in a graphical form with a visualization of the branches... and then it would remind something.


Another serious question that seems to be asked by all Zettelkasten type projects (org-roam, Zettlr, Obsidian, logseq, etc) is the type of link. Normally, the idea of a Zettelkasten is to connect so-called "atomic" notes, i.e. short ones. But it is not uncommon, when you start working with this tool, to want to write longer documents. Then comes the question of linking to a specific part of a document and not only to the document itself. In this case, is it to a block? a title? If so, should each title/block have an ID? etc. I think that in Joplin, many people have a more complex document architecture than atomic notes: web articles retrieved with the browser extension; annex documents retrieved with hotfolder; eventually bibliographic records and references (plugin project); etc...


This is a great point, which I completely share. Often it would be great to insert deep links into a particular section of a note. The workaround for me has been to try creating smaller (atomic) notes, but this sometimes has the downside of introducing a lot of fragmentation in the information.

Notion seems to implement this concept of "blocks" quite extensively, but it comes at the cost (IMHO) that notes become cumbersome aggregates of blocks, hard to manage and export as Markdown. I suppose another complication of deep-links, similar to back-links, would be how to keep them updated if the content of the pointed block changed.

1 Like

Something like Embed any search - with content! seems appropriate to strike a balance between atomicity and longer documents.

1 Like

One of the features I'm missing, that might also play along nicely here, is a new kind of view mode that would take all the currently filtered notes (i.e. the contents of the current notebook, or search results) and display them in one big, scrollable chunk. So if I have 5 shorter notes on the same topic, I could visually jump all over them, and not have to click through the menu and lose track.
(Or if there already is a way of achieving this, do point me in the right direction plox. :sweat_smile:)

IMHO, out of your list, this (i.e. quick linking) is the only relevant one. Additionally support for back-links is required (e.g. a pane view of all notes linking to the current one). Afaik, quick-linking and back-linking are the essential parts of zettelkasten, maybe add a graph view (Obsidian) for visualization.



This is already possible with the quick links plugin.

This is already possible with the Backlinks plugin although it would be nice to improve the type of contextual information displayed.



I use Joplin as a zettelkasten rather extensively. However, I'm a simple-minded non-programmer type of user, so many of the ideas discussed here are over my head. From my naive users' perspective, then, at this time I am LONGING for the following features (in order of priority) before any bells-and-whistles zettelkasten plugin:

  1. Recycle bin, so that one can simply undelete any accidentally deleted notes. Losing your work is the #1 desaster for anyone.

  2. Sync manual sort order of notes across devices. I create zettelkasten-type trains of thought in the form of individual notes within separate notebooks where each notebook is dedicated to some specific topic. The order of the individual notes within this notebook reflects my logic in developing the train of thought relating to that specific topic. That is, the manual sort order carries crucial semantic information. And I find it very important to be able to be flexible here, e.g. by purposefully inserting some later note between two earlier notes, so that some numbering scheme in the notes' titles wouldn't work for me.

  3. On devices with sufficiently large screens (i.e. tablets and upwards): An ability to split the note pane into two parts where two different notes can be displayed and edited in parallel. Because when I branch off one zettelkasten train of thought to another, that means that some note (= atomic thought item) within one notebook (= train of thought) has a semantic relationship to some other note in another notebook. And to elaborate (and note down) my thoughts about that semantic relationship, it would be very convenient to be able to see and work on the contents of the two related notes in parallel.

Thanks for reading this! -- Jack


This whole thread fascinates me, this is just the kind of stuff that attracted me to Joplin. In a way I was looking for an alternative to Scrivener, but it amounts to the same thing, organizing and cross-referencing ideas.

This isn't exactly what you're looking for, but if you select your five notes, for example, you can use the Combine Notes plugin to make a combined copy.

It's not a view mode, but it's pretty quick and uncomplicated.

The Convert Text to New Note plugin complements it, being able to send any selected section to a new note.

Scrivener by comparison lets you cut files in half. Useful, but not as flexible.

I second the idea about a recycle bin. Besides avoiding erasing important work accidentally, it can be used very efficiently when cleaning out notes not belonging to the notebook where it currently is located without needing to pay attention to where it should be. That is a task for rework day.
There are some workarounds: In the desktop version, it is possible to install the "Quick move" plugin and define a notebook where notes to relocate are placed. (but it doesn't help against loosing) The terminal version has the possibility to define a keyboard shortcut to move a note to a specific notebook, but keymaps and plugins are not synced. On Android there are no plugins.

1 Like

I think a layer of fixed structure is one of the key factors for a good working Luhmann-style Zettelkasten - a form of a productive/creative constraint and a controll-layer against the endless possibilities of linking and tagging - and putting a note next to a accumulation of thematically related notes doesn't require a top-down hierarchie. Luhmann himself describes the growth of his Zettelkasten as a proccess of clumping, or as throwing something into a septic tank and waiting, which theme-clumps the future will bring. I think this is exactly what makes a Zettelkasten more exiting as lets say a Wiki-System with some kind of browser-history. To get that out of Joplin there has to be a structure-option which depicts that some notes are native to the core of a topic, whereas others are gradually more far away, new themes grow out of the themeline and some of them will build the seed for a new themepath in the future etc.

With the custom order feature this is basically already realizable, but still a bit unstable. So for me the development of that feature would be great:


I'm a big fan of Joplin, a big fan of Zettelkasten, so this topic is really interesting to read for me !

Personnaly, I'd suggest a "Transclusion" plugin. It's a really powerful function to be able to see the content of multiple notes together, and is especially wonderful when you want to start putting ideas together into a coherent whole.

@ambrt 's search embed plugin is really close, but it's not really there in terms of usability; in my mind, using transclusion should be very quick, oriented toward individual note links, and should have a way to hide/display the transcluded content at will.

Hence, it could take different forms, but the idea of the plugin should be that when you link a Joplin note in another note, you should be able to see the content of this note without switching. For example, the renderer can display the title of the note with a small arrow next to it, and clicking on the arrow would display the content of the note with a small indent. This could be staked in a way that you could see the content of a linked note in your note, but you could also see the content of another linked note in the linked note, etc.

I imagine that this could be done relatively easily using the HTML details tag. If it is deemed best to separate "transcluded" note links and "normal" note links, I wonder if using the "!" symbol before a joplin note link could do the trick. If I remember, currently, using ! before a joplin link results in a broken link.

1 Like

Hi @Klemet

Good idea.

Yes I agree with that but I think his plugin was not designed for such intense use.

Yes, that would be a great feature. I imagine you have in mind tools like Obsidian that allow this. If we could already have a right click "open in a new viewer window" it would be very useful to browse your notes.

Yes, that's exactly what I had in mind : ) !

I agree that having more flexibility and agility in browsing multiple notes (quick and responsive tabs, other windows) would be a great enhancement to Joplin; and not just for Zettlekasten-related activities. I think that the subject has been discussed already multiple time on the forum, but even if I really enjoy the Tab plugin, I still wish for more.

But I guess that a Transclusion plugin would be a much quicker option; which, again, could be use for more than just Zettelkasten things !

1 Like

I think Joplin will never be a great Zettelkasten tool, because of its basic structure which is build around folders and and sub-folders combined with tags which are not really part of a Zettelkasten

That said every persons applies Zettelkasten or similar methods in very different ways and I think Joplin could be much better in supporting them. As stated before Transclusion and a Graph View are nice features, but for me linking notes together is the main point. I am writing a meeting note and want to reference something from an earlier meeting or I learned something new and want to connect it with some old lectures notes etc. Learning and making sense is about building connections, links between notes.
You can argue that we have plugins for that already, but I think they are not user friendly enough. The backlink plugin does not automatically add backlinks to to the Markdown-Editor and while writing a note I am not always switching between Editor and Viewer pane. Its just difficult to keep track of the connections of a note. The quick links plugin is great. I still think its annoying that it uses @@ and not [[]] , but I got used to that. But its not dynamic. If I change the title of a note the link is not changed and if I click on a link I cannot open them side by side, I always have to go back. But most importantly their is no UI to link to headlines within a note (there is not autocomplete for headlines). In Joplin I write long notes with subheadings. For example I have a long note which deals with LaTeX basics, but when if reference it in another note I want to link to one subheading. In addition to that there is the problem of mobile app support for these features if I want to write a quick note and connect it to something else.

I think the essential features are already available but the implementation is not as easy/straightforward as it is needed for note-taking.


I was going to use [[ initially but for some reason I couldn't, don't remember the details now, some CodeMirror issue.
Of course with enough time it could be changed to use double brackets, but I don't have time for this. Or interest in doing it for that matter.

1 Like

I too find this to be lacking, but a workaround is to use the Outline Plugin which when you right-click on a heading, gives you the anchor URL. The biggest issue with this though is you must click to that note, then right-click on the heading, then return. A method of quick-selecting the heading while editing the linking note would be much better.


Backlinks can be shown in a separate panel that is always visible regardless of the active editor.
Look for this option in the preferences panel: "Show backlinks in panel (might require restart)"

So if we translate this to a plugin idea, a plugin that periodically updates all linked titles across your notes would be useful, right?

I guess that tabs are as close as we can get to it right now (when one note is pinned, any linked note from it will open as a new tab).

Indeed, could be nice to have that, or even a complementary plugin that enables you to select a subheading (e.g. from the right-click menu) when the cursor is over an internal link, which will be appended to the link.