{"id":26347308,"url":"https://github.com/jtprogru/obsidian-vault-full-statistics-plugin","last_synced_at":"2026-05-13T13:02:40.164Z","repository":{"id":271422105,"uuid":"850655754","full_name":"jtprogru/obsidian-vault-full-statistics-plugin","owner":"jtprogru","description":"Status bar item with vault full statistics such as number of notes, files, attachments, links, tags and quality of vault.","archived":false,"fork":false,"pushed_at":"2025-01-19T15:17:31.000Z","size":115,"stargazers_count":9,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-19T16:27:59.294Z","etag":null,"topics":["obsidian","obsidian-plugin","obsidian-statistics","statistics"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtprogru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-01T12:10:25.000Z","updated_at":"2025-01-19T15:16:03.000Z","dependencies_parsed_at":"2025-01-07T17:45:05.746Z","dependency_job_id":"dee9ca10-da6a-4706-a561-cbd88d9ef7e5","html_url":"https://github.com/jtprogru/obsidian-vault-full-statistics-plugin","commit_stats":null,"previous_names":["jtprogru/obsidian-vault-full-statistics-plugin"],"tags_count":10,"template":false,"template_full_name":"obsidianmd/obsidian-sample-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtprogru%2Fobsidian-vault-full-statistics-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtprogru%2Fobsidian-vault-full-statistics-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtprogru%2Fobsidian-vault-full-statistics-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtprogru%2Fobsidian-vault-full-statistics-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtprogru","download_url":"https://codeload.github.com/jtprogru/obsidian-vault-full-statistics-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243835926,"owners_count":20355616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["obsidian","obsidian-plugin","obsidian-statistics","statistics"],"created_at":"2025-03-16T07:16:35.209Z","updated_at":"2026-05-13T13:02:40.158Z","avatar_url":"https://github.com/jtprogru.png","language":"TypeScript","funding_links":["https://github.com/sponsors/jtprogru"],"categories":[],"sub_categories":[],"readme":"# Vault Full Statistics Plugin\n\n[![Latest release](https://img.shields.io/github/v/release/jtprogru/obsidian-vault-full-statistics-plugin?sort=semver\u0026label=release)](https://github.com/jtprogru/obsidian-vault-full-statistics-plugin/releases)\n[![Min Obsidian](https://img.shields.io/badge/Obsidian-%E2%89%A50.16.0-7c3aed)](https://obsidian.md)\n[![Build](https://img.shields.io/github/actions/workflow/status/jtprogru/obsidian-vault-full-statistics-plugin/build.yaml?branch=main\u0026label=build)](https://github.com/jtprogru/obsidian-vault-full-statistics-plugin/actions/workflows/build.yaml)\n[![Downloads](https://img.shields.io/github/downloads/jtprogru/obsidian-vault-full-statistics-plugin/total)](https://github.com/jtprogru/obsidian-vault-full-statistics-plugin/releases)\n[![License](https://img.shields.io/github/license/jtprogru/obsidian-vault-full-statistics-plugin)](LICENSE)\n[![Sponsor](https://img.shields.io/github/sponsors/jtprogru?logo=github)](https://github.com/sponsors/jtprogru)\n\n**NOTE**: This plugin is a modified fork of the [Obsidian Vault Statistics Plugin](https://github.com/bkyle/obsidian-vault-statistics-plugin).\n\nQuantify the shape of your knowledge base: counts, ratios, and trends right inside Obsidian. A click-to-cycle status bar item gives you the headline numbers; a dedicated side view goes deep — own vs source split, dangling sources, tangles, inbox health, taxonomy drift, and a 30-day sparkline.\n\n**Requires:** Obsidian 0.16.0+ on desktop. Mobile is not supported.\n\n## Features\n\n### Status bar\n- Notes, links, tags, QoV (Quality of Vault = links ÷ notes)\n- Own / source counts and percentages\n- Concepts and orphans (no incoming links)\n- Trace percentage (share of source notes referenced by at least one own note)\n- Click to cycle, hover to see everything at once\n- CSS snippets to show several stats simultaneously (see [Advanced Usage](#advanced-usage))\n\n### Side view (`Open vault statistics` command)\n- **Hero panel** — notes, total words, QoV in big readable type\n- **Own vs source ratio bar** — your thinking vs external material, with concepts as a grey zone\n- **Metrics grid** — links, tags, concepts, orphans, average words per note (each toggleable)\n- **Sources with trace** — how many source notes are linked from your own notes; surfaces dangling sources as clickable pills\n- **Inbox health** — notes in inbox folders or tagged for review, bucketed by age (\u003c1d / 1–7d / 7–30d / 30+d)\n- **Folder breakdown** — PARA-style groups with own/source split per group\n- **Tag taxonomy drift** — rare tags (likely typos) and tags outside your canonical set\n- **30-day history sparkline** — daily snapshots of notes, own, source, links, tags, orphans, traced\n\n### Tangles\nA \"tangle\" is a note that bridges large parts of your graph — many incoming links, many outgoing links, or both. The plugin can:\n- List tangles in a dedicated `Open vault tangles` side view, sorted by selected mode (AND / OR / SUM thresholds)\n- Generate a Markdown report note via `Create tangles report note`, dropped into a configurable folder\n\n### CSV export\n`Export statistics history to CSV` opens the native OS save dialog (with an in-vault folder picker fallback) and writes the full history snapshot stream as CSV — for use in spreadsheets, Jupyter, or anything else.\n\n## Installation\n\n**Recommended — Obsidian Community Plugins:** the plugin is published in the official Obsidian community plugin catalog. Open `Settings → Community plugins → Browse`, search for **Vault Full Statistics**, click *Install*, then *Enable*. Updates are delivered through Obsidian itself.\n\nFor pre-releases (testing unreleased features), use [BRAT](https://github.com/TfTHacker/obsidian42-brat): add `jtprogru/obsidian-vault-full-statistics-plugin` and enable it.\n\nManual install: grab the latest `main.js`, `manifest.json`, and `styles.css` from the [release section](https://github.com/jtprogru/obsidian-vault-full-statistics-plugin/releases) and drop them into `\u003cvault\u003e/.obsidian/plugins/vault-full-statistics/`.\n\nThis plugin is desktop-only.\n\n## Usage\n\nAfter enabling, the status bar shows a count. Click to cycle through statistics; hover to see all of them in a tooltip. Toggle which statistics are visible in the plugin settings.\n\nOpen the side view via `Open vault statistics` (command palette or ribbon icon). Sections beyond the hero are opt-in — enable Folder breakdown, Sources-with-trace, Inbox health, Tag taxonomy drift, and History in settings to surface them.\n\nFor own/source classification, configure your own/source/concept tags in settings (defaults: `thought`, `book`, `concept`, etc.). Any note carrying one of those tags is counted accordingly.\n\n## Settings reference\n\nAll settings live under `Settings → Community plugins → Vault Full Statistics`. Defaults are sensible — most users only touch own/source tags and the opt-in section toggles.\n\n### Status bar\n- **Show individual items** — when on, every enabled statistic is rendered as its own status bar slot; when off (default) the bar shows one statistic at a time and clicking cycles. Below toggles apply when this is on.\n- **Show notes / links / tags / quality / own / source / own % / source % / concepts / orphans / trace %** — visibility of each individual status bar stat.\n\n### Metrics section (side view)\nToggle which secondary metrics appear in the side view's grid below the hero panel:\n- **Links**, **Tags**, **Concepts**, **Orphans**, **Avg words** — all on by default.\n\n### Classification\n- **Excluded folders** — folders to skip entirely (templates, archives, plugin data). Matched as path prefix with a `/` boundary.\n- **Own tags** (default: `thought`, `synthesis`, `fleeting`) — mark notes as your own thinking.\n- **Source tags** (default: `book`, `article`, `video`, `lecture`, `literature`, `literature-note`) — mark notes about external material.\n- **Concept tags** (default: `concept`) — the grey zone between own and source.\n\n### Folder breakdown (PARA)\n- **Show folder breakdown** (default: off) — opt-in section that breaks down notes per folder group.\n- **Folder groups** — one row per group, `name = path1, path2`. Multiple paths per group are merged; overlap allowed.\n\n### Sources with trace\n- **Show sources-with-trace** (default: off) — opt-in section showing how many source notes are referenced by at least one own note.\n- **Show dangling notes list** (default: on) — top 5 untraced source notes inside the section.\n\n### Tag taxonomy drift\n- **Show taxonomy drift** (default: off) — opt-in section listing rare tags and tags outside your canonical set.\n- **Rare tag threshold** (default: 3) — tags used fewer than this many times are flagged.\n- **Canonical tags** — your accepted tag set. Anything else is flagged as unknown; a canonical parent (e.g. `journal`) covers descendants (`journal/daily`).\n\n### Inbox health\n- **Show inbox health** (default: off) — opt-in section bucketing inbox notes by age.\n- **Inbox folders** — folders treated as inbox.\n- **Inbox review tags** (default: `inbox/review`) — tags marking notes that need processing outside inbox folders.\n\n### History\n- **Show history** (default: off) — opt-in 30-day sparkline. Snapshots are recorded daily regardless of this toggle.\n- **History export folder** — last folder used for CSV export. The export command updates this on use.\n\n### Tangles\n- **Selection mode** (default: AND) — `AND` (both directions must meet threshold), `OR` (either direction), `SUM` (in + out must meet a single threshold).\n- **Min incoming links** / **Min outgoing links** (default: 5 each) — thresholds for AND/OR modes.\n- **Min in + out** (default: 10) — threshold for SUM mode.\n- **Top N** (default: 25) — limit how many tangles to show in the view and report. `0` means no limit.\n- **Tangles report folder** — where `Create tangles report note` saves its output. Empty = vault root.\n- **Tangles exclude** — notes (full path) or folder prefixes to skip in tangle detection. Folder match requires a trailing slash boundary.\n\n## FAQ / Troubleshooting\n\n**What is QoV?**\nQuality of Vault = total links ÷ total notes. A measure of how interconnected your vault is. There's no objective \"good\" value; track the trend instead.\n\n**Why does the notes count differ from Obsidian's File pane?**\nThe plugin counts Markdown notes only and skips Excalidraw drawings and Kanban boards (they're file containers, not text). It also skips excluded folders configured in settings. If a number still looks off, check whether your vault contains `.excalidraw.md` files or notes with `excalidraw-plugin` / `kanban-plugin` in frontmatter.\n\n**The side view is empty / shows \"no notes classified yet\" — why?**\nThe own/source ratio needs notes tagged with own or source tags. Out of the box the defaults are sensible (`#thought`, `#book`, `#article`, ...), but if you use different tag names, configure them in settings. The hero panel and metrics grid render regardless.\n\n**When are history snapshots taken?**\nOnce per local day, debounced by 10 seconds after the last metric update. The very first snapshot appears once your vault metrics settle on first load. A second day is required before the sparkline can render a trend.\n\n**How do I set up own/source classification for my own taxonomy?**\n1. Decide on tag names that represent your own thinking versus external material.\n2. Add them to **Own tags** / **Source tags** in settings (the leading `#` is optional).\n3. The collector restarts and reclassifies on save — no Obsidian restart needed.\n\n**What's a \"tangle\"?**\nA note that bridges large parts of your graph — high incoming-link count, high outgoing-link count, or both. Useful for finding MOCs (maps of content), index notes, and accidentally over-connected hubs. Detection mode (AND/OR/SUM) and thresholds are configurable.\n\n**Does this work on mobile?**\nNo. `isDesktopOnly` is set in the manifest. The metric pipeline (vault scan + memoization) is tuned for desktop and uses APIs not available on iOS.\n\n**How do I exclude a specific note or folder from statistics?**\n- **From counts entirely** — add the folder to **Excluded folders**.\n- **From tangle detection only** — use the **Tangles exclude** list (note path or folder prefix).\n\n**My CSV export saves to vault instead of disk.**\nNative save dialog (File System Access API) is preferred when available; the plugin falls back to an in-vault folder picker on environments without it. Use a recent Obsidian + Electron build to get the OS dialog.\n\n## Advanced Usage\n\n### Showing All Statistics\n\nAll statistics can be shown by creating and enabling a CSS snippet with the following content.\n\n```css\n/* Show all vault statistics. */\n.obsidian-vault-full-statistics--item {\n    display: initial !important;\n}\n```\n\n### Showing Selected Statistics\n\nSimilarly, one can show certain statistics. Below is a snippet that hides all but the notes statistic. The snippet can be modified to include more or different statistics.\n\n```css\n/* Hide all statistics. */\n.obsidian-vault-full-statistics--item {\n    display: none !important;\n}\n\n/* Always show the notes statistic. */\n.obsidian-vault-full-statistics--item-notes {\n    display: initial !important;\n}\n```\n\n## Development\n\nRequires Node.js 18+ and npm.\n\n```bash\ngit clone https://github.com/jtprogru/obsidian-vault-full-statistics-plugin\ncd obsidian-vault-full-statistics-plugin\nnpm install\nnpm run dev      # watch-mode esbuild — rebuilds main.js on save\nnpm test         # jest test suite\nnpm run lint     # eslint\nnpm run build    # production build (tsc type-check + esbuild)\n```\n\nFor iterating against a live vault, symlink the repo into `\u003cvault\u003e/.obsidian/plugins/vault-full-statistics/` and toggle the plugin off/on in Obsidian after each rebuild.\n\nSource code lives in `src/`. Notable modules:\n- `main.ts` — plugin entry point, status bar, commands\n- `statisticsView.ts` — side view rendering (hero, sections)\n- `collect.ts` — vault metrics collector and memoized graph derivatives\n- `tangles.ts` / `tanglesView.ts` — high-degree note detection and report\n- `historyStore.ts` — daily snapshots and CSV export\n- `settings.ts` — settings tab\n\nA `Taskfile.yml` is included for common operations if you use [Task](https://taskfile.dev).\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for notable changes per release, or the full list at [GitHub Releases](https://github.com/jtprogru/obsidian-vault-full-statistics-plugin/releases).\n\n## License\n\n[WTFPL](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtprogru%2Fobsidian-vault-full-statistics-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtprogru%2Fobsidian-vault-full-statistics-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtprogru%2Fobsidian-vault-full-statistics-plugin/lists"}