Zettelmarkup

Zettelmarkup is a rich, plaintext-based markup language designed for writing zettel content.

One of the key benefits of Zettelmarkup is its focus on longevity. It provides a syntax that is easy for both humans and computers to read, ensuring that your notes remain accessible and usable over time. Compared to other markup languages, Zettelmarkup is simpler to parse and work with. Writing a parser for Markdown, for example, can be quite complex. CommonMark tries to address this by providing a clear, comprehensive specification, but even with that, implementing a parser can still be a challenge.

Zettelmarkup, on the other hand, is built around a few straightforward principles that anyone familiar with software development can easily understand and implement. Its simplicity ensures that it remains a practical and long-lasting solution for note-taking and knowledge management.

Zettelmarkup is a markup language on its own. This is in contrast to Markdown, which is basically a super-set of HTML: every HTML document is a valid Markdown document.1 While HTML is a markup language that will probably last for a long time, it cannot be easily translated to other formats, such as PDF, JSON, or LaTeX. Additionally, it is allowed to embed other languages into HTML, such as CSS or even JavaScript. This could create problems with longevity as well as security problems.

Zettelmarkup is a rich markup language, but it focuses on relatively short zettel content. It allows embedding other content, simple tables, quotations, description lists, and images. It provides a broad range of inline formatting, including emphasized, strong, deleted and inserted text. Footnotes2 are supported, links to other zettel and to external material, as well as citation keys. Zettelmarkup allows you to include content from other zettel and to embed the results of a search query.

Zettelmarkup might be seen as a proprietary markup language. But if you want to use Markdown/CommonMark and you need support for footnotes or tables, you'll end up with proprietary extensions. However, the Zettelstore supports CommonMark as a zettel syntax, so you can mix both Zettelmarkup zettel and CommonMark zettel in one store to get the best of both worlds.

  1. To be precise: the content of the <body> of each HTML document is a valid Markdown document. ↩︎
  2. like this ↩︎