laximgqozaZZZYT358 downloadsExplore tag–note relationships in your Obsidian Bases vault with a co-occurrence heatmap, intersection lattice, BubbleSets, and Icon Gallery.
Tag Lens is an Obsidian plugin for exploring tag-membership structure through 4 view modes and a unified control panel.
It combines multi-perspective visualisation with Visual Encoding, Insight tools, Saved Lenses, Active-Note follow, and PNG export — all fully local, with no network requests.
Designed for vaults where notes are tagged in deeply overlapping ways and a single force-directed graph would just hairball. Each view answers a different question; encoding and overlays let you read your own dimensions into the figure.
Tag Lens currently provides 4 view modes:
| Mode | What it shows |
|---|---|
| Icon Gallery | One compact icon per note, tiled in a grid. From the note outward, each icon nests: the note itself, notes that share all its tags, groups of notes that share some of its tags, and its link / backlink neighborhood. |
| Intersection lattice | Degree-tiered Hasse-style layout of exact tag intersections with subset links; each node auto-switches between overview / density / individual rendering by count and zoom. |
| Tag co-occurrence heatmap | Symmetric tag × tag grid; cell shade = how many notes share two tags (Jaccard by default; raw count on a log/p95 scale). Diagonal = tag size. Click a cell to list the notes in that co-occurrence. |
| BubbleSets | Containment layout drawn as rectangular iso-contour bubbles. |
The floating settings panel is a unified control center available in every view mode. It is divided into four main tabs to help you filter, navigate, display, and analyze your graph:
Control exactly what data enters the graph.
.base files. The built-in pipeline constructs a unified graph from these bases, including optionally extracting implicit links, shared tags, or shared properties based on your settings.A list of all notes surviving the filter pipeline.
#tag and adds multi-tag combination sub-groups (e.g. #a * #b) so heavily overlapping notes are easy to find.#tag (hierarchical) or frontmatter key:value, with live suggestions.Global graph display configurations and behavior, structured into sub-tabs:
Show nodes, Show enclosures, Show edges, Show grid) and global minimum font size rules.status or computed ageDays) to visual channels (like Color or axis position). This operates purely on attribute → appearance mapping; it never changes which notes are displayed.m × n cells) and behaviors for specific tag groups.Analyzes your current graph state to help you manage complexity.
main.js, manifest.json and styles.css from the latest release.<vault>/.obsidian/plugins/tag-lens/.git clone https://github.com/laximgqozaZZZYT/tag-lens.git
cd tag-lens
npm install
npm run build
# main.js is produced at the repo root; copy main.js / manifest.json /
# styles.css into your vault's plugins/tag-lens/ folder.
Tag Lens reads the tags (frontmatter tags and inline #tag markers), note links (inline [[…]] and frontmatter links), and basic metadata (path, basename, frontmatter fields used by your current view/filter/encoding, modification time). It runs fully locally inside Obsidian and does not make network requests.
Requires Obsidian 1.5.0 or later. Works on desktop and mobile (the heavier experimental containment/Euler family modes are best on desktop).
Design docs and the agent/contributor guide live under docs/0.3.21/:
basic-design (architecture), detailed-design (module reference) and AGENTS.md
(verification gate, gotchas, E2E/deploy workflow). Run npm run verify
(tsc --noEmit && node test/run.mjs && node esbuild.config.mjs) before committing — tsc is the only type gate
(esbuild ignores types). Older, superseded notes are archived in docs/old/.
MIT — see LICENSE.