# Startup Metrics Logger
[](https://community.obsidian.md/plugins/startup-metrics-logger)
[](https://github.com/hannesdelbeke/obsidian-startup-metrics-logger/releases)
[](LICENSE)
A lightweight, dedicated Obsidian PKM plugin that measures launch performance, tracks the exact initialization time of every community plugin, and outputs **structured logs (JSON, Markdown, and JSONL)** specifically formatted for **AI consumption, automated performance monitoring, and vault optimization**.
Available in the official **[Obsidian Community Plugins Directory](https://community.obsidian.md/plugins/startup-metrics-logger)**.
---
## 🚀 Why This Plugin?
Obsidian already has a built-in *"Debug startup time"* option (`Settings > Community plugins > Debug startup time`), but:
- It only renders a temporary, transient UI popup notice on startup.
- It does **not** persist data to disk.
- It provides no historical logs or trend tracking.
- An AI assistant or external script cannot inspect or analyze it without a structured file in your vault.
this plugin let's AI's access startup time of plugins:
```
It worked! The auto-prioritization successfully placed the logger first, allowing it to capture every plugin during
cold boot.
Here is the breakdown of your latest startup at 08:11:36 UTC:
──────
### 📊 Startup Overview
Metric | Duration | Notes
-----------------------------------|--------------------|-----------------------------------------------------------
🚀 Time to Layout Ready | 2,534.9 ms (~2.5s) | Total time until the vault workspace became interactive
🔌 Total Community Plugins Load | 359.6 ms | Cumulative time spent initializing all 15 enabled plugins
⚡ Core Obsidian & Vault Indexing | 2,175.3 ms | Time spent on core engine, cache reading, and workspace
| | restoration
──────
### 🧩 Top Plugins by Startup Load Time
1. Iconize (obsidian-icon-folder) ████░░░░░░ 141.0 ms (39.2%)
2. Git (obsidian-git) ███░░░░░░░ 95.4 ms (26.5%)
3. Dataview (dataview) ██░░░░░░░░ 55.7 ms (15.5%)
4. Plugin Groups ░░░░░░░░░░ 10.3 ms (2.9%)
5. Recent Files ░░░░░░░░░░ 8.8 ms (2.4%)
6. JavaScript Init ░░░░░░░░░░ 8.6 ms (2.4%)
7. Remember cursor position ░░░░░░░░░░ 8.1 ms (2.3%)
8. Homepage ░░░░░░░░░░ 8.0 ms (2.2%)
... [7 other fast plugins < 7ms each]
──────
### 🤖 Key Takeaways:
1. Top 3 Bottlenecks: Iconize (141ms), Git (95.4ms), and Dataview (55.7ms) together account for 81.2% of your total
plugin load time.
2. Overall Health: At ~2.5s total layout ready, your vault is loading fast.
3. Automated Logging: The logs were automatically written to:
• 📄 startup-metrics.md
• 🤖 startup-metrics.json
• 📜 startup-history.jsonl (recorded entry #4 with full telemetry).
```
**Startup Metrics Logger** solves this by:
1. **Capturing Obsidian's startup measurements** automatically.
2. **Hooking dynamic plugin loads & offering a live 1-click Benchmark Profiler**.
3. **Writing structured logs**:
- `startup-metrics.json`: Rich machine-readable JSON designed for AI agents.
- `startup-metrics.md`: Visual markdown summary with visual bars, tables, and AI diagnostic hints.
- `startup-history.jsonl`: Append-only history to track vault performance trends over time.
---
sample markdown output:
```markdown
# ⏱️ Obsidian Startup Metrics & Performance Report
> [!TIP] AI Assistant Context
> This file is generated automatically by **Startup Metrics Logger**.
> Use this structured telemetry to analyze vault launch latency, diagnose slow plugins, and recommend optimization steps.
- **Timestamp:** `2026-08-29T07:52:55.448Z`
- **Vault:** `pkm`
- **Platform:** `desktop (Windows)`
- **Total Enabled Plugins:** `15` / `52 installed`
---
## 📊 Startup Overview
| Metric | Duration | Description |
| :--- | :--- | :--- |
| 🚀 **Time to Layout Ready** | **`6787.4 ms`** | Time from process start until workspace is fully responsive |
| 🔌 **Total Plugin Load Time** | **`4984 ms`** | Cumulative time spent initializing active community plugins |
| ⚡ **Core & Indexing Overhead** | **`1803.4 ms`** | Estimated Obsidian core engine & workspace restoration time |
| 🕒 **Total Startup Duration** | **`91074.7 ms`** | Total elapsed time to full stability |
---
## 🤖 AI Diagnostic Insights
- **Status:** **`CRITICAL`**
- **Summary:** 6 slow plugin(s) account for 4983.999999999999ms of startup delay.
### Actionable Recommendations
- Top bottleneck plugins: Dataview (3195.7ms), Code Viewer (1155.1ms), Iconize (228.2ms).
- Consider using a Lazy Loader / Plugin Groups plugin to defer non-essential plugins after startup.
- Enable 'Debug startup time' in Obsidian Settings > Community Plugins to provide exact cold-start millisecond measurements.
---
## 🧩 Plugin Load Time Breakdown
| # | Plugin Name | Version | Load Time | Share of Plugins | Status |
| :- | :--- | :--- | :--- | :--- | :-: |
| 1 | **Dataview** (`dataview`) | `0.5.68` | **3195.7 ms** | `██████░░░░` 64.1% | 🔴 **SLOW** |
| 2 | **Code Viewer** (`code-viewer`) | `1.0.6` | **1155.1 ms** | `██░░░░░░░░` 23.2% | 🔴 **SLOW** |
| 3 | **Iconize** (`obsidian-icon-folder`) | `2.14.7` | **228.2 ms** | `░░░░░░░░░░` 4.6% | 🔴 **SLOW** |
| 4 | **Git** (`obsidian-git`) | `2.38.6` | **104.3 ms** | `░░░░░░░░░░` 2.1% | 🔴 **SLOW** |
| 5 | **Recent Files** (`recent-files-obsidian`) | `1.7.10` | **88.6 ms** | `░░░░░░░░░░` 1.8% | 🔴 **SLOW** |
| 6 | **Supercharged Links** (`supercharged-links-obsidian`) | `0.13.10` | **80 ms** | `░░░░░░░░░░` 1.6% | 🔴 **SLOW** |
| 7 | **Remember cursor position** (`remember-cursor-position`) | `1.0.13` | **29.5 ms** | `░░░░░░░░░░` 0.6% | 🟢 OK |
| 8 | **Homepage** (`homepage`) | `4.4.4` | **24.1 ms** | `░░░░░░░░░░` 0.5% | 🟢 OK |
| 9 | **Plugin Groups** (`obsidian-plugin-groups`) | `2.1.0` | **19.8 ms** | `░░░░░░░░░░` 0.4% | 🟢 OK |
| 10 | **Paste image Png to Jpeg** (`obsidian-paste-png-to-jpeg`) | `1.0.5` | **18.7 ms** | `░░░░░░░░░░` 0.4% | 🟢 OK |
| 11 | **Auto Wikilink** (`obsidian-auto-wikilink`) | `1.0.0` | **17 ms** | `░░░░░░░░░░` 0.3% | 🟢 OK |
| 12 | **Collapse Properties** (`collapse-properties`) | `1.0.0` | **11.5 ms** | `░░░░░░░░░░` 0.2% | 🟢 OK |
| 13 | **Unified Search** (`unified-search`) | `1.0.0` | **7.7 ms** | `░░░░░░░░░░` 0.2% | 🟢 OK |
| 14 | **JavaScript Init** (`obsidian-javascript-init`) | `1.0.2` | **3.8 ms** | `░░░░░░░░░░` 0.1% | 🟢 OK |
| 15 | **Startup Metrics & Plugin Load Time Logger** (`startup-metrics-logger`) | `1.0.0` | **0 ms** | `░░░░░░░░░░` 0% | 🟢 OK |
---
*Generated by [Startup Metrics Logger](https://github.com)*
```
## 📦 Installation
### Option 1: Install from Community Directory (Recommended)
1. Open Obsidian and go to **Settings > Community plugins**.
2. Make sure **Restricted Mode** is turned off.
3. Click **Browse** and search for **`Startup Metrics Logger`** (or open [community.obsidian.md/plugins/startup-metrics-logger](https://community.obsidian.md/plugins/startup-metrics-logger)).
4. Click **Install**, then **Enable**.
5. *(Recommended)* In **Settings > Community plugins**, toggle on **"Debug startup time"** to allow the plugin to capture exact cold-start numbers on every restart.
### Option 2: Manual Installation (GitHub Release)
1. Download `main.js`, `manifest.json`, and `styles.css` from the latest [Release](https://github.com/hannesdelbeke/obsidian-startup-metrics-logger/releases).
2. Copy the files into your vault's plugins folder:
`/.obsidian/plugins/startup-metrics-logger/`
3. In Obsidian, go to **Settings > Community plugins** and toggle **Startup Metrics Logger** to **ON**.
---
## ⚡ How Plugin Load Order Works (Loading First)
Obsidian initializes community plugins **sequentially in the exact array order** defined in:
`.obsidian/community-plugins.json`
For **Startup Metrics Logger** to intercept and accurately measure every community plugin as it loads during boot, it **must run first** (`index 0`).
* **Automatic Priority (Enabled by default):** The plugin includes an **Auto-Prioritize First In Load Order** setting. Whenever Obsidian launches or settings are updated, the plugin automatically ensures it is at the very top of `community-plugins.json`.
* **Manual Verification:** If you manage your plugin order manually, ensure `"startup-metrics-logger"` is at the top of `.obsidian/community-plugins.json`:
```json
[
"startup-metrics-logger",
"obsidian-git",
"dataview",
...
]
```
---
## 🤖 Log Outputs for AI Ingestion
### 1. `startup-metrics.json` (Machine-Readable)
```json
{
"schema_version": "1.0.0",
"timestamp": "2026-08-29T07:45:00.123Z",
"environment": {
"platform": "desktop",
"os": "Windows",
"obsidian_version": "Obsidian",
"is_mobile": false
},
"vault": {
"name": "Personal Knowledge Base",
"total_plugins_installed": 18,
"total_plugins_enabled": 14
},
"timings": {
"total_app_startup_ms": 1450.2,
"time_to_layout_ready_ms": 1320.0,
"plugins_combined_load_ms": 710.5,
"core_overhead_estimate_ms": 609.5
},
"plugins": [
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.67",
"author": "BlacksmithGu",
"loadTimeMs": 285.0,
"percentageOfPluginsTime": 40.1,
"isSlow": true,
"source": "native_notice"
},
{
"id": "obsidian-git",
"name": "Git",
"version": "2.26.0",
"author": "Vinzent",
"loadTimeMs": 195.0,
"percentageOfPluginsTime": 27.4,
"isSlow": true,
"source": "native_notice"
}
],
"ai_analysis": {
"status": "warning",
"headline": "2 slow plugin(s) account for 480ms of startup delay.",
"slow_plugins": ["dataview", "obsidian-git"],
"recommendations": [
"Top bottleneck plugins: Dataview (285ms), Git (195ms).",
"Consider using a Lazy Loader / Plugin Groups plugin to defer non-essential plugins after startup."
]
}
}
```
### 2. `startup-metrics.md` (Human & AI Markdown Report)
Includes:
- Summary cards (Time to Layout Ready, Plugin Load Time, Core Overhead).
- Actionable AI recommendations.
- Formatted breakdown table with percentage visual bars (`████░░░░░░ 40.1%`) and slow indicators.
---
## ⚡ Command Palette Actions
| Command | Action |
| :--- | :--- |
| `Startup Metrics: Log current startup metrics to file` | Manually writes/updates the JSON and Markdown logs. |
| `Startup Metrics: Run full plugin benchmark (measure load times)` | Runs an automated isolation benchmark of all active plugins. |
| `Startup Metrics: Open latest startup metrics report (Markdown)` | Opens the markdown report in a new tab. |
| `Startup Metrics: Copy AI diagnostic summary to clipboard` | Copies a pre-formatted prompt with all startup telemetry ready to paste to an AI. |
---
## 🛠️ Settings Configuration
- **Auto-Prioritize First In Load Order:** Automatically keeps this plugin at the top (index 0) of `community-plugins.json` so it loads before all other plugins.
- **Auto-log on startup:** Toggles automatic generation of logs on every boot.
- **Log file paths:** Customize file paths for `startup-metrics.json`, `startup-metrics.md`, and `startup-history.jsonl`.
- **Slow Plugin Threshold (ms):** Customize threshold (default 50ms) to flag bottleneck plugins.
- **Auto-dismiss Debug Notice:** Automatically closes Obsidian's native startup popup after a configurable number of seconds.
- **Interactive Profiler:** Button to launch the isolation benchmark directly from the settings panel.
---
## 📄 License
MIT