Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Nutshell

arrowarrow59 downloads

Expandable inline explanations, inspired by Nicky Case's Nutshell. Click a :term to open its definition in a card beside it.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates5

Expandable, inline explanations for your notes. Click a :term and its explanation opens in a small card right next to it, without leaving the note or scrolling to a glossary.

The name and the idea come from Nicky Case's Nutshell.

Why

nutshell lets you explore rabbit holes without crowding out the noise of your main writing thread.

What it does

  • Click a term to open a floating card with its explanation. The note never reflows.
  • Cards are rendered by Obsidian itself, so math, images, links and formatting all work.
  • Terms can sit inside cards, and cards open on top of each other. Closing a card closes the cards opened from it.
  • Works in reading view and Live Preview. Source mode shows the raw markdown.
  • Click a card's text to edit the definition. Edits save back into the note as you type.
  • Keyboard: Enter/Space on a focused term opens it, and Esc closes the top card.

Usage

Inline terms

Water forms a [:crystal]%% A solid whose atoms sit in a repeating pattern. %% when it freezes.

The definition is kept in an Obsidian comment (%% … %%) right after the term, so reading view hides it even when the plugin is off. A bare [:crystal] is a term with no definition yet.

The easy way to make one: select a word or phrase and run Nutshell: Create term from selection from the command palette. With nothing selected, it uses the word under the cursor. The card opens in edit mode so you can type the definition. You can bind the command to a hotkey in Settings → Hotkeys.

Heading terms (Nicky Case's syntax)

Link a term to a heading, and the card shows that heading's section:

We model the rate with a [:beta distribution](<#Beta Distribution>).

## :Beta Distribution
A probability distribution on [0, 1], shaped by two parameters α and β.
%% end %%
  • Start the link text with a colon ([:label]). Put the target in angle brackets (<#Heading With Spaces>) so spaces work.
  • A heading that starts with a colon (## :Beta Distribution) is a hidden definition. It is removed from the reading view of the note and only shows up in cards. Leave the colon out when linking to it. Matching ignores case.
  • A section ends at the next heading of the same or higher level, or at a line containing only %% end %%.
  • Links to headings in other notes work too: [:term](<Other Note#Heading>).

Without the plugin, these are ordinary heading links, so your notes still read fine anywhere else.

Editing in a card

Click the text of an open card to edit it, at the spot you clicked. Changes are written back into the note as you type: an inline term's comment, or the heading's section.

Some cards are read-only:

  • A card for a whole note (a link with no #heading).
  • A heading term whose name matches more than one heading of the same kind. If a hidden ## :Beta and a visible ## Beta both exist, [:beta](<#Beta>) opens the hidden one.
  • An inline term whose label shows up a different number of times in the rendered section (or card) than in its markdown, so Nutshell can't tell which one you clicked.

If a save fails, Nutshell says so and keeps your text in the card. A save fails when the file can't be written, when the term was changed elsewhere, or when the term has an identical twin (same label and definition) and the note changed above it since the card opened, because Nutshell can no longer tell the two apart. Reopen the card to edit it again. If the card was already closed, Nutshell tries to copy the text to the clipboard, and its notice says whether that worked.

Links in a card open in Obsidian. http and https links open in your browser, and mailto and obsidian links open in the app that handles them. Other schemes are not opened.

Known limitations

  • Hidden : headings still appear in the Outline pane.
  • Block references (#^block) aren't supported as targets.

Installing

Requires Obsidian 1.5.7 or later.

From Community Plugins: open Settings → Community plugins → Browse, search for "Nutshell", then install and enable it.

Manually: download main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/nutshell/, then enable the plugin in Settings → Community plugins.

Contributing

Bug reports, ideas and pull requests are welcome.

  • Bugs: open an issue with your Obsidian version, the markdown that triggers the bug, what you expected, and what happened. Include any console errors (Cmd/Ctrl+Shift+I).
  • Features: open an issue before starting anything large, so we can agree on the approach first.
  • Pull requests: keep each PR focused on one change. Describe how you tested it in both reading view and Live Preview.

Development setup:

git clone https://github.com/aaronw122/obsidian-nutshell
cd obsidian-nutshell
npm install
npm run dev      # rebuilds main.js on change
npm run build    # type-check and production build

To test in a vault, symlink the repo folder to <vault>/.obsidian/plugins/nutshell. The Hot Reload plugin will reload it on each rebuild.

Code layout:

File Responsibility
terms.ts Term syntax: parsing and writing [:label] terms
sections.ts Heading definitions: finding the section a link term opens
main.ts Plugin entry, reading view, popup cards, saving
livePreview.ts Live Preview decorations
cardEditor.ts The editor inside a card
styles.css Styles: Obsidian theme colors and fonts, with plugin-defined layout sizes

Credits

The name, the :term syntax, the hidden : heading convention, and the whole idea of expandable explanations come from Nutshell by Nicky Case. This plugin is an independent Obsidian adaptation and isn't affiliated with Nicky Case. Go read their work.

License

MIT © Aaron Williams

HealthExcellent
ReviewPassed
About
Open inline floating explanation cards by clicking terms to reveal formatted definitions next to the term without leaving the note or reflowing content. Edit definitions directly in cards with live saves; support math, images, links, nested cards, Reading View and Live Preview.
AnnotationEditing
Details
Current version
0.1.4
Last updated
2 weeks ago
Created
2 weeks ago
Updates
5 releases
Downloads
59
Compatible with
Obsidian 1.5.7+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
arrowarrow
GitHubaaronw122
  1. Community
  2. Plugins
  3. Annotation
  4. Nutshell

Related plugins

Admonition

Admonition block-styled content.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Text Format

Format selected text upper/lower/capitalize.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)

Advanced Tables

Improved table navigation, formatting, and manipulation.

Simplified Chinese Word Splitting

Adds Simplified Chinese word splitting support for the editor and Vim mode.

Editing Toolbar

The Editing Toolbar is modified from cMenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.

Underline

Add underline with shortcut.

Force note view mode

Force the view mode for a note by using frontmatter: YAML block with 'obsidian_ui_mode' as key.