shin2w153 downloadsHover your cursor over images to display a floating preview with zoom support.
all code generated by AI.
An Obsidian plugin that shows a floating preview of images when you hover over image links or Markdown image tags.
![]() tags or image links to see a full-resolution previewmain.js, styles.css, and manifest.json from the Releases page<vault>/.obsidian/plugins/image-hover-preview/git clone https://github.com/your-repo/image-hover-preview.git
cd image-hover-preview
npm install
npm run build
Copy the output files (main.js, styles.css, manifest.json) to your .obsidian/plugins/image-hover-preview/.
Hover over any image link or Markdown image tag:
![[assets/example.png]]

| Action | Default key | Description |
|---|---|---|
| Zoom in | Shift + scroll up | Scale up by 20% |
| Zoom out | Shift + scroll down | Scale down by 20% |
| Reset | Close & reopen preview | Back to 1:1 |
The zoom modifier key can be changed or disabled in settings.
| Setting | Default | Description |
|---|---|---|
| Enable plugin | On | Global toggle |
| Trigger key | None | Hold this key to activate preview |
| Suppress key | Ctrl | Hold this key to temporarily disable preview |
| Zoom key | Shift | Hold this key + scroll to zoom |
| Display delay | 300ms | Hover delay before showing preview |
| Opacity | 1.0 | Preview window opacity |
| Show caption | On | Display file name at the bottom |
| Hover effect | Outline | Visual feedback on hoverable elements |
| Background | #1e1e1e |
Preview window background color |
| Border | 2px solid #555 |
Preview window border |
| Border radius | 8px | Preview window corner radius |
| Box shadow | 0 8px 32px rgba(0,0,0,0.5) |
Preview window shadow |
| Min image size | 30px | Images smaller than this won't trigger preview |
| Preload | On | Scan previewable elements on page load |
![[path/to/image.png]])))![[image-name]])The preview (PreviewOverlay) is a position: fixed overlay with these design choices:
pointer-events: none — the preview never intercepts mouse events, so the editor remains fully interactivegetEditorBounds()) to avoid spilling into sidebarsgetMaxZoom() prevents zooming beyond the editor's dimensions, so the preview never overflows
