Elliott Park266 downloadsGraph view for Bases where tags, folders and properties become hubs. Drag notes to tag them, merge or rename tags, hide rare tags, split tags by folder, and filter heading or block links.
A graph view for Bases where tags, folders and properties are the nodes — and where you tag, retag and merge by dragging.
Every tag (or folder, or status, or project, or any property) becomes a hub,
and every note that has it is pulled towards it. Notes that never link to each
other still end up side by side when they share a tag, so a vault held together
by tags and properties finally has a shape you can see. And the graph is not
read-only: drop a note on a tag to tag it, drop one tag on another to merge them.


Tag Graph started from reading six months of feature requests on the Obsidian forum (April–October 2026) and collecting the graph and tag requests that were still open. Each row is a real thread; the right column is what Tag Graph does about it.
| What people asked for | What Tag Graph does |
|---|---|
| Filter the graph by tag frequency — hide tags used only once, so typo tags stop cluttering the graph | Hide values used by fewer notes than n (default 2). The legend says how many were hidden. |
Folder-aware tags — see which folder a reused tag like #toread was used in, without typing #games/toread by hand |
Split values by folder: one hub for the tag, plus a sub-hub for each folder it is used in. |
| Toggle graph groups on and off quickly | An eye icon on every tag and every property in the legend. Click a tag to highlight its notes. |
| Multi-coloured nodes — a note with several tags should show all their colours | A pie slice per value, up to four. |
| Tell heading and block links apart · hide frontmatter links | Note, heading ([[a#b]]), block ([[a#^c]]), property and embed links are drawn differently, and each kind can be switched off. |
| Search that highlights instead of hiding | Matches get a ring, the rest stays on screen, dimmed. Enter zooms to the matches. |
| Freeze the graph — stop it rearranging itself | A seeded layout that opens the same way every time, edits that only move the note you changed, and a Freeze button. |
| Use Bases filters in the graph instead of typing search syntax | It is a Bases view: the base's filters decide what is drawn. Graph one project, one folder or one query. |
| A graph view you can work in · a quicker way to add tags | Drag to tag. Drop notes on tags and properties to change them, merge tags by dropping one on another — see below. |
The graph is a way to change your notes, not only to look at them.
| Drag | onto | does |
|---|---|---|
| a note | a tag or value | adds it (a list property gets it appended; a single-value property like status is set to it) |
| a note | a folder | moves the note into that folder |
| a note | a note that is a value (e.g. a project note) | sets that property to a link to it |
| a note | another note | adds a link to the other note in a property you choose (related by default) |
| a tag | another tag | merges them: every note in the base gets the second tag instead of the first |
Right-click a tag or value to rename it across the notes in the base — in
the tags property and in #tags written in the note text — or to create a
new note that already has it. Right-click a note to remove one of its tags
or values.
Every edit shows a notice with Undo, and Undo last edit is a command too. Undo only goes ahead if the files are still exactly as the edit left them.

Tags are the first hub property, but you can pick up to four: any note property
(status, project, author, area…), formulas, file.folder or file.ext.
A property that holds links, such as project: "[[Home Lab]]", joins its notes
straight to the project note when that note is in the graph.


Notes are coloured by any property you choose, by the base's grouping, or — by default — by top-level folder, so where a note lives shows at a glance.
It follows your theme, light or dark:

.base file, select Add view, and choose Tag graph.| Option | Default | |
|---|---|---|
| Property 1–4 | Tags, none, none, none | Note properties, formulas, file.tags, file.folder, file.ext |
| Hide values used by fewer notes than | 2 | A value that is itself a note in the graph is always drawn |
| Split values by folder | off | |
| Colour notes by | grouping, else top-level folder | |
| Show notes with no connections | on | |
| Note dropped on note links it in | related |
Leave empty to switch off |
The gear button in the graph's toolbar opens the controls you know from
Obsidian's own graph view, with the same ranges and defaults. Changes show
while you drag a slider and are saved with the view, in the .base file.

| Section | Controls |
|---|---|
| Filters | Each hub property on or off (e.g. Tags), orphans, the rare-value cut-off |
| Display | Arrows (on note-to-note links; both ways when the notes link each other), text fade threshold, node size, link thickness, lay out again |
| Forces | Center force, repel force, link force, link distance |
The ↻ button puts every control back to its default.
#tags in the body, not only the tags property. Only the exact tag is
changed: #todo/sub is a different tag from #todo.The interface is in English and Korean, following Obsidian's language.
processFrontMatter; moves go
through Obsidian's file manager, so links are updated as your settings say.main.js.Found a bug, or a request this should answer? Open an issue.
npm install
npm test
npm test type-checks, builds main.js, runs the unit tests in
scripts/test.mjs (graph model and frontmatter edits) and checks the bundle for
network calls, innerHTML, console.log and manifest consistency.
npm run demo-vault -- <dir> writes the sample vault used for the screenshots.
MIT © Elliott Park. Includes d3-force and its dependencies (ISC) — see THIRD-PARTY-NOTICES.md.