Export of multiple notes linked together, with custom level of recursivity

The current limitation

Exporting notes in Joplin works great; however, some features of the notes can be difficult to export.
In particular are the internal links - links to other Joplin notes. As pointed out in this topic and this other topic, internal links do not export to .html or to .pdf.

What that means is that when exporting to html or pdf format, internal links will not be usable. For example, if note A contains a link to note B, and that you export both A and B in html or pdf format, the link from A to B will not be usable.

Cases where the limitation arises

Internal links appear to me as one of Joplin's biggest strengths, when compared to using usual text documents (docx) to take notes. I organized workshops to help friends and colleagues to use Joplin, and all of them were amazed by this functionality.

Here is a list of some practical cases that I know of were me or others bumped into this limitation:

  • Sharing notes taken with the Zettelkasten method
  • Sharing notes about sources for a future science communication project
  • Sharing notes about research methodology
  • Sharing notes about the rules of a tabletop role playing game

In all of those cases, we have had to make the painful work of synthesizing the information back into one, single note - which can be a gruelling process. It can also completely ruin the power of sharing notes in a hypertext format, rather than a text format (like for the rules of a tabletop role playing game).

Proposition for implementation

I believe that the best way to solve this issue would be with a plugin, as I'm pretty sure that the majority of Joplin users did not encounter this limitation much.

The plugin could propose a new option when exporting a note or a notebook, titled Export with related notes.

When clicked, a menu would appear, asking for a single parameter form the user: A level of recursivity. This would define how related the not might be so that they will be exported along with the original note(s).

For example, let's imagine the following situation:

  • Note A has a link to note B
  • Note B has a link to note C
  • Note C has a link to note D

With a level of recursivity of 1, exporting the note A will also export the note B, and would create a usable link in the resulting html or pdf file to go from A to B. However, the link in the note B that points to the note C would not be active.

With a level of recursivity of 2, note A and B would be exported as before. However, the algorithm would also detect the internal links in note B, and so export note C. Hence, the resulting pdf/html files will have a usable link from A to B, and another from B to C.

With a level of recursivity of 3, all of those notes will be exported, and all of the links would be usable.

Additionally, the user could restrict the export to a given notebook. This will help the user to avoid links to notes that are of another category altogether - more personal or private, for example. The export could also be done in multiple files format, or in a single file - with internal links pointing to anchors in the files, allowing for faster navigation.

This implementation in practice

  • User wants to export a Zettelkasten note about elephants. It is to send to his new friend, who is a big fan of elephants. User uses the Export with related notes plugin to export the note, with a level of recursivity of 1, as there is no need to give all of the related information to their friend.

  • Now, user wants to export the same Zettelkasten note, but to his thesis director at the university. The director wants to see how their review of literature on elephants have been going. User uses the Export with related notes plugin to export the note, with a level of recursivity of 4, so as to be sure to cover all ends. User also limits the export to their Zettelkasten notebook, so as to avoid any links to notes that they don't want to show to their director.

Does Joplin really needs this function ?

It's hard for me to say.

On the one hand, it does seems like a big limitation, as any note containing an internal link currently cannot be exported or shared properly (that is, with an internal link that does not point to nowhere).

On the other hand, I feel like this limitation will most often concern people doing research of some kind. While I would love Joplin to be more tailored to research purposes, I'm not sure that it is supposed to be. In addition, not everybody that do research use internal links enough to really bump into this limitation.

What do you think ? Would such a functionality be useful to you ? Is this a bit of overreaching, functionality-wise ?


You can use the joplin data api to implement the export function you need. I use it to export joplin notes to blogs and wikis. Internal links and pictures need to be converted.
refer to: joplin-blog | Joplin Utils

1 Like

This kind of export is really clean, I like it ! Exporting several notes linked together in this simple "blog" or "documentation" format is really neat.The "Page publisher" plugin can already do something similar. I still think that it might be a bit more streamlined, and that automating recursivity could be helpful to the user in that case.

Personally, I prefer to explicitly declare the notes to be exported. If really needed, I will make a function that can add/remove tags to notes recursively

1 Like

Yes, please. This is really the missing link. I appreciate the value of the internal links, but for exporting they are not so useful. The folder limit and recursivity are cream on the cake. Strong Support!


This feature is really interesting. I don't know how joplin server handle internal links when notes are shared. I was thinking I could use it with my student doing research. Are internal links available for people with whom we share notes? This may solve some kind of situations.

At the moment, by design, they are not: Joplin Server sharing feature | Joplin

1 Like

The reasons given for this makes sense!

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.