Drag-and-drop mockup tool for audio plugin UIs. Design knobs, faders, meters, sequencers, and more — then export as PNG, SVG, or JSON for implementation in JUCE, nih-plug, iPlug2, or any framework.
nvm use 22
npm install
npm run dev # http://localhost:5173
Or open drawdio.html in any modern browser for the original single-file version.
[ / ] to rotate by step, Shift+[/] for ±45°; configure step in toolbar (∠).drawdio.json files; autosave to localStorage| Key | Action |
|---|---|
Ctrl+Z / Ctrl+Shift+Z |
Undo / Redo |
Ctrl+C / Ctrl+V / Ctrl+X |
Copy / Paste / Cut |
Ctrl+D |
Duplicate (offset by grid step) |
Ctrl+drag |
Duplicate in-place and move copy |
Ctrl+A |
Select all |
Delete / Backspace |
Delete selection |
[ / ] |
Rotate by step (default 15°) |
Shift+[ / Shift+] |
Rotate by ±45° |
Ctrl+G / Ctrl+Shift+G |
Group / Ungroup |
Ctrl+] / Ctrl+[ |
Bring forward / Send backward |
Ctrl+Shift+] / Ctrl+Shift+[ |
Bring to front / Send to back |
Ctrl+S |
Save |
Ctrl+O |
Open |
Ctrl+E / Ctrl+Shift+E |
Export PNG / SVG |
G |
Toggle grid |
+ / - |
Zoom in / out |
Ctrl+0 |
Reset zoom |
Space+drag or middle-click drag |
Pan |
Escape |
Clear selection / cancel placement |
Bring your own knob graphics, background textures, panel artwork, or any image into the tool in two ways:
meet aspect-ratio preservation.Supported formats: PNG · JPEG · WebP · SVG · GIF
Recommended specs:
| Format | Best for | Resolution tip |
|---|---|---|
| SVG | Knob artwork, icons, vector panels | Resolution-independent — use SVG whenever possible |
| PNG | Photos, textures, raster artwork | Export at 2× the intended display size for crisp results at 2x PNG export |
| WebP | Photos that need small file size | Same 2× rule as PNG |
| JPEG | Backgrounds, photographs | Avoid for UI elements with transparency |
Place images in src/assets/ and import them in a .svelte component:
import myKnob from '../assets/my-knob.png';
// then in SVG: <image href={myKnob} ... />
Naming conventions for src/assets/:
filter-knob-bg.svg, wood-panel.pngbg- for backgrounds, icon- for icons, knob- for knob graphicsDrawdio can act as a live, visual layout editor for any app that stores element bounds in a JSON file on disk. Drag a rect in drawdio → the file updates → the target app reloads and everything moves.
One-time setup:
npm run bridge:install
Run the bridge (terminal, from the repo root):
BRIDGE_TARGET=/absolute/path/to/Layout.json npm run bridge
Connect drawdio: Toolbar → ☰ → Bridge → paste the same path → Connect. Green dot = live. Tick Auto-connect on startup to skip this step on reload.
See docs/FLAT_MANIFEST_SCHEMA.md for the JSON contract the bridge speaks, and tools/bridge/README.md for the protocol / env-var reference.
Any companion app that re-reads the JSON on demand can pair with this — e.g. a JUCE plugin like SquelchPro picks up the new layout on Ctrl+R, no recompile needed.
Export your mockup as PNG (screenshot) or JSON (structured layout), then share it with Claude, ChatGPT, or any AI assistant to guide plugin UI implementation. The JSON format includes exact positions, sizes, types, rotation, and properties for every component.
MIT — use it however you want, including commercially.