Tyler Richards10 downloadsWrap text around images, like with a word processor. Pick a layout from a toolbar on the selected image, and drag images to move them.
Word-style text wrapping for images in Obsidian.

You never have to type any syntax. The plugin stores your choice inside the image link, so the note stays plain Markdown.
Click an image in Live Preview. A toolbar appears just above it (or below it, when there is no room above):
| Button | What it does |
|---|---|
| In line with text | No wrapping. This is how Obsidian shows images normally. |
| Wrap text left | The image sits on the left, and text flows down its right side. |
| Wrap text right | The image sits on the right, and text flows down its left side. |
| Top and bottom | The image is centred on its own row, with text above and below only. |
| Spacing | The space between the image and the text: None, Small, Medium or Large. |
Click the highlighted wrap button again to turn wrapping off. Every change is one undo step (Ctrl/Cmd+Z).
A wrapped picture wraps wherever it sits in the text: alone on its line, on a line with other wrapped pictures, or inside a sentence, where it moves to its side and the text flows around it. This works for pictures from the web too.
The toolbar never covers Obsidian's own image controls. You can still resize an image by dragging its corner, zoom it, and open it in the image viewer.
Tap a picture in Live Preview. A panel opens at the bottom of the screen, above Obsidian's navigation bar and the keyboard:
| Button | What it does |
|---|---|
| In line | No wrapping. This is how Obsidian shows images normally. |
| Wrap left | The image sits on the left, and text flows down its right side. |
| Wrap right | The image sits on the right, and text flows down its left side. |
| Top and bottom | The image is centred on its own row, with text above and below only. |
| Spacing | None, Small, Medium or Large. Available once the image wraps text. |
Tap the highlighted wrap button again to turn wrapping off. Tapping the panel does not open the keyboard or move the cursor, and every change is one undo step. If the panel would cover the picture, the note scrolls the picture into view. To close the panel, tap anywhere in the text.
On a phone in landscape the panel is a single row. On a tablet it becomes a single row while the keyboard leaves too little room for the full panel. With a sidebar pinned on a tablet, the panel stays beside it, over the note.
Press on an image and drag it. A copy follows the pointer, and a line shows where the image will land: at the start of a paragraph, heading, list, quote, table or code block, or at the end of the note.
On a phone or tablet: press and hold the image for about half a second, until it is outlined in your accent colour. Then move your finger without lifting it: a copy of the image follows just above your finger, and a line shows where it will land. Lift your finger to drop it. Move near the top or bottom of the note to scroll.
The same choices are in the right-click menu of an image in Live Preview, and in the command palette (search for "wrap" or "spacing").
| Setting | Default | What it does |
|---|---|---|
| Show the picture toolbar | On | Show the toolbar when you click an image. |
| Move images by dragging | On | Drag images to move them (on a phone or tablet: press and hold, then drag). Turn this off to use Obsidian's own image dragging, and Obsidian's own menu when you hold an image on a phone or tablet. |
| Default spacing | Medium (16 px) | The spacing an image gets when you first turn on wrapping for it. |
| Widest wrapped image | 50% | A wrapped image is shown no wider than this share of the note column. Its stored size is not changed. |
The layout is written into the image link, between the file name and the size:
![[photo.png|wrap-left|300]]
![[photo.png|A caption|wrap-right|gap-24|300]]

| Word | Meaning |
|---|---|
| (none) | In line with text |
wrap-left, wrap-right |
Wrap text on that side |
wrap-block |
Top and bottom |
gap-0, gap-8, gap-16, gap-24 |
Spacing in pixels. Medium (16) is the default and is not written. |
The size stays last, so Obsidian keeps applying it. If you remove the plugin, your images go back to normal images at the size you gave them.
![[Other note]]) are shown with their layout, but you change them in that note itself: the toolbar and dragging do not act on them where the note is embedded.) and pictures written into the note as data get the toolbar, but cannot be moved by dragging. Cut and paste their link instead.|.Image Text Wrap makes no network requests and collects no data. Everything it does stays in your notes.
Image Text Wrap is in Obsidian's community plugin directory. It needs Obsidian 1.13.1 or later, on desktop, phone or tablet.
Obsidian offers new versions as updates on the same page.
Other ways to install (for example, to try a version before it reaches the directory):
tyler21richards/image-text-wrap. Then turn on Image Text Wrap in Settings → Community plugins.main.js, manifest.json and styles.css from the latest release, put them in a new folder, <your vault>/.obsidian/plugins/image-text-wrap/, restart Obsidian, and turn on Image Text Wrap in Settings → Community plugins.To try it out, copy test-vault/Fixture.md, test-vault/Plain images.md and the test-vault/images folder from this repository into a vault.
npm install
npm run build # type-check and bundle main.js
npm test # unit tests (node:test)
npm run lint # ESLint, with Obsidian's plugin rules
npm run lint:css # browser support of styles.css, as Obsidian's plugin review checks it
tests/e2e/ holds a harness that drives a real Obsidian over the Chrome DevTools Protocol, with real pointer events. Set OBSIDIAN_APP to an Obsidian.app and run node scripts/obsidian.mjs launch --fresh; see the top of scripts/obsidian.mjs for the commands. test-vault/Fixture.md covers every case in the acceptance tests.
Parts of this plugin are adapted from these MIT-licensed plugins. Their notices are in THIRD_PARTY_NOTICES.md.