niv203k downloadsCallout Studio is the only callout plugin you'll ever need to download. It offers regular callouts, inline callouts, and callout headings. Plus, you can easily design your own custom styles!
Callout Studio is a powerful callout management plugin for Obsidian.
It lets you create, edit, and style your own callout types, override the built-in ones, pick icons from large libraries, and use every callout as a regular blockquote, a section heading, or an inline pill - all from a single settings tab!
The same callout definition can be used in three different forms, each with its own vault-wide style controls:
> [!note].## [!note], to turn the whole heading into a colored, foldable bar.[!note], to get a small colored pill without breaking the paragraph.All three forms render in Live Preview, Reading view, and PDF export.
Seven icon libraries, all from one picker — choose a source from the menu and search across it:
| Source | Icons | Notes |
|---|---|---|
| Lucide | ~1,600 | Obsidian's built-in set. Always available, always offline. |
| Tabler Icons | 5,130 | Selectable style — Outline (all 5,130) or Filled (1,054). 41 categories to filter by. |
| Material Symbols | 3,870 | Selectable style (Outlined / Filled / Rounded / Sharp) and weight (100–700). |
| Emoji | ~1,900 | Any Unicode emoji, with a skin-tone selector. |
| Font Awesome | 1,992 | Selectable style — Solid (1,422), Regular (169) or Brands (572). 68 categories to filter by. |
| Octicons | 383 | GitHub's set. Drawn at two sizes and picked automatically to suit the callout. |
| RPG Awesome | 495 | Fantasy and tabletop icons. |
Or leave it on All sources and search every library at once.
Searching works offline for every source from the moment you install — the names, keywords and categories all ship with the plugin. Tabler Icons, Font Awesome, Octicons and RPG Awesome download their artwork once, when you first press Download in the picker, and work offline afterwards. See Network usage and privacy.
You can also fine-tune each callout's icon size and horizontal/vertical offset.
Save your own reusable color palettes from Settings → Custom palettes, then pick them from the color dropdown on any callout:
[! autocompleteWhen you type [! inside a blockquote, Callout Studio shows a suggestion list of available callouts:
Regular, heading, and inline callouts each get their own style popup, opened from Settings → Global settings:
When a note uses a callout ID that doesn't exist in the registry, Callout Studio styles it using the default fallback callout. You can pick which callout acts as the fallback in settings.
Callout Studio keeps the registry in sync with what's actually used in your vault:
Right-click on any callout - regular, heading, or inline - to get extra actions injected into Obsidian's native menu:
You can choose which of these actions appear for each of the three forms, and reorder them, from Settings → Customize menu items.
Callout Studio adds the following commands. No keyboard shortcuts are assigned by default; you can configure them from Settings → Hotkeys or from the in-plugin shortcut button.
admonitions.json file or pasted JSON. Every icon library Admonition offers — Obsidian's own, Font Awesome, Octicons, RPG Awesome — is one Callout Studio already has, and pictures you uploaded there come across into Your images. Settings with no equivalent here (command, copy button, hidden title) are left behind, and anything that could not be brought over is listed before the import runs.A single Reset everything action returns the plugin to defaults: removes user callouts, restores built-in callouts, resets global styles, and clears cached icon artwork.
The plugin UI is available in 32 languages. The active language follows Obsidian's interface language automatically, but you can also select a different language manually from the plugin settings.
Supported languages: Arabic (العربية), Bulgarian (Български), Chinese Simplified (中文简体), Chinese Traditional (中文繁體), Czech (Čeština), Danish (Dansk), Dutch (Nederlands), English, Finnish (Suomi), French (Français), German (Deutsch), Greek (Ελληνικά), Hebrew (עברית), Hindi (हिन्दी), Hungarian (Magyar), Indonesian (Bahasa Indonesia), Italian (Italiano), Japanese (日本語), Korean (한국어), Malay (Bahasa Melayu), Norwegian Bokmål (Norsk), Persian (فارسی), Polish (Polski), Portuguese (Português), Romanian (Română), Russian (Русский), Spanish (Español), Swedish (Svenska), Thai (ภาษาไทย), Turkish (Türkçe), Ukrainian (Українська), Vietnamese (Tiếng Việt).
Note for native speakers: All translations except English were generated with AI assistance and may contain errors or unnatural phrasing. If you spot a mistake, contributions are very welcome!
To fix a translation via pull request:
- Fork the repository on GitHub.
- Edit the relevant file in
src/i18n/(e.g.fr.tsfor French).- Open a pull request with your changes.
Alternatively, you can report issues by email at [email protected].
Callout Studio uses a few Obsidian APIs that touch the vault and the system clipboard. Every use is local to your machine and tied to plugin functionality you can see and control:
vault.getMarkdownFiles). Used to power the features listed under Vault discovery and Vault insights & maintenance above: the optional initial scan, the Scan now button, callout statistics, Replace in vault, Convert to plain text, and the pre-delete usage check that warns you before removing an in-use callout. The plugin reads file contents with the standard vault.cachedRead / vault.read APIs and never sends them anywhere.vault.modify). Only triggered when you explicitly run Replace in vault, Convert to plain text, or the editor commands (Wrap in callout / Unwrap from callout).No vault content, clipboard data, or usage information is ever transmitted off your device.
Callout Studio never sends vault content anywhere, and collects no telemetry or analytics. Every network request it makes is listed here.
Nothing is fetched by opening a note, or by opening the icon picker. Browsing and searching every icon source works offline from the moment you install the plugin, because the names, keywords and categories are all bundled. Only artwork is ever downloaded, and only for icons you actually choose.
Tabler Icons, Font Awesome, Octicons and RPG Awesome ship their artwork as files downloaded the first time you press Download on that source in the picker. After that the source works entirely offline. A source with styles is several files, one per style, fetched together by that one button — and only the ones you do not already have.
| Source | Download size |
|---|---|
| Tabler Icons | 1.7 MB (Outline 1.14 MB, Filled 503 KB) |
| Font Awesome | 1.4 MB (Solid 794 KB, Regular 105 KB, Brands 559 KB) |
| Octicons | 375 KB |
| RPG Awesome | 625 KB |
These come from this plugin's own repository, pinned to an immutable tag:
https://cdn.jsdelivr.net/gh/Niv20/obsidian-Plugin-Callout-Studio@packs-v2/packs/<source>.json
https://raw.githubusercontent.com/Niv20/obsidian-Plugin-Callout-Studio/packs-v2/packs/<source>.json (fallback)
Each download is checked against a SHA-256 checksum built into the plugin, and rejected unless it matches exactly — so a compromised CDN, a captive portal or a truncated response cannot substitute anything. The file is then stored at .obsidian/plugins/callout-studio/icon-packs/<source>.json, and re-checked against the same checksum every time it is read, so a file that is later edited or damaged is never trusted.
Two things download a source without you pressing the button, because in both you have already asked for the icons in question:
data.json (which is the normal case), nothing is fetched.Installing a source without a network: download the file from the plugin's GitHub release and drop it into that folder, named after the source (tabler-outline.json, fa-solid.json, octicons.json, and so on). It is verified against the same checksum on the next launch.
Material Symbols is the exception: it has over 100,000 style and weight combinations, so there is no single file to ship. It fetches one drawing at a time instead:
https://fonts.googleapis.com/css2?... so the grid can preview icons in the chosen style and weight.https://fonts.gstatic.com/s/i/short-term/....If you never open the Material source, none of this happens.
Your images is the one source that downloads nothing, ever. You add SVG, PNG, JPEG or WebP files from your own computer, and they stay on your device.
<foreignObject>, external references and anything that could fetch from the network do not. That filtering is repeated every time the file is read, not just when you add it, so a picture that arrives in an import or is edited by hand is checked too.data.json with the rest of your settings. That means they sync wherever your settings sync, and an export carries them — one JSON file, the same Import button, no archive to unpack.data.json, so your callouts still render on a device that synced your settings but never downloaded the source, and after a cached pack file is deleted. Unused entries are cleaned up automatically when you edit or delete a callout; Reset all clears them outright.data.json — typically five to twenty kilobytes each after the size cap above. The picker shows the running total, and Reset all clears them along with everything else you made..obsidian/plugins/callout-studio/icon-packs/. Deleting them is safe: your callouts keep rendering from the copy in data.json, and the picker offers the download again. If a callout does turn out to need artwork that only the deleted file had, it is fetched again on the next launch..obsidian/snippets/; that file is no longer created, and any copy left from an older version is deleted automatically the next time the plugin loads.Callout Studio's own code is 0BSD, but the icon libraries it draws on keep their own licences — see THIRD-PARTY-NOTICES.md for the full text of each, also reachable from Settings → Icon licences and credits.
Two points worth knowing before you publish something made with these icons:
A huge thank you to all the wonderful people from around the world who helped shape this project! Whether by participating in discussions, reporting bugs, suggesting new features, or submitting pull requests — your contributions and support mean the world.
In chronological order:
You can be on this list too! Feel free to open an issue to report bugs or share your ideas and suggestions. I would be more than happy to read them!
manifest.json, main.js, and styles.css from the latest GitHub release.<Vault>/.obsidian/plugins/callout-studio/.npm install
npm run dev # watch build
npm run build # production build (typecheck + minified bundle)
npm run lint # ESLint with the official obsidianmd plugin rules
Source lives under src/ and is bundled by esbuild into main.js. The release artifacts are main.js, manifest.json, and styles.css.
Callout Studio's own code is 0BSD — use it however you like, no attribution required.
The icon libraries it offers are separate works under their own licences, which 0BSD does not cover. See THIRD-PARTY-NOTICES.md.