Nickolay Kondratyev1k downloadsRecords the visit history of notes and canvases, and visualizes vault activity as a treemap heatmap.
See which notes you actually spend time in. Visit History records how long you focus on each note, canvas, and Excalidraw drawing, and shows your whole vault as an activity heatmap. Fully offline: no network calls, no accounts, no telemetry.

Brighter green = visited recently, deep blue = long ago, dim = no data yet.
Every file is a rectangle nested inside its folders.
_archive folders are hidden. Open one from its folder menu to look inside.
All heatmap options are saved automatically.
Have a small note that only one other note links to? From the small note's file
menu or the command palette, run Inline note (visit history aware). You can
also click the inline icon shown when you hover a ![[note]] embed of it.
It only runs when the whole vault (canvases included) has exactly one link to the note; otherwise a dialog explains why. You confirm before anything changes, and if any step fails, the original note is kept.
While a note, canvas, or Excalidraw drawing is in focus, the plugin times it. When you navigate away, switch windows, open Settings, or go idle, it saves that session (start time + duration). Visits under 2 seconds are not recorded.
The first time you open a document, it gets a small permanent id (stored in the note's frontmatter or the canvas's metadata). History is saved under that id, not the path, so renames and moves keep it.
Where it's saved: the hidden .plugin_data/visit_history/ folder in your
vault, organised per user and per device. Because the folder is hidden, it stays
out of the file explorer and search. Obsidian Sync skips hidden folders, so
with Obsidian Sync, each device keeps its own history. History from older
versions (.visit_history/, __visit_history/) is moved there automatically.
Under Settings → Visit History:
Not built yet:
Your history is plain text:
.plugin_data/visit_history/
user/
<your-name>/
v3/
README__generated__vh_v3_format.md # this format, written by the plugin
focus_duration_per_device/
<device-name>/ # each device writes only its own folder
<doc-id>.vh_v3 # one file per document
merged_in_focus_duration_per_device/ # history of inlined notes
The file name is the document's permanent id. Each line is one completed focus session: start time (ISO 8601 UTC) plus the time spent in focus, in milliseconds. For example, a 5.6-second visit:
2026-07-09T22:02:15.745Z D:5600
git cloneCreated and modified colouring use your files' timestamps. Git doesn't
keep them, so after a clone or pull the whole vault looks freshly modified. Run
git restore-mtime in your vault to
reset each file's modified time to its last commit. Visit-based colouring is
unaffected.
To use visit history data (visit stats, heatmap colors) from your own plugin, see API.md.
Released under the Kondratyev Source Available License (KSAL-3.0). See LICENSE.md.
In short:
For commercial licensing, reach out.