A minimalist canvas-based drawing application that lives entirely in your browser. Draw shapes, annotate with text, and share everything via URL.
- 🎨 Canvas Drawing – Rectangles, circles, lines, arrows, freehand pen, text boxes, and sticky notes
- 🗜️ Compression – Your drawings get compressed with deflate
- 🔗 Shareable – Everything stored in localStorage and URL hash for easy sharing
- 🔒 Secure & Private – Zero server storage, all data stays in your browser
- 🎯 Zero Dependencies – Single HTML file, works offline as a PWA
- 🎨 Full Customization – Stroke/fill colors, line widths, solid/dashed styles
- ↩️ Undo/Redo – Full history with 100 state snapshots
- 🔍 Pan & Zoom – Navigate large canvases with ease
- 📱 Mobile Friendly – Touch-optimized for tablets and phones
- Select (V) – Move and resize elements
- Rectangle (R) – Draw rectangles
- Circle (C) – Draw circles
- Line (L) – Draw straight lines
- Arrow (A) – Draw arrows
- Pen (P) – Freehand drawing
- Text (T) – Add text boxes
- Sticky Note (S) – Add colored sticky notes
- Eraser (E) – Delete elements
V– Select toolR– RectangleC– CircleL– LineA– ArrowP– Pen (freehand)T– TextS– Sticky noteE– EraserH– Pan (or holdSpace+ drag)
Delete/Backspace– Delete selected elementsCmd/Ctrl + Z– UndoCmd/Ctrl + Shift + Z– RedoArrow Keys– Nudge selected elementsSpace + Drag– Pan canvasMouse Wheel– Zoom in/out
Double-clicktext element to editShift + Click– Add to selection- Drag in empty area – Box selection
- Your data lives in localStorage (primary) AND the URL hash (for sharing)
- Add
/qrto get a QR code for the current page - Change stroke/fill colors of existing shapes (except sticky notes)
- Use 8-point resize handles to adjust shape dimensions
- Drawings are automatically saved as you work
- Board Format:
#board:<base64url_compressed_json> - Compression: Deflate-raw reduces JSON size by ~70-80%
- Size limits: localStorage preferred (5-10MB), URL hash for sharing (warns at >1MB)
- Data Structure: JSON containing viewport, elements array with all shapes/text/sticky notes
Made with ❤️ and JavaScript
