Online whiteboard, no account, nothing uploaded
Draw on the board above. There is nothing to sign up for, no workspace to join and no board link to generate. What you draw is written to your own browser and goes nowhere else. That is not a privacy policy you have to take on trust: this page is not permitted to open a network connection at all.
Local-first, and what it costs
What "local-first" means here
Most online whiteboards are a window onto a server. You sign in, the board lives in someone's database, and the drawing you see is a copy streamed back to you. That design buys real things: collaboration, sync between your devices, a board that survives a lost laptop. It costs one thing. Every stroke you make is uploaded, because that is how the product works.
Local-first inverts it. The whiteboard is the page you already downloaded. Your boards are stored in your browser's own database, the drawing happens on your device's canvas, and there is no account because there is nothing to attach an account to. The page ships with a Content-Security-Policy that setsconnect-src 'none', which is a rule the browser enforces: no fetch, no XHR, no WebSocket, no beacon. Even a build that tried to send your board somewhere would simply fail to send it.
That is a narrower promise than "we respect your privacy", and narrow is the point. Cloudflare serves this page, so like any web host it sees your IP address and the fact that you asked for this URL. What nobody sees is what you drew, because your drawing never becomes a request in the first place.
When you would actually reach for it
The honest answer is: whenever the drawing is for you, and the round trip through an account would cost more than it returns. Concretely:
- You are on a call and need to see the shape of a problem. Boxes, arrows, a circle round the part that is wrong. Nobody else needs to open it.
- You are planning a system before writing any of it: a rectangle per service, arrows for what calls what, and a second board for the version you abandoned an hour later.
- You are explaining something while screen-sharing, and you want to draw while you talk rather than build a diagram in advance.
- The content is something you would rather not put on a stranger's server: an architecture with real hostnames, a floor plan, an org chart with real names, a layout for a product that has not been announced.
- You have a tablet and a stylus and want a scratch surface that opens in a second, with no app install, no first-run tour and no "choose a plan".
Check the claim yourself, in about a minute
Everything above is easy to write and impossible to distinguish from a lie by looking at the page. So check it. You already have the tools.
- Press F12, or Cmd+Option+I on a Mac, and open the Network tab.
- Reload, then clear the list so you are starting from empty.
- Draw a few strokes. Add a rectangle and an arrow. Open a second board with the "+", switch back, close one.
The list stays empty. Not "only anonymous telemetry". Empty. Then read the policy the server actually sent, which is the check that does not depend on the page behaving today:
curl -sI https://board.jamuny.com/ | grep -i content-security-policyThe third check is the one that needs no tools at all: load the board, turn your Wi-Fi off, and carry on drawing. Everything keeps working, because none of it needs the network. The one exception is opening a draw.io file, whose importer and icon pictures load the first time a diagram needs them. Software that phones home stops working when it cannot. Jamuny's verify page walks through the same checks across every property on the network, and states plainly what is not being claimed.
What this whiteboard deliberately does not do
There is no real-time collaboration. This is a position rather than a gap. Two cursors on one board requires a server that holds the board while both people edit it, and that server is exactly the thing whose absence the rest of this page is about. You cannot have a board nobody can upload and a board two people can share at once. This one picked the first. If you need the second, use a tool built around a server, and choose it knowing that is what you are choosing.
Syncing your own boards between your own devices is ruled out by the same argument, for the same reason. So is any kind of account.
Boards, storage and files
Boards are tabs, and they live in this browser
The strip at the top of the window is a tab per board. "+" starts a new one, "×" closes one, and double-clicking a tab's name renames it. Closing deletes the board from this browser, so it asks first, and offers to save a copy of the board file before it goes. The same rename is in the menu button at the left of the toolbar, since a double-click is not something a page can hint at. New boards are called Untitled until you say otherwise, and tabs keep the order you created them in rather than jumping around as you edit.
Everything is saved as you go, about half a second after you stop, and a finished stroke is written out within a second of drawing it. Boards are kept in IndexedDB under a database called jamuny-board, which means: this browser, this device, this profile. They will not be on your phone. They will not be in your other browser. And clearing site data for this domain deletes them permanently, with no copy anywhere for anyone to restore. That is the real cost of the trade, and it is worth knowing before you draw something you need next month.
If your browser blocks storage (a private window with strict settings, for example) the board still works, and a banner says outright that nothing will survive a reload rather than letting you find out later. Two tabs of the same browser share one board list, so a board created in one appears in the other's strip.
Saving a board, and opening one again
"Save board file" in the menu writes the whole board (the drawing and the images in it) to a single file on your own machine. "Open board file" reads one back. That is the only way to move a board between browsers or machines, or to keep a backup, because there is no server holding a copy: everything you draw lives in this browser until you say otherwise.
Opening a file makes a new board rather than replacing the one you are on, so a file opened by mistake costs nothing. A file that this board did not write is refused rather than half-read, and the pictures inside one are checked before they are stored: an SVG is turned away there for the same reason the image tools turn it away, since it is a document that can carry script.
"Open board file" also opens diagrams made in draw.io: a .drawio or .xml file, or a .drawio.svg or .drawio.png exported with the diagram inside. You can drop one on the canvas too. Each page of the diagram becomes its own board. Boxes, circles, diamonds and the other shapes this board also has open as those shapes, labels become text grouped with their shape, placed where draw.io places them by the cell's alignment and spacing, inside the shape, above, below or beside it, or turned on end, and connectors become arrows attached to the shapes they join, including connectors drawn with no arrowheads and ones that end on a text label. A connector's label sits on white, so the line does not cross the words. An icon from one of draw.io's icon libraries, such as a cloud service or a router, opens as the icon itself, drawn from draw.io's own stencil and kept inside the board, with its label under or beside it where draw.io put it. It moves, resizes in proportion and takes arrows like any shape, and keeps its own colours. Symbols from draw.io's electrical, P&ID, floor plan, basic, BPMN, lean mapping and generic rack libraries open drawn from draw.io's stencils in the same way, but they are line drawings rather than pictures: each takes a new line colour, fill and line width from the style bar, stretches when you resize it unless draw.io keeps that symbol in proportion, and goes back to draw.io as draw.io's own symbol. Text drawn inside a symbol, such as the letters in a P&ID instrument bubble, is not shown, and a dashed line inside one is drawn solid. Some shapes draw.io draws in code rather than from a stencil open drawn as well: the iOS pin, the simple ribbon, logic gates, BPMN events, the basic arc and part of a ring, lean mapping's physical pull and electronic information flow, and the generic rack cabinet, plate and shelf. Each keeps its settings, such as a gate's number of inputs or an event's symbol, redraws at its new size the way draw.io does, so a ribbon's notch stays the same width when the ribbon is stretched, and goes back to draw.io as the same shape. A few shapes, AWS's 3D ones among them, have no picture here and open as outlines, and any other stencil this board has no outline for opens as a rectangle. A waypoint, the small point draw.io lets several connectors meet at, opens as a dot in its line colour, with its connectors still attached. A connector's bends are kept, and routed the way draw.io routes them: each stored bend gives the line one of its two coordinates and the other is discarded, so the line can pass to one side of a bend rather than through it. That is what draw.io itself draws. Corners are cut when the file asks for it, always at a 10px radius: an arc size set on the connector in draw.io is not read. A bend is reshaped the way draw.io reshapes it; seereshaping a route. On a bent connector, Elbow keeps the route it opened with and Straight draws straight lines through the stored bends; Curve draws the same straight lines, because the board has no curve through several points. A curved connector or one of the two older right-angle styles keeps the plain route it had before. The file is read in this browser; nothing is sent anywhere, and links to pictures on other sites are dropped rather than fetched.
Sending a board back to draw.io
Export as draw.io, in the Export menu and the main menu, writes the open board as a .drawio file, and draw.io opens it as a diagram to edit, not as a picture. A rectangle, diamond, cylinder or any other shape draw.io also has goes out as that draw.io shape, with its colours, dash, rotation, shadow and the rest. Text you grouped with a shape and placed on it becomes the shape's own label again, so in draw.io it moves and wraps with the shape; text under an icon goes back under it. Arrows go out as connectors attached to the same shapes, at the same points, with their bends, routing and ends. A table goes out as a draw.io table, merged cells included, and pictures travel inside the file.
Some things have no draw.io shape to become. A pen stroke, an icon, and the pentagon, octagon, chevron and braces are written as drawings stored inside the file, the same way draw.io's own freehand tool stores what you draw with it: they look the same, but an icon is no longer tied to its library, so an AWS icon's library options do not apply. A text label beside an arrow stays a free text, because the board never tied it to the arrow. The file is built in this browser, like every other export here. Opened here again, it gives back the same shapes, arrows and tables, with those pens and five shapes coming back as drawings.
The drawing tools that are there
Pen, rectangle, ellipse, line, arrow, text
Six drawing tools plus select, each with a single-letter shortcut:P pen, R rectangle, O ellipse, Lline, A arrow, T text and V select. The pen is a freehand stroke that thins and thickens as you move rather than coming out as a uniform slab, which is the difference between a drawn line and an extruded one.
The rail keeps these in two buttons that each stand for several tools. The Shapes button covers the rectangle, the ellipse and the grid below, and the Line button covers the line and the arrow; each shows the one you used last, and remembers it after a reload. A click chooses the tool on its face. A second click, a right-click, a held press or the right arrow key opens the menu with the rest, and S opens the shapes grid directly. Every letter above still chooses its tool, and changes what the button shows. In a window too short for the whole rail, Laser and Annotate move behind a "⋯" button first, then Eraser and Image as the window gets shorter still.
Box shapes, from the Shapes button
Beyond the rectangle and the ellipse, the Shapes button in the rail (or S) opens a grid of box shapes: a diamond, a triangle, a parallelogram, a trapezium, a pentagon, a hexagon, an octagon, a chevron, block arrows pointing left and right, a cylinder, a left and right brace, and seven of draw.io's own: a document, a cube, an isometric square, a double ellipse, the two logic gates draw.io calls Or and And, and a delay. Each is dragged out exactly the way a rectangle is, and each fills the box you drag: a hexagon pulled wide is a wide hexagon rather than a hexagon with empty columns beside it. They takethe same colours, widths, dash patterns and Clean-or-Sketch look as everything else, and they are picked along their own outline: clicking the empty top-left corner of a triangle's box selects nothing, because the triangle is not there. The two braces are open curves rather than closed shapes, so they take no background: there is no inside for a fill to land in. UML shapesare the button's second group.
UML shapes: folders, frames, actors, interfaces
A draw.io diagram can bring eleven shapes drawn for UML and class diagrams: a folder, a partial rectangle, a note, a final state, a frame, a lifeline, an actor, a module, a required interface, a provided interface and the cross that ends a lifeline. Each moves, resizes, saves and exports like anything else, and takes the same colours, widths and Clean-or-Sketch look. The Shapes button offers all eleven in its UML group. A new final state is filled in its line colour, and a new partial rectangle has its top and bottom sides only, as draw.io draws them.
Several of the eleven are drawn in two parts: a filled body, and a stroke-only detail on top of it that never takes the fill colour. An actor is the clearest case — the fill lands on the head alone, and the torso and the two arms are strokes with nothing behind them to fill. A module's two side pins work the same way: they are stroke, drawn over a fill that stops short of them. A lifeline's tail is the one detail that is always dashed, whatever the shape's own stroke style says, because that is what tells a lifeline apart from a plain line at a glance.
A partial rectangle is filled all over but stroked only on the sides you leave switched on. The four side toggles, one per edge, sit under the style bar's Shape chip rather than on the bar itself, next to the other rarely-changed controls. Every side can be switched off, including the last one, which leaves a rectangle that is filled and has no border at all. That is exactly what a draw.io table cell is, and it is what the sides control refused to do until 1.32.0.
A frame's clickable area is only its name tab, in the top-left corner, on purpose. Its large interior is deliberately not part of the shape, so whatever you have drawn inside a frame stays a single click away instead of always selecting the frame that happens to sit behind it.
A folder's tab, a note's folded corner, a module's two pins and a cube's depth are not settings you can drag or type into. A new one gets draw.io's own size. A diagram imported from draw.io keeps the sizes its file asks for, a wider tab or smaller pins, and writes them back out when you export it; there is still no control to change one here.
Tables, from an ER diagram
An entity-relationship diagram opened from draw.io arrives as tables. Each entity is one element: a title band across the top, a width per column, a height per row, and the words in each cell. It moves, resizes and takes colours, widths and the Clean-or-Sketch look the same way every other shape does, and it saves and reopens with its columns and its merged cells intact.
Dragging a table smaller stops when every column is 20 wide and every row is 20 tall, which are draw.io's own limits: past that a table would be a grid with nothing in it. Between those limits the columns and rows keep their proportions, so a table pulled twice as wide is the same table twice as wide rather than one column doing all the growing.
A cell merged across columns or down rows in the original file draws as one cell, with no line through it. The whole table takes one background and one line colour, not a colour per cell, and the words are drawn in the line colour. A cell holding more text than fits is cut off at its own edge rather than running into the column beside it, which is what draw.io does too.
A table is edited from inside it. Click it once to select it, then click a cell to select that cell, and shift-click another to take the rectangle between; a selection that would cut a merged cell in half grows to take all of it. Double-click a cell or the title to type in it, and click away to keep what you typed or press Escape to leave it as it was. Delete, from the keyboard or the right-click menu, empties the selected cells and leaves the table. Clearing the title removes the band it sat in.
Once a cell is selected, the keyboard works as it does in a spreadsheet. The arrow keys move to the next cell, treating a merged cell as one; Shift and an arrow key grow the selection; Enter or F2 opens the cell for typing. Cmd or Ctrl+C copies the selected cells' text, and pasting into a selected cell of any table fills from there rightwards and down, stopping at the table's edge; cut empties the cells it copied. The text travels as tab-separated columns, the form Excel and Google Sheets use, so a block of cells pastes into a spreadsheet and a block copied from one pastes into a table here. Cut, Copy and Paste in the right-click menu do the same. The menu's Paste reads what you copied elsewhere too, so the browser asks your permission the first time; say no and it pastes the cells last copied on the board.
Right-click a cell for the same table items draw.io has: insert a column before or after, delete a column, insert a row above or below, delete a row, and merge or unmerge. A new row or column takes the size of the one beside it and the table grows to make room. Two things work differently from draw.io on purpose: a row or column added inside a merged cell makes it bigger, and one deleted through it makes it smaller and keeps its words, where draw.io leaves the merge covering whatever cells now sit there. Deleting the last row or column deletes the table, as it does in draw.io.
The lines between rows and between columns can be dragged once the table is selected. On its own a drag grows or shrinks the table with the row or column; hold Shift and the next one gives up the space instead, hold Cmd or Ctrl and every row or column changes by the same amount, and hold both to make them all the same size.
A new table
The Shapes button has a Table grid under the shapes. Point at a cell in it and the grid lights up to there, reading columns by rows underneath and growing as you near its edge, up to 20 by 20. Tick Title for a header band, pick a size, then click the canvas for a table of draw.io's default size, 60 wide per column and 40 tall per row, or drag to set its size yourself. The arrow keys move through the grid, and Enter places the table in the middle of the view straight away.
Labels, typed in place
Pick the text tool and click the board to start typing; the cursor, the selection, spellcheck and IME all come from a real text field placed over the canvas, not a reimplementation of any of them. Escape throws the label away, clicking elsewhere commits it, and typing nothing and clicking away leaves nothing behind rather than an invisible object you could select but never see. Double-click an existing label with the select tool to edit it again. Font size is its own control in the panel: four sizes, applied to the current selection the same way stroke colour is, and dragging a corner handle scales the font rather than reflowing the text.
Click to drop a label that grows with what you type, or drag to set how wide it should be first: a dragged label wraps inside the box you gave it instead of running off in one line. A word longer than the box is left to stick out rather than being broken in half, because half a URL is worse than a line you can see is too long.
Select a rectangle, ellipse, diamond, note, cube or another closed shape and pressEnter to type inside it; double-clicking it, or clicking inside it with the text tool, does the same. The words are centred and wrap to the shape, and the shape grows taller to hold them; it never shrinks on its own.Enter starts a new line, Ctrl or Cmd withEnter or a click elsewhere finishes, and Escape puts everything back. The text moves, copies and deletes with its shape. With the shape selected, the T button in the bar sets the font, size, bold, italic and underline of its words, and, once it holds text, a Text colour row and left, centre and right alignment. Until you pick one, the words take the shape's colour as it changes.
A folder, UML frame, lifeline, actor, brace, icon or picture has no inside to type in, so its words go under it: select it and press Enter, or double-click it, and the label appears centred below the shape. The shape keeps its size, the T button formats the label the same way, and the label moves, copies and deletes with the shape. A label imported from draw.io is bound to its shape the same way when the board would lay it out exactly where draw.io put it; any other imported label stays a separate text.
An arrow or a line takes a label the same way: select it and pressEnter, or double-click it, and type. The words sit on the middle of the line over a background that hides the stroke behind them, and move with the line when you drag it, bend it or move a shape it is attached to. The T button's Label position slider puts the words anywhere along the line, from its start at 0 to its end at 100, or drag the label along the line of the selected arrow with the hand cursor; it snaps to the start, the middle and the end. Drag it off the line and it stays beside the line, or set the distance with the Label offset slider; dropped near the line it snaps back onto it. A connector label imported from draw.io is bound to its arrow the same way when the board would place it exactly where draw.io did.
A label can be set in a sans, serif, monospace or handwritten face, made bold, italic or underlined, and aligned left, centre or right; the colour and the size are the same controls every other tool uses. Select a label and it also offers Background, which paints a colour behind the text so a line or an arrow passing under it does not cut through the words. The first three faces are the ones your own system already has. The handwritten one is Excalifont, the face Excalidraw draws in, and it comes inside the board's own code the first time you pick it rather than from a font service. A label is measured the moment it is made, and a face that arrived a second later would leave its box the wrong size, so a handwritten label waits the moment it takes for Excalifont to load before it is measured.
Images, pasted or dropped
Paste an image with Cmd+V, drag a file onto the canvas, or use the image button in the toolbar to pick one. It arrives sized to fit the view rather than at whatever the camera shot it at, and dragging a corner keeps its proportions, so a photograph cannot be accidentally stretched the way a rectangle can. Anything larger than 4096 pixels on its long edge is scaled down on the way in, because the alternative is spending your browser storage quota on pixels no screen will ever show.
The pixels are stored separately from the board itself, in their own place in the same database. That is not an implementation detail you should have to care about, but it is the reason drawing a single pen stroke on a board full of photographs stays fast: saving the board does not mean rewriting the photographs. Images are included in both the PNG and the SVG export, and in the SVG they are embedded in the file rather than linked, so the export is one self-contained document that still works on another machine.
A laser pointer for talking over a board
Press K and drag: a red trail follows the pointer, holds for about a second and then fades away. It is for pointing at something while you talk over a board someone else is looking at, so it is deliberately not a drawing. The trail is never an element on the board: nothing about it can be selected, moved, undone, saved or exported, and switching back to any other tool leaves no trace that it was used. That is the whole difference between it and the pen, which is otherwise the same gesture.
The trail is red by default, and the style bar offers four more colours while the laser is the active tool. That is a setting for the tool rather than for anything on the board, so it is remembered across every board you open, and choosing one never changes whatever you happen to have selected. Red is the default because that is what a laser pointer is; the alternatives are there for the boards where red is already the busiest colour on screen, and for anyone who finds a red dot the hardest one to follow.
Annotating over a board
Press D to draw on top of the board without drawing on it. The ink is the laser's cousin: it is never an element, so it cannot be selected, saved, exported or undone with the board's own history, and it is gone when you reload. Unlike the laser it stays until you remove it. 1 to5 choose the colour (red, orange, green, blue or pink), andBackspace or Delete wipes every stroke at once. From any other tool, Shift+E does the same. Cmd+Zwhile annotating takes back one stroke, or the wipe itself, and leaves the board alone. D again, or any other tool, stops annotating and leaves the ink on screen.
The ink follows the board when you pan or zoom, so it stays on the thing it marks, and it keeps one width on screen at any zoom. Switching to another board clears it: ink belongs to the board it was drawn over. The five colours are painted the same in the light and the dark theme, and each holds at least 3:1 against both canvases, which is why there is no black, white or yellow.
Moving the tool rail
The tool rail can be moved: drag it anywhere over the canvas by the grip of dots at its top, or let go near an edge to dock it there. At the left or right it is a column; at the top or bottom it lies down as a row, and its menus open away from the edge it is on. Double-clicking or double-tapping the grip, or pressing Enter on it, opens the rail's layout menu, grouped under Dock, Buttons, Behaviour and Tools, which docks it to an edge without a drag and has a switch, Names and keys, that writes each tool's name and shortcut beside its icon in a column, as wide as its longest name and no wider. The same menu sets the size of the buttons, Small, Medium or Large, with Auto choosing Large on a touch screen, and whether the rail fades while you draw: it dims as you press on the canvas and returns when you let go, so a stroke that passes under it is the stroke and not a press on a button. Q locks the tool in use, for the pen, the shapes, lines and arrows: it stays after each shape, with nothing selected, until you press Escape or V, and a padlock on its button says so. Shift+Z hides the whole rail, with every tool key still working and a small button at its edge to bring it back. The lock and the hidden rail are not kept after a reload. Customize tools in the same menu lets you drag a tool to a new place, or move it with Alt and an arrow, and click it or press Enter to pin it, which keeps it on the rail until nothing else will fit and sends the unpinned behind the ⋯ button first. X goes back to the tool you used before, and again to return, with a small dot on the button it goes to. A line of light text on the rail reminds you that Shift+Z hides and shows it. With a drawing tool chosen and nothing selected, the style bar rests beside the rail: at the top right for a rail on the right, and starting at the rail's right end below a rail at the top or above one at the bottom. The dock, the switches and the size stay as you set them, on every board and after a reload, and the rail cannot be dragged off the edge: the grip is the only way back, so a rail that could leave the canvas would take its own handle with it. Dragging is by the grip alone rather than by the card, because a press on a tool has to mean "choose this tool" every time.
Colour, weight and finish
Colours, and arrowheads
Seven stroke colours and eight background tints, every one measured to stay legible against the canvas and against every other tint: a stroke can be drawn on a filled shape, and a palette checked only against white is a palette that fails exactly there. Under the style bar's Colour chip there is also a full colour picker for each, for when a specific colour is the point. The swatches stay the quick path because they are the measured ones; a colour you pick yourself is yours to judge. Picked colours collect in a row of their own beside the picker so you can use them again, and they follow you from one board to the next, but they never join the fixed palette, because what that palette means is that every colour in it has been checked.
An arrow can carry a marker at each end, chosen separately under Arrow ends under the style bar's Connector chip: the board's own open head, nothing, or any of draw.io's 34 line ends, such as a filled or hollow triangle, a diamond, a dot or an entity-relationship crow's foot. Each end has its own size. A filled marker is filled in the line's colour, and the line stops at the back of a hollow one rather than running through it. The line tool draws an arrow with no marker at either end, which is what a line is in draw.io too. So a line attaches to the shapes at its ends and follows them when they move, takes Straight, Curve and Elbow under Routing, and can be given a head later from the same two rows.
Stroke, fill and width
Seven stroke colours, five fills, four stroke widths, and solid, dashed or dotted lines. The panel applies to whatever is selected as well as to what you draw next: a style control that only changed future shapes would read as broken. The colours are deliberately not the interface's purple: they are content, and each was measured for contrast and for being distinguishable from the others at a glance.
Clean or Sketch, chosen per element
Every shape can be drawn crisply or with a hand-drawn wobble, and the choice belongs to the element rather than to the board. A clean rectangle and a sketched one can sit side by side on the same board, and changing the setting later does not reach back and redraw everything you already made. Diagrams that need to look finished and diagrams that need to look provisional are different jobs, and a whiteboard should not force you to pick one for the whole file.
The style bar, and collapsing it
The style bar floats beside whatever is selected, which is useful while you are changing something and in the way while you are drawing. Collapse it to a single dot with the round swatch at its left end, or with the . key; the dot shows the current stroke colour, and clicking it brings the bar back. Whichever way you leave it is remembered, on every board.
To move things about with nothing over them at all, pressZ or / with something selected: the bar goes away, dot and all, and stays away while you select and move other things. The same key brings it back, and so does reloading the page.
The bar is a row of chips, one per group of controls: Colour, Stroke, Text style, Shape, Connector, Effects and Arrange. Click a chip and that group's controls drop down under it; one group is open at a time, and Escape or a click elsewhere closes it. A chip appears only when what you have selected can use it, so a line has no Shape chip and an image has only Effects. The Colour chip is a dot of the current stroke colour, so the bar still says what is set while every group is closed.
The cost of that, named: changing a colour takes one click more than it did when seven swatches sat on the bar permanently. What it buys is a bar about a third of the width, over a drawing surface the bar floats on top of.
Corner rounding
Corners come in three settings (sharp, round and extra round) under the style bar's button. They apply to the rectangle and to every straight-edged shape; an ellipse, a cylinder, the braces and the UML shapes take none of the three, so the control is not offered for them rather than sitting there doing nothing. The radius is a fraction of the shape's shorter side, so a rounded box keeps its proportions when you resize it.
Gradients, opacity and shadows
Behind the same button, a shape with a background can fade from it to a second colour, running down, up, right or left, and None makes it flat again. The second colour is one of the eight background tints or, where a pale fade would be too faint to see, one of the seven stroke colours. Choosing a gradient for a shape with no background gives it a white one first, because a fade needs somewhere to start. Opacity is a slider and a number from 0 to 100 in steps of 5; it applies to the fill and the outline each, so the two show darker where the outline crosses the fill. Shadow is one switch that puts draw.io's grey shadow under the element, a little to the right and below. Opacity and Shadow work on anything you can select, pictures and icons included; a gradient needs a background, so lines, arrows and labels take none. All three carry into the next shape you draw, like the rest of the style bar.
Selecting, arranging and undoing
Selecting and moving
With the select tool, click a shape, shift-click to add or remove one, or drag a box around several. The box takes what it fully encloses, not everything it touches, so with shapes stacked on each other you can draw around one and get only that one. Most whiteboards select anything the box crosses; this is the deliberate difference, and the cost is that a quick sweep clipping the edge of a shape leaves it behind.Cmd/Ctrl+Aselects everything on the board. Drag the selection to move it, or nudge it with the arrow keys: hold Shift for a bigger step, and a run of presses is a single undo step rather than one per key.Delete removes the selection, and Escape deselects.
Resizing, with the eight handles
Every selection carries eight handles: the four corners resize both axes at once, and the four edge handles stretch a single axis, so a row of boxes can be made wider without becoming taller. The pointer says which is which before you press: arrows along the axis you are about to stretch, and a four-way arrow over anything you can pick up and move. Several shapes resize together as one box. Images and text are the exception, and deliberately so: they take the larger of the two scales on both axes, because a stretched photograph is the most obvious way a drawing tool looks amateurish and a font size is one number with no way to express a squashed letter. The cost is that an image inside a one-axis stretch keeps its proportions and so drifts a little against the shapes beside it.
What happens when you finish a shape
A shape is selected the moment you finish drawing it, and the board hands itself back to the select tool, so the style bar beside it is describing that shape, and its handles can be grabbed straight away to move, resize, rotate or bend it. The cost is that drawing several shapes in a row means picking the tool again each time, which is the trade every comparable app makes. A selected line or arrow is framed by its own three handles rather than by a rectangle, since a box around a diagonal is mostly canvas the line never touches.
Rotating a shape
A single shape, drawing or image also carries a round handle on a short stalk below it: drag that to rotate it about its own centre, and holdShift to snap to fifteen degrees. Once something is turned, its selection frame turns with it and its eight handles move to its own corners and edges rather than staying on the upright box around it, so dragging the corner of a tilted rectangle stretches it along the direction it is actually pointing, and the pointer's arrows turn to match. Rotation is offered for one element at a time; turning a whole selection means every shape in it orbiting a shared centre as well as spinning, which is a different operation and a later one.
Arrows that attach to shapes
Arrows attach to shapes, and so do lines, which are arrows with no heads. Draw one from one box to another and the two stay joined: move either box and the arrow follows it, stretching and re-aiming as you drag rather than snapping into place when you let go. Drag an arrow's end onto a shape to attach it, or off onto empty canvas to let go, and deleting a shape leaves its arrows behind as ordinary arrows rather than pointing at nothing.
An arrow stays on the spot you attached it to. Draw one into the top of a box and it holds that spot when the box is moved, resized or turned; the shaft stretches and bends to reach it. Drag an end along a shape to move the attachment point. The end stops a few pixels short of the outline, because an arrow touching a box reads as part of the box.
While you are drawing an arrow, or dragging one of its ends, the shape it is about to attach to is outlined, so attaching is something you can see coming and aim for rather than something you discover afterwards. To let go: drag the end onto empty canvas, drag the whole arrow away from what it is attached to, or pick "Detach arrow" from the right-click menu.
Bending a line or an arrow
Select a line or an arrow and it shows three handles: one at each end, and a filled one in the middle. Drag an end to move it; drag the middle to bow the line either way. The arrowhead follows the curve, so a bent arrow still points where the line is actually going, and the bend is stored as a proportion of the line's length: stretch the line later and the curve keeps its shape rather than flattening out.
A line or an arrow is bent by the handle in its middle, and that handle moves in both directions: pull it away from the line to bow the curve, and slide it along to move where the curve swells. Two numbers are stored: how far it bows, and where. Both are fractions of the line's own length, so the shape of the bend survives a resize.
Reshaping a route
A line or an arrow can also run through bends of its own, which is what a connector opened from draw.io usually has. Right-click one and pick Add waypoint to put a bend where you clicked; the middle handle that bows the line gives way to the route's own handles. On an Elbow, or on a route whose legs meet at right angles, each leg has a handle at its middle: drag it and the leg slides sideways while the two ends stay where they are. An Elbow's handles are faint until the first drag, which gives it bends of its own.
Rounded corners, under the same Connector chip as Routing, cuts every corner of a right-angle route with a 10-pixel fillet, which is what draw.io's own rounded connectors have. A straight or curved line has no corner to cut, so it looks the same either way. The setting carries to the next connector you draw, and a diagram opened from draw.io arrives with whatever it was drawn with.
A route whose bends are not right angles has a handle on each bend and a faint one halfway along each leg. Drag a bend to move it, drag a faint handle to add a bend there, and drop a bend on its neighbour or into line with the legs either side of it to take it out. HoldAlt while dragging to keep a bend that has come into line. Double-clicking a bend removes it, and the right-click menu has Remove waypoint on a bend's handle and Clear waypoints for the whole route. All of this is how draw.io edits a connector. Two things are left out: draw.io snaps a dragged bend to its 10-pixel grid, where the board snaps to nearby shapes as it does when you drag an end, and draw.io lets you drag a straight connector's line to add a bend, where here that drag moves the connector.
Flipping a shape, or a whole diagram
Shift+H mirrors what you have selected left-to-right andShift+V top-to-bottom; both are in the right-click menu too. With one shape selected it turns over where it stands. With several, the positions mirror as well as the shapes, so flipping a diagram reverses the order of what is in it rather than only turning each piece over. Labels are the exception: a flipped label moves with the diagram but keeps reading the right way round, because mirror writing is never what anyone means by it.
Lining things up, and rubbing them out
Select two or more things and the style bar gains an Arrange chip, holding an Align row: left, centre, right, top, middle, bottom. Select three or more and a Distribute row appears beside it, which spreads them so the gapsbetween them are equal rather than the centres. With shapes of different sizes those are not the same thing, and the white between them is what anyone means by spacing something out. The two outermost never move, since they are the ones you placed on purpose.
The eraser is on E. Sweep it over anything and it goes. It removes whole objects rather than pixels: everything here is a shape, a stroke or a label, so rubbing a hole in one would leave nothing that could be moved, saved or exported afterwards. A whole sweep is one undo, a locked element is left where it is, and touching one shape of a group takes the group, exactly as clicking it would.
Groups and locking
Select a few things and press Cmd/Ctrl+G to hold them together. After that, clicking any one of them takes the whole set, so a diagram moves as a diagram. Adding Shift ungroups again, and ungrouping through one member releases all of them rather than leaving the rest half-attached. Groups are one level deep on purpose: groups inside groups need a rule for which level a click means, and that is a much larger idea than holding a drawing together.
Locking, from the right-click menu, makes something visible but inert: it cannot be selected, moved, resized or deleted, and clicks pass straight through it to whatever is underneath. That is what makes it useful as a backdrop: a floor plan or a screenshot you want to draw on top of without nudging it every time. Because a locked element cannot be right-clicked, the way back is "Unlock everything", on the menu you get by right-clicking empty canvas.
Stacking order, and the right-click menu
For stacking order, Cmd/Ctrl+] andCmd/Ctrl+[ move the selection one step up or down, and adding Shift sends it all the way to the front or back; plain ] and [ still do front and back on their own. Right-click anywhere on the canvas for the same actions as a menu. Right-clicking a shape you have not selected picks it up first, so the menu always acts on what you just pointed at. Right-clicking this article instead gives you the browser's own menu, because it is ordinary text you might want to copy.
Undo and redo
Cmd/Ctrl+Z undoes and addingShift redoes, up to 200 steps, kept per board, so undo on one board can never reach back into the board you were looking at before.
Copy, paste and duplicate
Cmd/Ctrl+C copies the selection andCmd/Ctrl+V pastes it, including onto a different board: the clipboard belongs to the app rather than to any one board. Cmd/Ctrl+D duplicates what is selected without touching the clipboard, so duplicating a shape does not quietly discard whatever you copied earlier. Pasting repeatedly steps each copy further out rather than stacking them all in one place, and a paste of twenty elements is a single undo step rather than twenty. If your system clipboard holds an image, that wins: someone who has just copied a screenshot means the screenshot.
Questions
Is it free, and do I need an account?
It is free and there is no account. There is no sign-up, no trial, no paid tier and no email box. There is nowhere to sign in to, because there is no server holding boards to sign in to.
Where are my boards actually stored?
In IndexedDB, in the browser you are reading this in, under a database called jamuny-board. That is the same mechanism the Jamuny notepad uses. It is per browser and per device: boards drawn in Chrome on a laptop will not appear in Safari on the same laptop, let alone on a phone.
What happens if I clear my browser data?
The boards are deleted, permanently and immediately, and there is no copy anywhere else to restore them from. That is the honest cost of nothing being uploaded. Treat the boards as a scratch surface rather than as an archive.
Can two people draw on the same board at once?
No, and that is a decision rather than a gap. Real-time collaboration needs a server that holds the board while both people edit it, and the moment that server exists the claim that nothing is uploaded is gone. If you need multiplayer, use a tool built around a server and know that is what you are choosing.
Can I put images on a board?
Yes. Paste one, drag a file onto the canvas, or use the image button in the toolbar. The picture is stored in your browser alongside the board and is never uploaded, exactly like everything else you draw. Anything over 4096 pixels on its long edge is scaled down first, so a single photograph from a modern phone does not consume most of the storage the browser is willing to give the page.
Can I open a draw.io diagram?
Yes. "Open board file" in the menu opens .drawio and .xml files, and .drawio.svg and .drawio.png exports that carry the diagram. Each page opens as a new board, with shapes, labels and attached arrows, and icons from draw.io's icon libraries, such as AWS and Cisco, open as the icons themselves. A connector's bends are kept and routed the way draw.io routes them, which means the line can pass to one side of a bend rather than through it: that is how draw.io itself draws one. On a bent connector, Elbow keeps the route it opened with and Straight draws straight lines through the stored bends; Curve draws the same straight lines, because the board has no curve through several points. Drag a leg's handle to reshape the route, or right-click the connector to add, remove or clear its bends. The file is read in your browser and never uploaded. The icons are converted from draw.io's own stencils, used under draw.io's Apache 2.0 licence and the icon makers' terms, listed at /licenses/drawio-stencils.txt. The shapes draw.io draws in code are drawn by code ported from draw.io, under the same licence, noted at /licenses/drawio-painters.txt. Pictures from draw.io's Azure, IBM and Microsoft Cloud and Enterprise libraries are copies of draw.io's own files, shown in their own shape and colours, with their terms at /licenses/drawio-img-lib.txt.
Can I save a board back to draw.io?
Yes. Export as draw.io, in the Export menu, writes the open board as a .drawio file that draw.io opens and edits. Shapes go out as the draw.io shapes they came from, text grouped with a shape becomes its label, arrows stay attached with their bends and ends, and tables keep their merged cells. Four things do not make the trip exactly. A label beside an arrow comes back as free text rather than the arrow's own label. Icons, pens and the pentagon, octagon, chevron and braces go out as drawings, so an AWS or Cisco icon looks right in draw.io but its library options do not apply. Symbols from draw.io's electrical, P&ID and other symbol libraries go back as draw.io's own symbols, and shapes draw.io draws in code, such as a BPMN event or a logic gate, go back as the same shapes with their settings. A class box goes out as a rectangle and a band rather than a draw.io swimlane. And anything draw.io stored that this board never read, such as a custom arc size, is not in the file. The file is written in your browser and never uploaded.
Does it open ER diagrams and database schemas?
Yes, as tables rather than as pictures of tables. An entity from a draw.io ER diagram opens as one element holding its title, its column widths, its rows and any merged cells, so it can be moved, resized, recoloured and saved like any other shape. draw.io has two unrelated ways of building one — a dedicated table shape and an older stacked swimlane — and both are read, including the narrow PK and FK column down the left. The crow's-foot line ends were already there. You can type in a cell or the title, move between cells with the arrow keys, copy and paste cells between tables and to and from a spreadsheet, add and delete rows and columns, merge cells, and drag the lines between rows and columns, and the Shapes button makes a new table from a size grid.
Does it do UML?
It draws eleven UML shapes: a folder, a partial rectangle, a note, a final state, a frame, a lifeline, an actor, a module, a required interface, a provided interface and the cross that ends a lifeline. Each takes the same colours, widths and Clean-or-Sketch look as everything else. The Shapes button offers all eleven in its UML group, and they arrive with draw.io diagrams too. What it does not do is validate a diagram: nothing here knows that an actor should not inherit from a note.
What can go on the end of an arrow?
The board's own open arrowhead, nothing, or any of draw.io's 34 line ends, chosen separately for each end. Behind the style bar's "⋯", Arrow ends has a Start row and an End row. Each has a Type box, which opens the list of every end with its name, and a size from 1 to 40. A filled marker is filled in the line's own colour, and the line stops at the back of a marker instead of running through it. A diagram opened from draw.io keeps the ends it was drawn with.
Can a shape have a gradient, be see-through, or cast a shadow?
Yes. Behind the style bar's "⋯", Gradient fades a shape's background to a second colour, running down, up, right or left. The second colour is one of the eight background tints or the seven stroke colours, whichever reads better on the shape. Opacity sets anything on the board from 0 to 100 percent, in steps of 5, and applies to the fill and the outline each, so they show darker where they overlap. Shadow gives it draw.io's drop shadow: grey, 2 pixels right and 3 down at 100% zoom, slightly blurred. A diagram opened from draw.io keeps its gradients, opacity, shadows and sketch style. draw.io's glass effect and its separate text opacity are not read.
Does it work offline?
Once the page has loaded, yes. Turn your Wi-Fi off and keep drawing, panning, switching boards and undoing. None of that needs the network. Opening a draw.io file is the one exception: its importer, and the picture for each icon a diagram uses, load the first time they are needed. Offline, a draw.io file opens only if its importer has loaded before, and an icon whose picture has not opens as an outline. Pictures from draw.io's Azure, IBM and Microsoft libraries load when a board first shows them after the page loads; offline, one that has not loaded yet shows as a grey box, and appears once you are back online. A reload while offline will not work, because there is no service worker caching the page itself.
Will my boards sync to my other devices?
No. Syncing between your devices needs a server in the middle in exactly the same way collaboration does, so it is ruled out for the same reason. Everything you draw stays on the device you drew it on.
What's new
The whiteboard changes in small steps, and each one is listed here. The same list is in the board's own menu, under "What's new".
1.73.0 (2026-10-03)
- Text inside a shape, and a label on an arrow or line, now sit lower so that the words themselves are centred. They rode high before: a line ran through the lower part of its label and a word in a rectangle sat a few pixels above the middle.
1.72.0 (2026-10-03)
- A label on an arrow can sit beside the line, not only on it. Drag it off the line and it stays where you drop it, snapping back onto the line when it is within a few pixels, or set the distance with the new Label offset slider in the T button. A draw.io export keeps the place, and a draw.io label hung to one side of its connector is now bound to the arrow on import.
1.71.0 (2026-10-03)
- A label on an arrow can be dragged along it. With the arrow selected, the pointer turns to a hand over the label: press and drag, and the label slides along the line, snapping to the start, the middle and the end. The arrow's bend handle, which sits where a label starts out, is drawn just under the label so the arrow can still be bent.
1.70.0 (2026-10-03)
- A draw.io connector label the board would place exactly where draw.io put it is now bound to its arrow on import: it follows the arrow, Enter or a double-click edits it, and the T button and Label position slider work on it. A label hung off the line, wrapped or formatted line by line stays a separate text as before.
1.69.0 (2026-10-03)
- A label on an arrow can sit anywhere along it, not only in the middle. With the arrow selected, the T button has a Label position slider and a percentage field: 0 is the start of the arrow and 100 the end. A draw.io export keeps the place.
1.68.0 (2026-10-03)
- An arrow or line can carry a label. Select it and press Enter, or double-click it, and type: the words sit on the middle of the line, on a background so the line does not run through them, and follow the line when it moves, bends or is rerouted. The T button formats them, and a draw.io export writes them as the connector's label.
1.67.0 (2026-10-03)
- A draw.io label that the board would lay out exactly where draw.io put it is now bound to its shape on import: it follows the shape when you resize it, Enter or a double-click edits it, and the T button formats it. A label that would move, wrap differently, grow the shape or lose its formatting stays a separate text as before.
1.66.0 (2026-10-03)
- Shapes that cannot hold text inside take a label under them: the folder, module, UML frame, lifeline, actor, interfaces, destroy mark, final state, isometric square, braces, icons, pictures and painted shapes. Select one and press Enter, or double-click it, and type; the label sits centred under the shape and the shape never changes size.
- The T button formats a label under a shape as it does text inside one, and the label moves, copies and deletes with its shape. A draw.io export writes it as the shape's label below it.
1.65.0 (2026-10-03)
- Ten more shapes hold text: the partial rectangle, note, document, cube, delay, or, xor, double ellipse and the two block arrows. Select one and press Enter, or double-click it, and type; the words centre, wrap and grow the shape as in a rectangle, and the T button formats them.
- Text in a shape can be aligned left, centre or right from the T button, once the shape holds text. A new text starts centred.
1.64.0 (2026-10-03)
- A shape that holds text gets a Text colour row in its T button: the usual swatches, a custom colour and your recent ones, for the words alone.
- A shape's colour still recolours its words, until you give the words a colour of their own. After that, changing the shape's colour leaves them as you set them.
1.63.0 (2026-10-03)
- Select a shape that holds text and the style bar shows its Text button (the T): font, size, bold, italic and underline change the words inside the shape, and the shape grows to fit a bigger size.
- A shape's colour is its text's colour, so changing the outline recolours the words too, and a new text takes the shape's colour. Opacity reaches the text as well.
- On a shape with no text yet, the same buttons set the look of the first text you type in it.
1.62.0 (2026-10-02)
- Select a shape and press Enter to type inside it. The words are centred and wrap to the shape, and the shape grows taller to hold them.
- A double click on a shape, or the Text tool clicked inside it, opens the same editor. Enter starts a new line; Ctrl or Cmd with Enter, or a click elsewhere, finishes; Escape puts everything back.
- The text moves, copies, deletes, reorders and undoes with its shape, and the draw.io export writes it as the shape's label.
- The text editor no longer has a dashed box or a white background: only the caret and the words show while you type.
1.61.1 (2026-10-02)
- With the tool rail at the top or bottom, the style bar now rests right beside it, starting at the rail's right end, instead of at the far edge of the window.
1.61.0 (2026-10-02)
- The rail's layout menu opens on a double click or double tap of its grip, so a stray click no longer throws a menu over the board. Enter or Space on the grip still opens it at once.
- The menu is grouped under Dock, Buttons, Behaviour and Tools. The dock and the button size are one row each, and the three switches show whether they are on. It is about a third shorter.
- A line of light text on the rail says Shift+Z hides and shows it, with a matching note beside the Show tools button.
- With a drawing tool chosen and nothing selected, the style bar rests beside the rail: at the top right for a rail on the right, below a rail on the top and above one on the bottom, both towards the right.
1.60.0 (2026-10-02)
- Reorder and pin the tools on the rail. Choose Customize tools in the rail's layout menu: drag a tool to move it, or press Alt and an arrow on it, and click it (or press Enter) to pin or unpin it. A pinned tool stays on the rail until there is no room, and the unpinned go behind the ⋯ button first. Reset tool order puts it all back. Both are remembered.
- Press X to go back to the tool you used before, and X again to return. After a shape the board is on select, so X is the way back to the tool you just drew with. A small dot marks the button it goes to.
1.59.0 (2026-10-02)
- Tool lock: press Q, or choose Keep tool after drawing in the rail's layout menu, and the pen, shapes, lines and arrows stay active after each one, so you can draw several in a row. A padlock on the tool says the lock is on. Nothing is left selected, so the next shape starts clean; Escape or V leaves the tool.
- Hide the tool rail with Shift+Z, or Hide tools in its menu. Every tool key still works, and a small button at the rail's edge brings it back, as does Shift+Z again.
1.58.0 (2026-10-02)
- Choose the size of the tool rail's buttons from its layout menu: Small, Medium or Large. Auto, the default, is Large on a touch screen and Medium elsewhere. In a window too small for the chosen size the buttons shrink before any tool moves behind the ⋯ button.
- The rail fades while you draw. It dims as soon as you press on the canvas, so a stroke under it is not hidden behind it, and returns when you let go. Switch it off with Fade while drawing in the layout menu.
- Names and keys is tidier: the rail is only as wide as its longest name, and each key sits right after its name instead of at the far edge.
1.57.0 (2026-10-02)
- Dock the tool rail to any edge. Drag it by its grip and let go near the left, right, top or bottom edge: it snaps there, centred, and at the top or bottom it lies down as a row. Anywhere else it still floats where you drop it.
- Press the grip for the rail's layout menu: dock left, right, top or bottom without dragging, and a Names and keys switch that shows each tool's name and shortcut beside its icon. Both remember their setting.
- The style bar and the menu card move out of the rail's way wherever it is docked, and a row has its own ⋯ menu for narrow windows.
1.56.0 (2026-10-02)
- The tool rail has ten buttons where it had thirteen. Rectangle, Ellipse and the shapes grid are one Shapes button, and Line and Arrow are one Line button; each shows the tool you used last and remembers it after a reload. Click to choose it, click again, right-click, hold or press the right arrow to open the rest. R, O, L, A and S work as before.
- In a window too short for the whole rail, Laser, Annotate, Eraser and Image move behind a ⋯ button, so no tool is ever off screen.
1.55.0 (2026-10-02)
- Annotation mode: press D and draw ink over the board, in red, orange, green, blue or pink (1 to 5). Backspace, Delete or Shift+E wipes every stroke at once, and Cmd+Z brings it back. The ink is never saved or exported and is gone on reload.
- The ink is the same colour in the light and the dark theme, and follows the board when you pan or zoom.
1.54.1 (2026-09-29)
- draw.io labels that read down the page (textDirection=vertical-rl), like the row names in the Citrix sample, open turned a quarter clockwise where draw.io puts them, and go back to draw.io the same way.
- Text that follows a heading or another block in a draw.io label starts its own line, and font sizes up to 200 come in as they are, where they stopped at 96.
- A label with lines of different sizes keeps them in proportion when a resize takes one to the limit of 8 or 200, and a line keeps its own bold, italic, size and colour when you reorder the lines.
1.54.0 (2026-09-29)
- A fourth font, Handwritten: Excalifont, the marker-pen face Excalidraw draws in. It loads the first time you pick it, and an SVG export carries it inside the file so the words look the same anywhere. A draw.io label in Excalifont or Virgil opens in it, and goes back to draw.io as Excalifont.
- Changing a label's font, weight or size from the style bar now resizes its box to fit, where it used to keep the old font's width.
- Labels from draw.io set in Courier, Times or another serif or mono face are sized in that face, where they were sized as if they were sans.
1.53.1 (2026-09-29)
- In the dark theme, background and gradient colours show as clear, deeper fills of the same hue, on the canvas and in their swatches, where they came out almost the colour of the canvas. Saved colours, the light theme and exports are unchanged.
- Four more line colours: grey, brown, teal and navy.
1.53.0 (2026-09-28)
- Labels from draw.io keep their bold, italic, size and colour, for the whole label or line by line: a UML «component» line over a bold name opens that way, stays that way when you retype the other line, and goes back to draw.io the same. Setting Bold or a size from the style bar applies it to every line.
- A draw.io label border (labelBorderColor) is drawn round the label, and exported.
- Turned labels and centred wrapped labels go back to draw.io where they were, and a wrapped label no longer comes back 4px narrower. Labels on draw.io's folded note and cylinder shapes sit where draw.io puts them.
- In the dark theme, the colour swatches show each colour as the dark canvas draws it: the default line colour's swatch is light, as the lines are, where it was near-black on a dark panel.
1.52.0 (2026-09-27)
- 150 of draw.io's UI mockup shapes open drawn, where they were rectangles: iOS (bars, keyboards, sliders, dialogs, the iPad), iOS 7, Android, and the mockup library (buttons, forms, containers, graphics, charts, media players and the rest), each with its draw.io settings. Shapes whose parts are sized from their own text, such as tab bars and button bars, still open as rectangles.
1.51.0 (2026-09-27)
- 90 more of draw.io's engineering shapes open drawn, where they were rectangles: lean mapping (kanbans, supermarkets, shipments, work cells, timelines and more), electrical (switches, sources, batteries, integrated circuits with their numbered pins, and the rest of the logic and signal shapes) and P&ID (valves, instruments, columns and vessels), each with its draw.io settings.
1.50.0 (2026-09-27)
- draw.io's block arrows open drawn, where they were rectangles: 18 of them, from the plain and two-way arrows to callouts, bent, U-turn, striped and tailed arrows, each with its notch, head and tail settings. So does the flowchart's wavy document.
1.49.0 (2026-09-27)
- 107 more of the shapes draw.io draws in code open drawn, where they were rectangles: the rest of draw.io's basic shapes (callouts, frames, plaques, cones, pies, donuts and more), its infographic shapes, the floor plan (walls, doors, windows, stairs), rack and cabinet equipment, and BPMN gateways, data, conversations and markers. Each keeps its draw.io settings, redraws at its new size as draw.io does, and goes back to draw.io as the same shape.
- A BPMN gateway meets connectors on its diamond, as in draw.io.
1.48.0 (2026-09-27)
- Pictures from draw.io's Azure, IBM and Microsoft Cloud and Enterprise libraries open as the pictures themselves, where they were empty boxes: all 1,381 of them, in their own shape and colours. They keep their proportions when resized, go into PNG and SVG exports, and go back to draw.io as the same pictures. The board carries its own copies, so opening one sends nothing anywhere.
- A picture's label sits under it, as in draw.io, when the diagram relies on draw.io's image style to put it there. 13 more labels on the sample pages now land where draw.io puts them.
1.47.1 (2026-09-27)
- A draw.io connector with segmentEdgeStyle and no bends of its own is drawn as draw.io draws it: straight, or with one bend, out of the side of one shape and into the top or bottom of the other. It re-routes the same way when a shape moves, and exports as the same style.
- A board saved before 1.42.0 no longer moves its arrow ends on your first edit. They settle when the board opens, so undoing that edit no longer puts them back.
- The Curve button is no longer shown pressed on a connector that draws no curve, and an arrow whose shapes are missing from a hand-edited file no longer draws a leftover route.
1.47.0 (2026-09-27)
- Labels in draw.io files open where draw.io puts them. A label above, below or beside its shape now follows the cell's alignment and spacing, negative spacing included, and one turned on end outside its shape turns as draw.io turns it. On the 50 sample pages, 46 more labels land within 10px of draw.io's placement.
- Exporting to draw.io keeps a label's side gaps, and free text comes back where it went, turned or not.
- A UML lifeline mirrored in draw.io, with a second head at its foot, opens and exports as one. A swimlane's title band moves with its title when the lane is flipped or turned.
- A centred or right-aligned label with no wrapping box now draws inside its own box, where it is selected and where the SVG export puts it. It was drawn half its width to the left.
1.46.0 (2026-09-27)
- Shapes draw.io draws in code rather than from a stencil open drawn, where they were rectangles: the iOS pin, the simple ribbon, logic gates, BPMN events with every outline and symbol, the basic arc and part of a ring, lean mapping's physical pull, and the generic rack cabinet with its unit numbers, plate and shelf. Lean mapping's electronic information flow connector draws its zigzag.
- Each keeps its draw.io settings, such as a gate's inputs or an event's symbol, redraws at its new size as draw.io does, so a ribbon's notch stays the same width, takes the line colour, fill and width it uses from the style bar, and goes back to draw.io as the same shape.
1.45.0 (2026-09-26)
- Symbols from draw.io's electrical, P&ID, floor plan, basic, BPMN, lean mapping and generic rack libraries open drawn from draw.io's own stencils, where they were plain rectangles: 1,161 of them, loaded only when a diagram uses one. Rack units from Cisco, Dell, HP, HPE Aruba, IBM, Oracle, F5 and APC, another 461, open drawn as icons.
- Unlike icons, a symbol takes a new line colour, fill and line width from the style bar, turns the way draw.io turned it, and stretches when you resize it, apart from the few draw.io keeps in proportion. Icons keep their own colours, now also when selected together with other shapes.
- Exporting to draw.io writes each symbol back as draw.io's own, in its colours and width.
1.44.1 (2026-09-26)
- The isometric square keeps its proportions, as it does in draw.io: dragging any handle grows or shrinks the whole shape, and its selection box fits it. Before, a side handle stretched the box and left the shape the same size in the middle of it.
1.44.0 (2026-09-26)
- Eight more draw.io shapes open as themselves: the document, the cube, the isometric square, the two logic gates draw.io calls Or and And, the delay and the cross that ends a sequence lifeline, which all opened as rectangles, and the double ellipse, which opened as a single one. The Shapes button draws all eight too.
- A draw.io waypoint, the small point several connectors meet at, opens as a dot in its line colour, with its connectors still attached.
- Exporting to draw.io writes each of the eight back as the same draw.io shape, turned the same way, with its name where it was. A waypoint goes back as a small ellipse.
1.43.0 (2026-09-26)
- Names in draw.io diagrams sit where draw.io puts them: a sequence lifeline's name in its head, a frame's name in its tab, a package's name in its tab or under it, and a swimlane's title in its title band.
- Swimlane titles that draw.io writes up the side are turned to read up the side here too, and a label on a turned shape turns with it.
- Exporting to draw.io keeps these names where they are.
1.42.1 (2026-09-26)
- Press Z or / with something selected to put the style bar away, dot and all, so nothing sits over what you are moving. It stays away while you select other things, and the same key brings it back.
1.42.0 (2026-09-26)
- Connectors from draw.io follow draw.io's own routes. A right-angle connector with no bends of its own is routed the way draw.io routes it, leaving each box from the side draw.io picks, and follows its boxes when they move. Sequence diagram messages come out level, and state and flowchart connectors turn where they do in draw.io.
- Curved connectors from draw.io keep their shape: they are drawn through their points as a smooth curve, and one with no points is straight, as in draw.io.
- Arrows meet ellipses, diamonds, triangles, hexagons, parallelograms and trapeziums on their outline rather than at the corner of the box around them. This applies to arrows already on your boards too.
- Connectors that end on a precise spot of a shape in draw.io, including an offset from a corner, land on that spot.
1.41.0 (2026-09-25)
- Tables from draw.io are readable. Their words were drawn in the border colour, so a pale border gave pale text; they now take the diagram's own text colour. A class box keeps its coloured header over a white body, and the line between its fields and its methods, instead of an empty row.
- Labels at the ends of a connector, such as 0..1 and 1..5 in a class diagram, sit at their ends instead of piling up in the middle, and every connector label keeps its place along the line.
- Text boxes with a fill or a border keep them, as in a gitflow legend or a threat model's tags, and a label keeps its own background colour.
- Diagrams built from a template open with their values filled in: %name% and the like are replaced by the shape's own data, as draw.io shows them. A folded container opens folded, with its contents hidden.
- Shapes placed inside another shape by proportion, such as the parts inside a composite structure's ellipse, open where draw.io puts them.
- Folders, notes, modules, frames and lifelines keep their own tab, fold, pin and head sizes, so a small component icon is a component icon again.
- Multi-line labels written in draw.io no longer gain a blank line between each pair of lines.
1.40.0 (2026-09-25)
- The UML shapes are back in the Shapes menu, in a UML section: folder, partial rectangle, note, final state, frame, lifeline, actor, module, required interface and provided interface. They came out in 1.34.1 because several icons did not look like the shapes they name; a folder and a lifeline showed as plain squares. Each icon is now drawn from its shape at a proper size.
- A final state is a filled disc inside a ring, as in UML. New ones are filled in the line colour, and one opened from a draw.io file that fills it that way no longer comes out as two empty rings.
- A new partial rectangle has its top and bottom sides only, as in draw.io. Before, it had all four and looked like an ordinary rectangle. Sides can still be switched on and off behind the "⋯".
- Round UML parts (the final state, an actor's head, the ball of a provided interface) are drawn as true circles. They were slightly square.
1.39.0 (2026-09-24)
- Closing a board asks first. The "×" on a tab used to delete the board at once, with no way back. Now it asks, with three answers: Cancel, which is also what Escape and Enter do; Save a copy, then close, which downloads the board file before deleting it; and Delete board.
- Selecting a tab no longer moves the others. The selected tab's name was bold, which made the tab wider and pushed every tab after it sideways, so a quick second click could land on another tab's "×". The selected tab is now marked by colour alone, and the "×" sits behind its own divider, a little further from the name.
1.38.3 (2026-09-24)
- Pictures work in a private Safari window. Safari refused to store them there, so a pasted or dropped picture was turned away with a storage warning, and a board file opened with its pictures as grey placeholders. Pictures are now stored in a form Safari keeps, and pictures saved by earlier versions still open.
- Dragging a row or column line on a turned table no longer slides the table sideways. The table grew about its middle, so the side you were not dragging moved too; it now stays where it was.
- The text alignment buttons are now called Align text left, Align text centre and Align text right, so a screen reader does not confuse them with the Align centres button that lines up shapes.
1.38.2 (2026-09-24)
- Table cells on a phone or tablet: with a cell selected, drag a finger from it across the others to select a range, then press and hold for Merge and the other table items. A drag from any other cell still moves the table.
- A tap on the Table size grid now picks the cell you tapped. On touch the grid grew under your finger, which moved it, and the tap took the cell below: 4 x 3 came out 4 x 4. On a touch screen the grid now opens at 8 by 8 and stays that size.
- Pictures keep their colours in the dark theme in Safari too. Safari cannot apply a filter while drawing, so a photo showed as its negative there; it is now inverted pixel by pixel instead, once per picture.
- Paste in the right-click menu takes table cells copied in Excel or Google Sheets. The browser asks for permission the first time, and if you say no, the menu pastes the cells last copied on the board.
1.38.1 (2026-09-23)
- The hand tool has a clearer open-palm icon, and the pointer over the canvas is an open hand at rest and a closed hand while you drag, drawn the same on every system.
1.38.0 (2026-09-23)
- A hand in the tool rail (H): drag with it to pan, with a mouse or one finger. Before, panning needed the space bar, the middle button, a wheel or two fingers.
- A dark theme, from the sun and moon at the top right. It follows your system until you choose. The drawing goes dark too, with black lines shown light and colours keeping their hue; the board keeps the colours you drew in, and exports stay light.
- A full screen button at the top right, as the PDF editor has. The top bar stays on screen, so the same button, or Esc, takes you back.
1.37.3 (2026-09-23)
- Delete in the right-click menu empties the selected table cells and keeps the table, as the Delete key does. It used to delete the whole table.
1.37.2 (2026-09-23)
- Cut, Copy and Paste in the right-click menu work on table cells. With cells selected they used to act on the whole table, so Cut deleted it. Copy and Cut also put the cells on the system clipboard, ready for a spreadsheet. The menu's Paste places the cells last copied or cut on this page; to paste cells from a spreadsheet, use Cmd or Ctrl+V, since reading the system clipboard from a menu makes the browser ask permission.
1.37.1 (2026-09-23)
- Table cells work from the keyboard. With a cell selected, the arrow keys move to the next cell, stepping over a merged cell as one, Shift and an arrow key grow the selection, and Enter or F2 opens the cell for typing. The arrows used to nudge the whole table instead.
- Copy, cut and paste between tables. Select cells and press Cmd or Ctrl+C, then select a cell in any table and paste: the text fills from that cell rightwards and down, and stops at the table's edge. Cut empties the cells it copied. The cells travel as the tab-separated text spreadsheets use, so a block also pastes into Excel or Sheets, and from them into a table here.
- The Table grid in the Shapes button no longer loses track of the arrow keys when the mouse is resting on it. The grid unfolds and grows under the pointer, and each time it took the cell that arrived there for a new choice, so Right then Down could land on the wrong size.
- Enter in the Table grid now places the table at once, in the middle of the view. It used to pick the size and then wait for a click on the canvas, which the keyboard has no way to make.
- An arrow from a draw.io diagram that was attached to a row of a table now meets that row, not the table's top or middle.
1.37.0 (2026-09-23)
- Export as draw.io, in the Export menu and the main menu, saves the board as a .drawio file that draw.io opens and edits. It is written in this browser; nothing is uploaded.
- Shapes go out as the draw.io shapes they came from, so they stay editable there. Text grouped with a shape becomes that shape's label again, and the label under an icon goes back under it. Arrows stay attached, with their bends, routing and ends. Tables keep their rows, columns and merged cells, and pictures go with the file.
- Pens, icons, and the pentagon, octagon, chevron and braces, which draw.io has no matching shape for, go out as drawings inside the file. They look the same in draw.io, but an icon there is a drawing rather than a library icon, so a library's own options such as an AWS icon's colour do not apply to it.
- Opening a draw.io file reads more of it: drawings made with draw.io's freehand tool open as drawings rather than empty rectangles, a text's typeface opens as sans, serif or mono, a dotted line stays dotted, and a table with merged cells keeps every column where it was.
1.36.0 (2026-09-23)
- Tables can be edited. Click a table, then click a cell to select it, and shift-click another to select everything between. Double-click a cell or the title to type in it. Delete empties the selected cells and leaves the table.
- Right-click a cell for draw.io's table items: insert a column before or after, delete a column, insert a row above or below, delete a row, and merge or unmerge cells. A row or column added inside a merged block widens the block, where draw.io would leave it covering different cells.
- Drag the line between two rows or two columns to resize them. On its own the table grows or shrinks with the drag; hold Shift to take the space from the next row or column instead, Cmd or Ctrl to change every one by the same amount, or both to make them all equal. Nothing goes under 20.
- A new table: the Shapes button has a Table grid under the shapes. Point at the size you want, up to 20 by 20, tick Title for a header band, then click the canvas to place it or drag to size it. The arrow keys and Enter work in the grid too.
- The Arrange buttons are called Align left edges, Align centres and so on. They used to share their names with the text alignment buttons, so a screen reader announced two different controls the same way.
1.35.0 (2026-09-23)
- The style bar is a row of chips now: Colour, Stroke, Text style, Shape, Connector, Effects and Arrange. Click one and that group's controls drop down under it, one group at a time. A chip shows only when what you have selected can use it, and the Colour chip is a dot of the current stroke colour so the bar still says what is set.
- That replaces the row of swatches and the "⋯" button beside them. The bar is about a third of the width it was, over a canvas it floats on top of. Changing a colour costs one click more than it did.
- Rounded corners, a new control beside Routing: it cuts every corner of a right-angle route with a 10px fillet, the way an imported draw.io connector with rounded corners already drew. A straight or curved line has no corner to cut.
- The Arrow ends rows no longer run off the side of the panel. Start and End each have a line of their own, so nothing scrolls sideways and the Size field is where it should be.
1.34.1 (2026-09-22)
- The Shapes button no longer has a UML group. Several of its ten icons and the shapes they drew did not match the UML shapes they were named for. UML shapes in a draw.io diagram still open, draw, move, save and export as before.
1.34.0 (2026-09-22)
- A connector's route can be reshaped now, lines included. On a right-angle route, and on an Elbow, each leg has a handle at its middle: drag it and the leg slides sideways while the ends stay put. The first drag on an Elbow gives it bends of its own.
- A connector with bends that are not right angles has a handle on each bend and a faint one halfway along each leg. Drag a bend to move it, drag a faint one to add a bend there, and drop a bend on its neighbour or into line with the legs either side to remove it. Hold Alt to keep a bend that has come into line.
- Right-click a connector for Add waypoint, which puts a bend where you clicked, Remove waypoint on a bend's handle, and Clear waypoints. Double-clicking a bend removes it too. Clear waypoints on a selected shape clears the connectors attached to it.
- Clicking an attached arrow to select it no longer detaches it. A click counted as dragging the arrow away from its shapes, so selecting one to restyle it cut both ends loose; only a drag that moves the arrow detaches it now.
- This is draw.io's own editing, with two things left out: draw.io snaps a dragged bend to its 10px grid, where the board snaps to nearby shapes as it does for a dragged end, and draw.io lets you drag a straight connector's line to add a bend, where on the board that drag moves the connector.
- Where draw.io offers Remove Waypoint and it would do nothing, on a route's last leg or a straight route, the board offers Add waypoint instead.
1.33.1 (2026-09-22)
- A line now has the Routing buttons an arrow has: Straight, Curve and Elbow. A line drawn from one shape to another also attaches to both and follows them when they move, as an arrow does.
- A line is now an arrow with no heads, which is what draw.io's own line is. Its style panel shows the arrowhead pickers set to none, so a head can be added to a line later.
- Lines on boards saved before this open as the same kind of headless arrow and draw exactly as they did. A line of that age that had picked up Elbow from an earlier arrow, and drew straight anyway, still opens straight.
1.33.0 (2026-09-20)
- A connector drawn with bends in draw.io now keeps them. It opens with the same corners it had there, routed the way draw.io routes it, and it moves with its shapes, exports, saves and reopens.
- A connector whose file asks for rounded corners gets them: each corner is cut with a 10px fillet, or half the shorter leg where a leg is too short for one. The 10px is fixed; an arc size set on the connector in draw.io is not read.
- A stored bend is a hint rather than a place the line goes through, which is draw.io's own rule and the reason an imported diagram matches what draw.io drew. A line can pass some way off a bend you can see in draw.io's own editor, and it is the same line draw.io paints.
- You cannot reshape an imported bend yet. It draws, moves, exports and saves; dragging it comes next.
- On a bent connector, Elbow keeps the route it opened with, and Straight draws straight lines through its stored bends. Curve draws the same straight lines, because the board has no curve through several points.
- Curved connectors and the two older right-angle edge styles keep the route they had before, so a diagram using them looks exactly as it did in 1.32.0.
1.32.0 (2026-09-20)
- An entity-relationship diagram opened from draw.io now comes in as tables you can keep: one element per entity, with its title, its columns, its rows and any merged cells, rather than a pile of rectangles. It moves, resizes and restyles as a whole, and it saves and reopens.
- Both of draw.io's table shapes are read: the dedicated table and the older stacked swimlane its own ER templates mostly use. The PK and FK column comes in as the table's first column, and every foreign-key connector still reaches the table it pointed at.
- A partial rectangle can now have no sides at all. Before, switching off the last one switched every side back on, so the control refused the click; the format can say "no sides" now and the toggle no longer has to.
- The Chen-notation entity and relationship boxes open as an editable rectangle and diamond with their labels, instead of both as plain rectangles.
1.31.0 (2026-09-20)
- Ten UML shapes in the Shapes picker, which now has two groups: a folder, a partial rectangle, a note, a final state, a frame, a lifeline, an actor, a module, a required interface and a provided interface.
- A partial rectangle has four side toggles, so it can be stroked on one edge or three. That is what a class diagram's rows are made of.
- A shape can now carry a stroke-only detail beside its filled body: an actor's limbs, a lifeline's dashed tail, a module's two pins. Both halves draw the same on the canvas, in Sketch, in the PNG and in the SVG export.
- draw.io diagrams bring these in. A folder was importing as a plain rectangle, and it is the commonest UML shape in the diagrams we tested: 69 of them in 26 files. Class boxes come in as a rectangle plus a header band, grouped.
1.30.1 (2026-09-20)
- A gradient can now fade to one of the seven stroke colours as well as the eight background tints. A fade from white to a pale tint is faint, and the darker colours make the fade read at a glance.
1.30.0 (2026-09-19)
- A shape can fade from its background to a second colour, running down, up, right or left, and anything on the board can be made partly see-through or given a drop shadow. All three are behind the style bar's "⋯", under Gradient, Opacity and Shadow, and the next shape you draw takes them too.
- draw.io diagrams keep their gradients, opacity, shadows and sketch style, and draw.io's built-in colour styles, such as plain-green and plain-red, open in their own colours with their fades.
1.29.1 (2026-09-19)
- The arrow end picker now looks like one. Each end is a box showing its type by name, with a chevron to open the list, under a section renamed Arrow ends. The list has a title and names the type under the pointer, and an end with no marker no longer shows an empty size box.
1.29.0 (2026-09-19)
- Each end of an arrow can carry its own marker: the board's own arrowhead, nothing, or any of draw.io's 34 line ends, such as a filled or hollow triangle, a diamond, a dot or an entity-relationship crow's foot. Choose them under Arrowheads behind the style bar's "⋯", in one row for the start and one for the end, and give each its own size.
- draw.io diagrams keep their arrowheads. A hollow triangle opens hollow, and the line stops at its base instead of running through it.
- A sketch-style arrow that used to fill an open head with its own fill colour now draws that head unfilled: a marker is always filled in the line's own stroke colour.
1.28.1 (2026-09-19)
- A board or draw.io file now opens even when this browser cannot store its pictures, for example when the disk is full. It used to fail without a word; now it opens and says that some pictures may show as empty frames.
- The offline answer in the FAQ now says that opening a draw.io file needs its importer and icon pictures to have loaded once.
1.28.0 (2026-09-18)
- draw.io icons open as the icons themselves. AWS, Azure, Google Cloud, Cisco, Citrix, network, Office and the other icon libraries draw their own pictures in their own colours instead of outlined boxes, and each picture is saved inside the board, so it survives saving, reopening and export. An icon moves, resizes in proportion and takes arrows like any shape, and keeps its own colours. AWS 3D shapes still open as outlines.
- An AWS group box keeps its tint, and shows its icon in the corner with its label clear of it.
1.27.1 (2026-09-17)
- draw.io shapes from the basic, flowchart, electrical and infographic libraries open filled in their own colour. Only icons from libraries such as AWS, Azure, Cisco and Office open as outlines.
1.27.0 (2026-09-17)
- Opens draw.io diagrams. Choose "Open board file" or drop the file on the canvas: .drawio, .xml, and .drawio.svg or .drawio.png exports with the diagram inside. Each page becomes a board, with its shapes, labels, and arrows attached to the shapes they join.
- A saved board with elbow or curved arrows now opens with them still elbowed or curved. They had been coming back straight.
- An arrow can have no heads. Choose "No heads" under Arrowheads: it looks like a line but stays attached to the shapes at its ends, which a line does not.
- A label can have a background colour. Select it and choose one under Background, and a line passing behind it no longer runs through the words.
- draw.io diagrams built from stencil libraries open closer to the original. Icons open as outlines in their own colour with their labels under or beside them, connectors with no arrowheads stay attached to their shapes, connectors that end on a text label attach to it instead of being left out, and connector labels sit on white.
1.26.0 (2026-08-27)
- A pen loop you close by drawing back to where you started can now be filled, the same way a rectangle or circle can. No new tool: just draw the loop and it offers a fill colour once it recognises itself as closed. Click inside a filled loop to select it, same as any other shape.
- Holding Ctrl or Cmd while dragging a selection now duplicates it instead of moving it — the copy tracks your hand, and the original stays where it was.
1.25.0 (2026-08-17)
- "How it works" is now a set of tabs rather than one long scroll: local-first, boards and files, drawing tools, style, editing, moving around, and these release notes. References between them are links, so a mention of the style bar takes you to it and opens the tab it lives on.
- Fixed a run of text on that page that was showing raw escape codes instead of quotation marks and dashes, and a passage describing how arrows attached to shapes before anchors shipped.
1.24.0 (2026-08-17)
- An arrow stays attached where you put it. Draw one into the top of a box and it holds that spot when the box is moved, resized or turned. The shaft stretches and bends to reach it, instead of the end sliding round to whichever side is nearest. Drag an end along a shape to move the attachment point.
1.23.2 (2026-08-17)
- Text alignment works again. Choosing centre or right had been quietly doing nothing since Align arrived: the two share a name internally, and the text one was being thrown away on its way to the label.
- A menu item that is unavailable no longer swallows the press. Clicking a greyed-out item, such as "Detach arrow" on an arrow that is attached to nothing, closes the menu instead of leaving it sitting over the canvas.
1.23.1 (2026-08-14)
- A bound arrow can be moved again. It was being pulled straight back to the shape while you dragged it, so it could be neither detached nor moved. Drag one away now and it lets go of whatever it was attached to.
- The shape an arrow is about to attach to is outlined while you draw or drag the end, so binding is something you can see coming and aim for rather than something that happens on release.
- Drag an arrow's end off a shape to detach that end, or use "Detach arrow" in the right-click menu to let go of both.
1.23.0 (2026-08-14)
- Arrows attach to shapes. Draw one from one box to another and it stays joined: move either box and the arrow follows, stretching and re-aiming as you drag. Drag an end onto a shape to attach it, or off to let go; deleting a shape leaves its arrows behind as plain arrows.
1.22.1 (2026-08-14)
- The eraser has a pointer that looks like an eraser, instead of the crosshair every drawing tool uses. A crosshair says "this makes something", which is the wrong promise for the one tool that removes things.
- Clearer icons for Align and Distribute: boxes lined up against a rule rather than bare lines, so which edge you are aligning to is legible at a glance.
1.22.0 (2026-08-14)
- Align a selection to any edge or centre, and spread three or more out with even gaps between them, under the style bar's "⋯" whenever enough is selected for them to mean anything.
- An eraser, on E. Sweep over anything to remove it; the whole sweep is a single undo, a locked element is left alone, and touching one shape of a group takes the group.
1.21.0 (2026-08-14)
- Save a board to a file and open it again, both in the burger menu. Until now a board lived only in this browser, so clearing site data or moving to another machine lost it, and the only way out was a picture. The file carries the drawing and its images together, and opening one makes a new board rather than replacing what you are working on.
1.20.0 (2026-08-14)
- Press and hold on a tablet or phone to open the canvas menu, which is where grouping, locking, stacking order, flipping, duplicate and delete live. They were reachable only by right-click or a keyboard, so on a touch device they were not reachable at all.
1.19.0 (2026-08-14)
- A dashed or dotted arrow is now dashed or dotted right to its point. The head used to stay solid, which read as the head not matching the line it was on. It is drawn at a tighter pattern than the shaft, so a dotted head is still recognisably a head rather than three specks.
1.18.1 (2026-08-14)
- The style bar's collapse dot no longer looks like a palette swatch: it holds its colour inside a ring, so it reads as the control it is rather than as an eighth colour you could pick.
- The colour picker carries a "+", so it is obvious which circle opens a picker and which are colours you have already used.
1.18.0 (2026-08-14)
- Colours you pick yourself now collect in their own row beside the picker, ready to use again, and are remembered for every board. The fixed palette is left exactly as it is, because every colour in it has been checked for legibility, and a picked colour sitting among them would blur that line.
1.17.1 (2026-08-14)
- Choosing a custom colour now closes the style popover, as choosing a swatch always did. It was staying open over the canvas and swallowing every click after, including the one that would have selected the shape you wanted the colour on.
1.17.0 (2026-08-14)
- Eight background tints instead of four, and a full colour picker for both the stroke and the background, behind the style bar's "⋯", beside the swatches.
- Arrows can carry a head at the end, at the start, or at both ends at once.
1.16.1 (2026-08-14)
- Dragging out a text box now shows its outline while you drag, so you can see how wide the label will be before you let go.
1.16.0 (2026-08-14)
- Drag with the text tool to set how wide a label should be, and it wraps inside that box. Clicking still drops a label that grows with what you type.
- Labels can be set in a sans, serif or monospace face, made bold, italic or underlined, and aligned left, centre or right, all under the style bar's "⋯" with the text tool or a label selected.
- The laser pointer is half as thick, which reads as a pointer rather than a marker.
1.15.2 (2026-08-14)
- The laser trail is drawn as one smooth tapered stroke instead of a chain of straight segments, so a scribble no longer looks broken and dragged.
- It also stays put for longer: the trail holds at full strength for about a second before it begins to fade, rather than starting to go the moment it is drawn.
1.15.1 (2026-08-14)
- The laser pointer comes in five colours. Pick one from the style bar with the laser tool active, and it is remembered for every board. Its button also has an icon that looks like a laser rather than a sun.
- Fixed dragging a side handle of a flipped shape: it slid the whole shape toward the pointer instead of stretching it.
1.15.0 (2026-08-14)
- A laser pointer, on K. Drag to leave a red trail that fades within a second, for pointing at something while you talk over a board, so it is never saved, never undoable and never exported.
- Flip what you have selected with Shift+H and Shift+V, or from the right-click menu. Several shapes at once mirror their positions as well, so a whole diagram reverses; labels move with it but keep reading the right way round.
1.14.2 (2026-08-13)
- The alignment guides that appear while you drag are dashed rather than solid, so they read as a hint about where the shape has landed instead of as a line drawn on the board.
1.14.1 (2026-08-13)
- A copy of a grouped drawing is now a group of its own. It was joining the group it was copied from, so clicking either the original or the duplicate selected both of them at once.
1.14.0 (2026-08-13)
- The style bar can be collapsed to a single dot, so it stops covering the drawing while you work. Click the dot to bring it back, or press the full stop key; it remembers which way you left it.
1.13.1 (2026-08-13)
- Finishing a shape hands the board back to the select tool, so the handles it just drew can be grabbed straight away. They were being drawn while the pointer was still a crosshair, and a press started another shape instead of bending or resizing the one in front of you.
1.13.0 (2026-08-13)
- The bend handle on a line or arrow now slides along it as well as away from it, so the curve can swell nearer one end instead of always bulging in the middle.
- The style bar no longer sits on top of the rotate handle when it opens below a shape.
1.12.0 (2026-08-13)
- A shape you have just drawn is now selected, so the colours and widths in the style bar apply to it. They used to change what the *next* shape would look like and leave the one in front of you untouched.
- A selected line or arrow is framed by its own three handles rather than by a rectangle around it.
1.11.2 (2026-08-13)
- The top bar now stays on screen however far the page is scrolled. It used to scroll away with the document, leaving the board with no menu, no tabs and no Export.
1.11.1 (2026-08-13)
- With the tool rail dragged to the right-hand edge, the shapes grid and the tooltips now open to its left instead of off the side of the canvas.
1.11.0 (2026-08-13)
- Corners can be sharp, round or extra round. Pick one under the style bar's "⋯". It applies to rectangles and to every straight-edged shape.
- The tool rail can be dragged anywhere over the canvas by the grip at its top, and stays where you put it.
1.10.0 (2026-08-13)
- Thirteen more shapes behind the rail's new Shapes button (or press S): diamond, triangle, parallelogram, trapezium, pentagon, hexagon, octagon, chevron, block arrows, a cylinder and a pair of braces.
- Each is picked along its own outline, so clicking the empty corner of a triangle's box no longer selects it.
1.9.0 (2026-08-13)
- The style controls now float beside whatever you have selected, so the swatch and its effect are in one glance. Colour and thickness sit on the bar; background, sketch style and dash are behind its "⋯".
- A new top bar: a J tile, your boards in a card of their own, and one Export control offering PNG or SVG. Zoom and a "?" for the guide moved to the bottom-right corner.
1.8.0 (2026-08-13)
- A new look: the board's own typeface, a softer palette and a dot grid that pans and zooms with the canvas.
- The drawing tools moved to a column down the left-hand edge, and the two bars at the top became one.
1.7.0 (2026-08-13)
- Shapes, drawings and images can be rotated: select one and drag the round handle below it. Hold Shift to snap to 15°.
- A turned shape is selected, resized and framed along its own edges rather than the upright box around it.
1.6.0 (2026-08-12)
- Lines and arrows can be bent: select one and drag the handle in its middle to bow it either way.
- They now carry handles on their own end points rather than on the box around them, so dragging an end moves that end.
1.5.0 (2026-08-12)
- Group things together with Cmd+G so a diagram moves as one, and Cmd+Shift+G to release them.
- Lock an element from the right-click menu to make it a backdrop you can draw over without nudging it; "Unlock everything" is on the empty-canvas menu.
- Undo and redo buttons now float in the corner of the canvas, so they can be reached without a keyboard.
1.4.0 (2026-08-12)
- Pinch to zoom and slide two fingers to pan, so the board can actually be navigated on a tablet.
- Bringing a second finger down mid-stroke abandons that stroke instead of leaving a stray mark.
1.3.1 (2026-08-12)
- Fixed Cmd+Shift+] and Cmd+Shift+[ (bring to front, send to back), which did nothing because holding Shift changes what the bracket keys report.
1.3.0 (2026-08-12)
- Dragging a selection box now takes only the shapes it fully surrounds, so you can pick one shape out of a stack instead of collecting its neighbours.
- The pointer shows what a drag will do before you press: arrows along the axis a handle stretches, and a four-way arrow over anything you can move.
1.2.0 (2026-08-12)
- Select everything with Cmd+A, and nudge what you have selected with the arrow keys, holding Shift for a bigger step.
- Frame the whole board with Shift+1, or just your selection with Shift+2. Shift+0 goes back to 100%.
- Resize several things at once, and stretch one axis at a time using the new handles on each edge.
- Right-click the canvas for copy, duplicate, delete and stacking order.
- Move things up and down the stack one step at a time with Cmd+] and Cmd+[.
1.1.0 (2026-08-12)
- The board now tells you which version you are using, and what changed in it.
1.0.0 (2026-08-09)
- Draw with a pen, rectangles, ellipses, lines, arrows and text, in a clean or a sketched style.
- Paste, drop or pick images, and export the whole board as a PNG or an SVG.
- Keep several boards as tabs, with undo, copy and paste, and alignment guides while you drag.