Needs \usepackage{tikz} and \usetikzlibrary{arrows.meta,decorations.markings}. 50 px of the drawing = 1 cm; change the x/y options to rescale. Label text is passed through verbatim, so $W^s$ works.
Drawings kept here survive reloads but live only in this browser on this device. Use Save for real files.
| Trajectory T | Draw freehand; the stroke is converted to a smooth cubic Bézier path. The direction you draw in is the direction of the flow. Ends close to a sink/source, a saddle terminal, a periodic orbit or a boundary snap to it (magnet). An end snapped the wrong way round reverses the trajectory automatically when possible. |
| Joining | Drop the free end of a trajectory on the free start of another one (or draw a new one that starts/ends there) and the two are merged into one trajectory. |
| Simplify S | Refits the selected curve(s) with about 30% fewer nodes; press repeatedly to straighten out wobbly hand-drawn curves. The default amount of smoothing for freehand strokes is set in the panel on the right (nothing selected). |
| Bézier pen P | Click to add corner points, click-drag to pull out smooth handles. Finish with Enter or a double-click, cancel with Esc. |
| Equilibria 1–4 | Sink, source, saddle (4 terminals: unstable separatrices point out, stable ones point in), saddle-node (only when structural stability is off). |
| Periodic orbit C | Click for a default ellipse, or draw a closed loop. Stable = solid, unstable = dashed, semi-stable = solid with a dashed shadow on the repelling side. |
| Boundary B | Draw a curve the flow crosses in one direction (shown by small arrows). A closed curve is created as inflowing (trapping region); flip it in the properties panel. |
| Region G | Drag a rectangle; a small bar offers Copy image (exactly that rectangle, as a picture for other apps) and Copy sketch (the elements lying completely inside, for pasting into this tool). |
| Label L | Click to place text. Inside $…$: _ subscript, ^ superscript, \alpha etc. |
| Select V | Click or drag a rectangle to select; Shift adds. Drag to move. Corner handles scale uniformly (Shift: free, Alt: about the centre), edge handles stretch one direction, the round handle on top rotates (Shift: 15° steps). |
| Nodes | A single selected curve shows its Bézier nodes (squares) and handles (dots). Drag them; Alt-drag a handle to break smoothness. Double-click a curve to insert a node, double-click a node to toggle smooth/corner, select a node and press Del to remove it. Dragging a bound end of a trajectory detaches it; drop it near a target to re-attach. |
| Saddles | Select a saddle and drag the diamond handles to rotate it or change the angle between its eigendirections. |
| Keys | Del delete, Ctrl+D duplicate (never refused, so you can drag the copy into place), S simplify, R reverse trajectory/orbit, Ctrl+A select all, arrow keys nudge, Ctrl+Z/Ctrl+Shift+Z undo/redo, Esc back to Select. |
| View | Mouse wheel zooms around the cursor; pan with Space+drag, the middle mouse button or the hand tool H; 0 fits the drawing. |
Copy / Ctrl/⌘+C copies the selection as a sketch, Ctrl/⌘+X cuts, Paste / Ctrl/⌘+V inserts it (selected and slightly offset, attachments among the copied elements kept). This works between tabs and drawings; a copy is also kept in the browser, so pasting still works where the browser refuses to read the clipboard. Copy image / I puts a PNG of the selection (or of the whole drawing if nothing is selected) on the clipboard for note-taking and other apps; on iPad/Android it falls back to the share sheet if the clipboard refuses.
Save / Save as… / Open… and the exports open a file dialog in Chrome and Edge (folder and name of your choice; Save then keeps writing to the same file). Safari and Firefox do not offer this to web pages, so there files go to the Downloads folder. Separatrices (trajectories attached to a saddle or saddle-node terminal) are drawn thicker; override per trajectory with Line. Arrow size is a drawing-wide setting in the right panel.
With Refuse crossings on, an edit is undone if it makes curves cross (trajectories, separatrices, periodic orbits), runs a curve through an equilibrium, crosses a boundary against its direction, or attaches a trajectory the wrong way (e.g. flowing out of a sink). With it off, these are only flagged in red. Index warnings (equilibria inside a periodic orbit or closed transversal must have index sum 1) are always only warnings.
Structurally stable on: only hyperbolic elements, and saddle connections are refused. Off: saddle-nodes (transversally stable/unstable), semi-stable periodic orbits and saddle connections / homoclinic loops become available.