Johannes Kaindl34 downloadsDescribe an icon, logo, diagram or floor plan and get an exact, editable SVG — refined in rounds with a local or OpenAI-compatible model.
🇬🇧 English · 🇩🇪 Deutsch
Describe an icon, logo, diagram or floor plan in words and get an exact, editable SVG in your note — then refine it in rounds, by prompt or by changing single numbers, and accept or reject each change to a single element.
A language model writes the SVG; SVG Studio keeps it exact. The SVG itself is the source (no private drawing language), every change is a replacement of a span of text against the current text, and what you did not ask to change stays byte for byte the same. It works with a local or any OpenAI-compatible model and carries no keys of its own.

.svg file, an svg-studio code block or an embedded ![[name.svg]]; repair an SVG from Inkscape or give every element a name, with or without a model.
Not yet in the community directory. Until the review is through, use one of the other ways below; afterwards: Settings → Community plugins → Browse → „SVG Studio“.
Put main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/svg-studio/, then enable the plugin.
Add the GitHub mirror johannes-kaindl/svg-studio in BRAT.
git clone https://git.jkaindl.de/jkaindl/svg-studio
cd svg-studio && npm install && npm run build
# main.js manifest.json styles.css → <vault>/.obsidian/plugins/svg-studio/
To change an SVG later, put the cursor in an svg-studio block or on an embedded .svg and run SVG Studio: Edit SVG, or use the Edit button on the block or the embed. More in Getting started.
| Setting | Effect | Default |
|---|---|---|
| Apply new SVG as | Where Apply puts an SVG created from scratch: a file in the attachment folder, a code block at the cursor, or ask every time. | File in the attachment folder |
| Show SVG in notes automatically | Off: a button instead of the image, so a drawing that freezes Obsidian can be edited or removed without opening it. | On |
| Language model | Endpoint, model and request settings (from LLM Endpoint Manager, if installed). | — |
The model answers with an SVG, or with a list of changes keyed by element id. SVG Studio checks the answer (well-formed, accepted by the sanitizer), shows it as a round, and writes only what you accept — through one path that re-reads the text of the target first and refuses to write if it changed in the meantime. In the panel only the checked tree is inserted, into an isolated shadow root; in a note the checked SVG is shown as an image. Architecture and decisions: docs/internal/architecture.md.
too-costly); a block that costs a quarter of the limit or more is drawn only after a click. The estimate was measured in Chromium and misses whole classes (shapes and clips set by CSS, large colour emoji, gradients with thousands of stops, CSS animations); WebKit (iOS) and Firefox were not measured, and a phone is probably several times slower than the measuring machine. What actually protects Obsidian is the safety net: a mark is written before an SVG is drawn, a watchdog notices a frozen window, and a block that froze Obsidian waits for a click the next time. It cannot catch a freeze shorter than about one second or one that starts late; a switch in the settings turns off automatic drawing in notes. SVGs embedded with ![[name.svg]] are drawn by Obsidian itself and are not covered.Issues and pull requests on git.jkaindl.de. Test-driven (npm run gate: lint, typecheck, tests, purity and bundle checks). See AGENTS.md.
LICENSE; dual-license option in LICENSING.md).LICENSE-DOCS).Copyright © 2026 Johannes Kaindl.