Zettelkasten Forum

A standard format for zettelkasten files?

Inspired by the discussion about Auratikum I started thinking about a standard format for zettelkasten files. If there was such a standard it could spark work on different implementations without the fear of a lock-in. As a user of zettelkasten tool A I'd never have to worry about loosing my zettelkasten if tool A was decommissioned. I simply would export all zettel in standard format and import them into tool B.

All tools would be free to use any internal format they like to store zettels. Maybe A would keep them in plain text files, but B would use a NoSql database. In the end as a user I couldn't care less as long as I was able to export my zettels at any time for backup or migration to another tool.

How about the zettelkasten community define a simple standard exchange format any tool developer can implement?

My suggestion: let's use JSON. It's text based, simple, bindings on all platforms available.

Maybe a zettel could look like this:

  "id": "201801281205",
  "title": "Musings about a standard format for zettels", // optional
  "content": "--- this is the content of the zettel in plain text---",
  "content-type": "text/markdown", // optional; plain, markdown, html could be accepted formats
  "links": [{"id": "201801132302", "description":"how to fill out a zettel"}] // optional
  "tags": ["tag1", "tag2", "tag3"]
  "created": "2018-01-28T12:05:53.123Z",
  "lastchanged": "2018-01-28T14:33:01.83Z"

Zettels could be exported into one such file each or as a batch with many zettels contained in a large JSON file.

From this data any tool could create other, more optimized "databases" or just indexes.

Exiting zettels as plain text files could even be parsed into this format by eg. looking for #hastag tags or [^id] links etc.


  • I'm working on The Archive for a long time now, so I might have grown blind to problems in the real world. Yet I think plain text is a pretty good data exchange format already! Any note taking app that cannot export a bunch of plain text files is clearly doing something wrong.

    Is your JSON format a suggestion to retain meta-data that the app might now about? I don't find storing Zettel notes as JSON very practical (compared to a folder of plain text Markdown files), but a data interchange might become interesting if vendor lock-in wasn't a desired outcome of app developers.

    Author at Zettelkasten.de • https://christiantietze.de/

  • Sure no one should type JSON in any zettelkasten app.

    But zettelkasten apps could export their data as JSON upon request (or import from such JSON). I'm suggesting just a data exchange format.

    The could even be a converted taking "plain text" zettels and convert them (as far as possible) to the exchange format. (Or the other way around ;-)

    Having meta-data clearly separated from content makes changing it easier, e.g. renaming tags, consolidating tags, doing stats on notes.

    If we're talking about decades of notes I think it would be wise not to rely on a text blob for everybody. Needs are different.

    An exchange data format would help to make people flexible in choosing a tool to their liking.

  • edited February 2018

    Hey @ralfw , good thinking! As mentioned in the auratikum thread, I am one of the auratikum developers and the json format we use is actually quite similar to the one that you proposed.

    [Deleted: This is not a product placement platform]

    Also, notes include followingNotes, previousNotes, and linkedNotes (to differentiate between just cross references and follow-up links).

    I like the idea of having a content-type field, we are currently using html for content since there are a lot of wysiwyg html editors out there. To be more flexible, the content-type is a good addition.

    Post edited by Sascha on
Sign In or Register to comment.