ZI

Zim

A desktop wiki and personal knowledge base

Wikis & Documentation ★ 2.2k stars Easy setup GPL-2.0

Zim is an open-source desktop application that works as a graphical text editor for maintaining a collection of wiki pages. Each page is a plain text file, making it a portable personal knowledge base.

Key features

  • Desktop wiki application
  • Plain text page files
  • Plugin system
  • Works fully offline

Pros & cons

Strengths

  • Truly portable notes
  • No server needed

Trade-offs

  • Desktop only
  • No built-in multi-user mode

Zim replaces

Last reviewed Sep 13, 2026 · 836 words

Zim is not a server, and the sooner you accept that the better it gets. It is a GTK desktop application that turns a folder of plain .txt files into a linked wiki, and the "self-hosting" part is entirely up to you: the notebook is a directory, so it lives wherever you put directories. Around 2,200 GitHub stars and a first release in 2008 make it one of the older tools in the wikis category, and the on-disk format has not meaningfully changed in that time, which is exactly the point.

Every page is a text file you can read without Zim

A Zim notebook is a directory tree. Projects/Homelab.txt is the page "Projects:Homelab", subpages are subdirectories, and the file content is a lightweight wiki markup under a small header (Content-Type: text/x-zim-wiki). Open one in less and it is legible. Grep works. Git diffs are meaningful. Attachments sit beside the page in a folder of the same name.

This is what separates Zim from the notes apps that keep a database: there is no export step, because there was never an import step. When Zim eventually stops being maintained, or you decide you prefer something else, the notes are still there in a format that pandoc can approximately read and any editor can fully read. I have moved a 9-year-old notebook between three machines and two operating systems with rsync and nothing else.

Sync is your job, and Syncthing does it well

There is no multi-user mode and no server component. The way self-hosters actually run Zim is one notebook directory synced between machines with Syncthing, which handles plain text gracefully because conflicts are per-file and rare when one person is editing. Nextcloud's desktop client works the same way. What does not work is two people editing the same notebook at the same time; there is no locking and no merge, and the second save wins. Treat Zim as single-user, because that is what it is.

Enable the Version Control plugin and point it at a Git repository inside the notebook. Zim commits on save or on a timer, and you get a full history for free, plus a remote if you push to a Gitea or Forgejo instance. Syncthing for live sync plus Git for history is the closest Zim gets to a hosted wiki, and for one person it is arguably better than one.

The plugins are where the value is

Stock Zim is a competent editor with a page tree and backlinks. The plugins turn it into a personal system:

  • Journal: one page per day under a Journal:2026:09:13 namespace, with a calendar widget. This is the feature most people install Zim for.
  • Task List: scans every page for [ ] checkboxes and @tags and builds one to-do view across the notebook, with due dates in [d: 2026-09-20] syntax.
  • Tags and backlinks panes, a table editor, inline equations via LaTeX, and diagram rendering through Graphviz, Ditaa and PlantUML when the binaries are installed.
  • Web Server: a read-only HTTP view of the notebook, port 8080 by default. Fine for glancing at notes from a phone on the LAN. It is not a wiki server and has no authentication; do not expose it.

The plugin system is Python, and a small plugin is a couple of hundred lines. That is the main reason the project has stayed alive with a small maintainer base for 18 years.

What Zim is not, and the bigger projects that are

Zim has no mobile app, no web editing, no sharing, no comments, and no rich embedding beyond images. If you want any of those, you want a server wiki. DokuWiki is the closest philosophical relative: file-based, no database, but multi-user with a web UI and ACLs. SilverBullet is the modern take on "a folder of markdown as a wiki" with a browser client and offline support. For a personal knowledge base with mobile sync, Joplin or Logseq will suit more people than Zim will.

Where Zim still wins: you want zero infrastructure, a fast native app on Linux (it runs on Windows and macOS but is a second-class citizen there), keyboard-driven editing, and a format you will still be able to read in 2046. It uses about 100 MB of RAM with a large notebook open and starts in under 2 seconds.

What I'd do

Install Zim from your distribution's package, create one notebook in ~/Notes, enable Journal, Task List and Version Control, and put ~/Notes in a Syncthing folder shared with your other machines. Push the Git history to a self-hosted remote weekly. Ignore the web server plugin. If you find yourself needing to edit from a phone more than once a week, you have outgrown Zim; move to SilverBullet and take the text files with you, because they were always yours.

Compare Zim

14 head-to-head comparisons.

Similar wikis & documentation apps