Repository Data
The data on this page consists of data points that are derived from the plugin repositories and releases. This includes data that is not directly available from the community plugin list, such as the programming languages used, the size of the release files, and more. This data is collected by analyzing the plugin repositories and release files using various heuristics and techniques. You can read more about them here.
Manifest
The community plugin list and the plugin manifest share some common fields, such as the name, author, and description. This can lead to mismatched data, when only one of the two sources is updated. The following chart shows the percentage of plugins that have mismatched
data in their manifest.
Some fields in the manifest are optional, such as authorUrl and fundingUrl. Additionally, some plugin authors add extra,
non-standard fields to the manifest, such as helpUrl. The following chart shows the percentage of plugins that have these fields set.
Plugins can specify that they only work on the desktop version of Obsidian, which is useful for plugins that use features not available on mobile.
Programming Languages
The next chart shows the number of plugins that use a specific programming language, sorted by the number of plugins that use it.
Lines of Code
The below chart shows the lines of code per programming language, summed over all plugins. Only languages with more than 10,000 lines of code are shown.
The next chart shows the distribution of the total lines of code per plugin. The average plugin has 3.7K lines of code while the median plugin has only 810 lines of code.
Files
The following chart shows the total number of files per file extension, summed over all plugins. Only source code file extensions are included. Common
configuration files like json, yaml, and tool specific extensions like prettierignore are excluded.
The next chart shows the distribution of the number of code files per plugin. The average plugin has 26 code files while the median plugin has only 10 code files.
Release Builds
Release Size Distribution
The following chart shows the distribution of latest release main.js sizes per plugin. The average scanned release has a main.js
size of 987 KB, while the median is 71.9 KB.
Top 10 largest plugins
- NovelAI (122 MB)
- LaTeX Math (103 MB)
- Note 2 Tag Generator (55.9 MB)
- Univer (47.4 MB)
- SystemSculpt AI (45.3 MB)
- Yandex Wiki Integration (44.6 MB)
- SwiftLaTeX Render (43.1 MB)
- White Noise (38.3 MB)
- Squiggle (30.9 MB)
- Iron Vault (26.2 MB)
ES Version
The next chart shows the estimated ECMAScript target version used by plugin releases. Estimates are based on the syntax used in the release's main.js file.
Plugins targeting ES5 (55)
- AmpliFlow Page Publisher
- BattleSnake Board Viewer
- Colorizelt
- Completed Area
- Completed Task Display
- Tab Switcher
- Dangerzone Writing
- Discordian Theme
- Extract Highlights
- Flashcards
- Folder Note
- Footlinks
- Format Hotkeys
- Guid Renamer
- Hotkeys++
- Leader Hotkeys
- Lskypro Upload V2
- macOS Keyboard Navigation
- Maximise Active Pane
- mdx as md
- MLIR Syntax Highlight
- Add links to current note
- Note Refactor
- Nutstore Sync
- Autocomplete
- Card View Mode
- Contextual Typography
- PDF Highlights
- Fullscreen Focus Mode
- Hotkeys for templates
- Icons
- Journey
- JSONifier
- Julian Date
- Extended MathJax
- Markdown Formatting Assistant
- Min3ditorHotkeys
- Open File by Magic Date
- Recall
- Automatically reveal active file
- Hotkeys for Bookmarks
- Sort & Permute lines
- Underline
- Vault Statistics
- Youglish
- open-as-md
- Page Heading From Links
- Quickly
- RPG Stat Tracker
- Search++
- Shortcuts extender
- Vantage - Advanced search builder
- Wikilinks to MDLinks
- Workbench
- YouHaveBeenStaring
Minification
This chart shows whether the latest release main.js appears to be minified. Detection is heuristic and based on source formatting and symbol patterns.
It is recommended to minify release builds of plugins to reduce file size and improve load times
for users, especially for plugins with a lot of code. Additionally, since the end of 2023, the build script of the sample plugin minifies release builds.
This chart shows the distribution of the minification score for the same heuristic, where 0 means least likely and 1 means most likely
to be minified.
Source Map Comments
This chart shows whether the latest release main.js includes a sourceMappingURL comment. Source maps are very useful for debugging during
development, but for release builds they can be a double-edged sword. On one hand, they can help with debugging and provide better error stack traces for users.
On the other hand, if the source map is included in the release, it can significantly increase the size of the release files, which can lead to longer load times
for users.
Embedded Base64 Blobs
This chart shows whether the latest release main.js contains large base64-like blobs. This can indicate embedded assets or WebAssembly usage.
Worker Usage
The next chart shows whether plugin releases reference Worker APIs in their latest main.js.
WebAssembly Usage
The next chart shows whether plugin releases reference WebAssembly APIs in their latest main.js.
Dependencies
Package Managers
Plugins may bundle additional dependencies into when building a release. There are several package managers that can be used to manage these dependencies, such as npm, yarn, and pnpm. These package managers create a lockfile in the repository, which can be used to determine which package manager was used.
The below chart shows the distribution of package managers used in plugins.
18.0% of plugins have no lockfile.
Code Bundlers
The vast majority of plugins consist of more than just a single JavaScript file. Since Obsidian can only load a single JavaScript file, plugins need to
bundle their code into a single file. This is done using a code bundler, such as Esbuild. Usually, the bundler is listed as a dependency in the plugin's package.json file.
4.9% of plugins use no code bundler.
Developer Tooling
Plugin developers like to use tooling to make their jobs easier. The chart below shows the usage percentage of common developer tooling.
Testing Frameworks
When building a plugin, it is important to test it to ensure that it works as expected. There are several testing frameworks that can automatically test
small parts of plugins, so called unit tests. The chart below shows the usage percentage of common testing frameworks. The data is extracted from the package.json file of the plugin.
74.9% of plugins use no testing framework.
Frontend Frameworks
For complex user interfaces, plugins may use a frontend framework to make development easier. The chart below shows the usage percentage of common frontend
frameworks. The data is extracted from the package.json file of the plugin.
Translations
Some plugins include translations for multiple languages. This is usually done by including translation files in the repository. Plugins have three
different ways to apply translations: by using Obsidian's i18n instance, by including a translation library, such as i18next, or by hand
rolling their own solution. The chart below shows how many plugins use translations.
A total of 225 plugins (7.7%) use translations.
List of plugins using translations
- abbreviations-mark
- ai-note-tagger
- ai-providers
- ai-tagger-universe
- ai-transcriber
- ai-writer
- ai-zhipu
- alpha-bullet
- always-color-text
- anki-helper
- annotate-audio
- another-name
- antidote-grammar-checker-integration
- any-block
- aosr
- aprils-automatic-timelines
- aqu-blur-mode
- attachment-management
- attachment-manager
- attachment-uploader
- attachments-cache
- awesome-image
- banners-reloaded
- banyan
- better-canvas-lock
- better-export-pdf
- better-plugins-manager
- big-calendar
- blaze-jump
- book-smith
- callout-menu
- canvas-css-class
- cbcr-text-eater-de
- chem
- click-clack
- cloze
- cmdr
- code-blocks-commands
- code-emitter
- colored-tags
- come-down
- come-through
- consistent-attachments-and-links
- content-cards
- contribution-graph
- copilot
- copy-url-in-preview
- create-note-in-folder
- csv-lite
- custom-image-auto-uploader
- daily-note-structure
- daily-statistics
- dataview-properties
- dictionary-translator
- e-upload
- easy-typing-obsidian
- editing-toolbar
- emo-uploader
- enhanced-copy
- epub-importer
- excalibrain
- excel
- exmemo-assistant
- exmemo-client
- exmemo-tools
- explorer-hider
- extended-graph
- fast-image-upload
- featured-image
- file-cleaner-redux
- file-forgetting-curve-obsidian
- file-preview
- floating-toc
- focus-time
- formatto-format
- gistr
- goban-sgf
- goboard
- google-blogger
- google-drive-sync
- gridexplorer
- halo
- header-enhancer
- heading-decorator
- heatmap-tracker
- hexo-toolkit
- hi-note
- hi-words
- hidden-folder-obsidian
- homepage
- hotkey-helper
- iconic
- ii-quicker
- image-magician
- ink-player
- invio
- iron-vault
- japanese-novel-ruby
- jw-library-linker
- lineage
- local-gpt
- local-rss
- lskypro-auto-upload
- lskypro-upload-v2
- macros
- magic-move
- make-md
- mastodon-threading
- mdfriday
- mindmap
- minio-uploader
- misskey-connector
- modal-opener
- modules
- mouse-navigation
- multilingual
- my-thesaurus
- nav-link-header
- nexus-ai-chat-importer
- nifty-links
- note-toolbar
- notebook-navigator
- notemd
- nutstore-sync
- obsidian-admonition
- obsidian-advanced-slides
- obsidian-another-quick-switcher
- obsidian-custom-attachment-location
- obsidian-daily-notes-viewer
- obsidian-day-planner
- obsidian-dictionary-plugin
- obsidian-douban-plugin
- obsidian-enhancing-export
- obsidian-enhancing-mindmap
- obsidian-excalidraw-plugin
- obsidian-file-cleaner
- obsidian-front-matter-title-plugin
- obsidian-group-snippets
- obsidian-hackernews
- obsidian-image-auto-upload-plugin
- obsidian-image-toolkit
- obsidian-kanban
- obsidian-leaflet-plugin
- obsidian-linter
- obsidian-metronome-plugin
- obsidian-mindmap-nextgen
- obsidian-mkdocs-publisher
- obsidian-pandoc-reference-list
- obsidian-quiet-outline
- obsidian-spaced-repetition
- obsidian-style-settings
- obsidian-task-progress-bar
- obsidian-tasks-plugin
- obsidian-wordpress
- ocr-extractor
- ons
- open-plugin-settings
- organized-daily-notes
- password-protection
- persian-calendar
- pintora
- pixel-perfect-image
- pretty-properties
- publish-to-discourse
- qiniu-image-uploader
- quail
- radial-timeline
- reading-progress-desktop
- reference-map
- remotely-save
- rpg-manager
- segerlab
- share-to-notionnext
- sheet-plus
- shortcut-edit-mode
- show-whitespace-cm6
- sidebar-highlights
- simple-colored-folder
- simple-focus
- simple-steam-auth
- simple-todo
- slash-commander
- slides-extended
- smart-second-brain
- start-page
- steward
- storyteller-suite
- stu-repo-helper
- surfing
- sync-vault-ce
- systemsculpt-ai
- tag-group-manager
- tars
- task-board
- tasknotes
- tasks-map
- telegram-inbox
- terminal
- text-finder
- time-saver
- todoist-sync-plugin
- translate
- tsumugi-mark
- typecho
- typst-mate
- unitade
- univer
- url-display
- version-control
- vitepress-publisher
- vlc-bridge
- vscode-editor
- weather-widget
- webdav-explorer
- webpage-html-export
- wewrite
- wordflow-tracker
- workout-planner
- yearly-glance
- yolo
- youversion-linker
- zettelflow
- zettelkasten-navigation
- zhihu
- zotlit
Most Used Dependencies
This table shows direct dependencies of all plugins, sorted by how many plugins use them. Dependencies with less than one percent usage are not shown.
List of most used dependencies
| Name | Usage Percentage |
|---|---|
| obsidian | 91.0% |
| typescript | 89.4% |
| @types/node | 87.1% |
| tslib | 86.0% |
| esbuild | 76.7% |
| builtin-modules | 74.5% |
| @typescript-eslint/parser | 70.5% |
| @typescript-eslint/eslint-plugin | 70.3% |
| eslint | 20.4% |
| prettier | 15.1% |
| jest | 11.9% |
| rollup | 11.1% |
| @types/jest | 11.1% |
| @rollup/plugin-node-resolve | 11.0% |
| ts-jest | 10.9% |
| @rollup/plugin-commonjs | 10.8% |
| @rollup/plugin-typescript | 10.6% |
| @codemirror/view | 8.2% |
| react | 7.8% |
| @types/react-dom | 7.8% |
| react-dom | 7.8% |
| @types/react | 7.5% |
| @codemirror/state | 7.0% |
| @codemirror/language | 6.7% |
| @eslint/js | 6.4% |
| typescript-eslint | 6.2% |
| svelte | 5.3% |
| vitest | 5.2% |
| eslint-config-prettier | 4.9% |
| globals | 4.8% |
| husky | 4.8% |
| svelte-preprocess | 4.8% |
| @tsconfig/svelte | 4.4% |
| @popperjs/core | 4.3% |
| dotenv | 4.2% |
| monkey-around | 3.9% |
| esbuild-svelte | 3.7% |
| ts-node | 3.6% |
| eslint-plugin-obsidianmd | 3.1% |
| @biomejs/biome | 3.1% |
| eslint-plugin-import | 3.0% |
| jest-environment-jsdom | 3.0% |
| uuid | 2.9% |
| svelte-check | 2.8% |
| moment | 2.8% |
| lodash | 2.8% |
| vite | 2.7% |
| @types/lodash | 2.7% |
| obsidian-daily-notes-interface | 2.7% |
| eslint-plugin-prettier | 2.6% |
| obsidian-typings | 2.6% |
| sass | 2.6% |
| openai | 2.6% |
| lint-staged | 2.4% |
| jsdom | 2.4% |
| obsidian-dataview | 2.4% |
| rollup-plugin-copy | 2.2% |
| esbuild-sass-plugin | 2.2% |
| standard-version | 2.1% |
| axios | 2.0% |
| @types/uuid | 1.9% |
| postcss | 1.9% |
| @vitest/coverage-v8 | 1.9% |
| electron | 1.8% |
| yaml | 1.8% |
| codemirror | 1.6% |
| @commitlint/config-conventional | 1.6% |
| zod | 1.6% |
| i18next | 1.6% |
| @babel/preset-env | 1.6% |
| cross-env | 1.6% |
| @commitlint/cli | 1.6% |
| @types/luxon | 1.6% |
| tailwindcss | 1.5% |
| esbuild-plugin-copy | 1.5% |
| @rollup/plugin-json | 1.5% |
| luxon | 1.5% |
| lucide-react | 1.5% |
| @codemirror/commands | 1.5% |
| js-yaml | 1.5% |
| @types/js-yaml | 1.5% |
| tsx | 1.4% |
| jiti | 1.4% |
| @babel/preset-typescript | 1.4% |
| @babel/core | 1.4% |
| eslint-plugin-react | 1.3% |
| prettier-plugin-svelte | 1.3% |
| @codemirror/search | 1.3% |
| eslint-plugin-svelte | 1.3% |
| cz-conventional-changelog | 1.3% |
| nanoid | 1.3% |
| date-fns | 1.2% |
| babel-jest | 1.2% |
| semver | 1.2% |
| fs-extra | 1.1% |
| @lezer/common | 1.1% |
| eslint-plugin-react-hooks | 1.1% |
| jszip | 1.1% |
| @types/bun | 1.1% |
| autoprefixer | 1.0% |
| crypto-js | 1.0% |
| mocha | 1.0% |
| ts-loader | 1.0% |
| @eslint/eslintrc | 1.0% |