Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Lightweight, Org-mode flavored zettelkasten links.

org-z is an Emacs global minor mode that enables a lightweight, Org mode style zettelkasten. Unlike a traditional zettelkasten, org-z focuses on headings rather than pages, allowing you to make hyperlinks within a single Org mode document.

By treating headings, rather than pages, as first-class, we can use standard functions that ship with org like org-store-link to maximum effect.

org-z has the following features:

  • Insert links to org headings with interactive search (C-c-. by default). Helm and Selectrum are supported.
  • Links are managed automatically using org-store-link and org-ids
  • Links to new / missing targets auto-create targets in a configurable file location ( by default). Creation of the new heading is customizable using a capture template.
  • Backlinks




Install with straight.el:

(use-package org-z
  :straight (org-z :type git :host github :repo "landakram/org-z")
  (org-z-mode 1))

org-z requires a completion backend. Helm and Selectrum are currently supported. You’ll need to load one of the completion backend packages, in addition to org-z itself:

(use-package org-z-selectrum
  :straight (org-z-selectrum :type git :host github :repo "landakram/org-z"))

Loading the package sets the completion backend by appending to org-z-completion-backends and setting org-z-completion-backend.

A lightweight zettelkasten

I combine org-z with a daily journal, implemented as a file+datetree capture template, and org-z’s support for backlinks.

(setq org-capture-templates
      '(;; ...
        ("j" "Journal entry" entry (file+datetree "~/org/")
         "* %?\n" :unnarrowed t)))

(use-package org
  :straight org-plus-contrib
  (require 'org-eldoc))

(use-package org-z
  :straight (org-z :type git :host github :repo "landakram/org-z")
  (leader-def :infix "o"
    "b" 'org-z-backlinks-at-point)
  (org-z-mode 1))

As I go about my day, I make journal entries that link to various headings in my collection of org files. I make these links by invoking org-z-insert-link as I write my journal entry. I periodically inspect backlinks using org-z-backlinks-at-point to investigate connections. By enabling org-eldoc, I get to see the # of backlinks for a given heading when I hover over it.

Every once in a while, I review my journal entries and org-refile headings or simply re-organize journal entry knowledge into “longer-term storage” ( or


I was inspired by org-roam, but wanted something that fit my existing org workflow, which is a handful of files with deep headings rather than a file per topic.


Lightweight, Org-mode flavored zettelkasten links.







No releases published


No packages published