Skip to content
LocalOnly

Diagram Editor & Flowchart Maker

New

Draw flowcharts and diagrams with 18 drag-and-drop shapes, export PNG or SVG, or share a private link. Nothing is uploaded.

Everything is processed locally in your browser

Draw flowcharts, process maps and system diagrams in your browser. Drag any of 18 shapes, from rectangles to standard flowchart symbols, onto the canvas, then connect them with elbow, straight or curved connectors that stay attached when you move a shape. The format panel sets fills, lines, arrowheads and text, and the arrange tools align, distribute and reorder shapes. Undo goes back 100 steps. When the diagram is ready, export a PNG at up to 4x or an SVG with real text, save a .diagram.json file to open later, or share a private link. Nothing is uploaded or stored, and no account is needed.

Features

  • 18 shapes: 10 general shapes and 8 standard flowchart symbols
  • Drag a shape onto the canvas, or click it to add it in the middle of the view
  • Connectors stay attached to their shapes: elbow, straight or curved, with labels
  • Arrowheads at either end: arrow, triangle, diamond, circle or none
  • Solid, dashed or dotted lines from 0.5 to 8 px wide
  • 10 quick styles, plus fill, line colour and shadow for each shape
  • Text size, bold, italic, alignment and colour for shape labels; size and colour for connector labels
  • Align, distribute and reorder shapes, or type an exact X, Y, width and height
  • Undo and redo up to 100 steps, copy, paste, duplicate and a right-click menu
  • Keyboard shortcuts, arrow keys to nudge, and Tab to move between items
  • 10 px grid with snap, zoom from 10 to 200 percent, minimap and full screen
  • Export PNG at 1x to 4x or SVG with real text, or copy the diagram as an image
  • Save a .diagram.json file to open again later, or share a private link
  • Nothing is uploaded or stored: the diagram stays in this browser tab

How to use it

  1. 1

    Add shapes

    Drag a shape from the library onto the canvas, or click it to place it in the middle of the view. Double-click a shape to type its label.

  2. 2

    Connect them

    Select a shape to show its connection dots, then drag from a dot onto another shape. On a touch screen, tap a dot and then a dot on the other shape.

  3. 3

    Export, save or share

    Export a PNG or SVG image, save a .diagram.json file to edit later, or create a private share link.

Examples

Two shapes and one connector

Each shape has an id, kind, position, size and label. Each connector names the two shapes it joins and their sides: t, r, b or l.

Input

{
  "type": "localonly-diagram",
  "version": 1,
  "title": "Order flow",
  "nodes": [
    { "id": "start", "kind": "terminator",
      "x": 0, "y": 10, "width": 140, "height": 50,
      "label": "Order placed" },
    { "id": "pack", "kind": "rectangle",
      "x": 200, "y": 0, "width": 140, "height": 70,
      "label": "Pack items" }
  ],
  "edges": [
    { "id": "e1", "source": "start", "sourceHandle": "r",
      "target": "pack", "targetHandle": "l",
      "routing": "orthogonal", "label": "" }
  ]
}

Output

Two shapes in a row, 60 px apart:
"Order placed", a Start / end shape, and
"Pack items", a rectangle.
An elbow connector joins the right dot of
the first to the left dot of the second and
ends in a triangle arrowhead.
No style is given, so both shapes use the
defaults: white fill, dark outline and
14 px text.

Shape and connector styles

A file stores only the style fields that differ from the defaults, so the outline colours and line width here stay at their defaults.

Input

{
  "type": "localonly-diagram",
  "version": 1,
  "title": "Cache lookup",
  "nodes": [
    { "id": "api", "kind": "rounded",
      "x": 0, "y": 0, "width": 160, "height": 80,
      "label": "API server",
      "style": { "fill": "#dbeafe", "bold": true } },
    { "id": "cache", "kind": "cylinder",
      "x": 260, "y": -20, "width": 110, "height": 120,
      "label": "Cache",
      "style": { "fill": "#f1f5f9", "shadow": true } }
  ],
  "edges": [
    { "id": "e1", "source": "api", "sourceHandle": "r",
      "target": "cache", "targetHandle": "l",
      "routing": "straight", "label": "read",
      "style": { "lineStyle": "dashed",
        "startArrow": "circle", "endArrow": "arrow" } }
  ]
}

Output

"API server", a rounded rectangle with a
light blue fill and bold text, and "Cache",
a Database cylinder with a light grey fill
and a shadow.
A straight dashed connector labelled "read"
joins them, with a circle at the start and
an arrow at the end.

How this diagram editor works without a server

Where your diagram lives while you work

The editor runs entirely in your browser tab. Shapes, connectors, the undo history and the clipboard are held in the tab's memory, and drawing, exporting and creating a share link all happen on your device, so the diagram never travels over the network. No part of the diagram is written to local storage, cookies or IndexedDB. The site keeps only its list of recent tools and, if you create a share link, a note that you shared one, never the diagram itself.

That also means the diagram lasts only as long as the tab. You can open another page of this site and come back in the same tab without losing it, but closing or reloading the tab clears it, and the browser asks first when there are unsaved changes. Save downloads a file you can keep. On phones, the browser may reload a tab while you are in another app, so save often.

The .diagram.json file format

Save downloads a plain JSON file named after the diagram title, such as order-processing-flow.diagram.json. It lists every shape with its kind, position, size, label and style, and every connector with the two shapes and sides it joins, its routing, label and style. Style fields that match the defaults are left out, so files stay small and easy to read in a diff.

Open reads the file back, and so does dropping it onto the editor. Every value is checked as it loads: shapes of an unknown kind and connectors with a missing end are skipped, colours must be six-digit hex codes such as #2563eb, and sizes, font sizes and line widths are kept within their limits. Labels are always treated as plain text. Files up to 20 MB open, with up to 1,000 shapes and 2,000 connectors.

How PNG and SVG export work

Export builds an SVG from the diagram data rather than taking a screenshot. Each shape outline, connector, arrowhead and label becomes an SVG element, with labels as real text, and the image covers the diagram plus a small margin. You can export the whole diagram, or only the selected shapes with the connectors between them.

For a PNG, the browser draws that SVG onto a canvas at 1x, 2x, 3x or 4x, on a white or transparent background. Browsers limit how big a canvas can be, so a very large diagram at a high scale is scaled down to fit. Labels use the system's sans-serif font, the same one the canvas shows, so the PNG matches the screen.

Working with the keyboard

Shortcuts work only while focus is inside the editor, so keys pressed elsewhere on the page keep their normal meaning, and text fields keep their own keys. Click the canvas or move to it with Tab, then use Tab and Shift+Tab to select each shape and connector in turn; after the last item, Tab moves on to the rest of the page. Arrow keys move the selection by 1 px (10 px with Shift), Enter or F2 edits the label, and Delete removes the selection with its connectors.

Shapes can be added, selected, edited, moved, styled and deleted without a mouse: a shape tile adds its shape when you press Enter, and the format panel is reached with Tab. Drawing a connector and moving a connector end still need a mouse, pen or touch. Zoom and fit skip their animation when your system asks for reduced motion, and ? opens the full list of shortcuts.

Reference

Keyboard shortcuts

Use Cmd instead of Ctrl on a Mac. Shortcuts work while focus is inside the editor.

ActionShortcut
Undo, redoCtrl+Z, Ctrl+Shift+Z or Ctrl+Y
Copy, cut, pasteCtrl+C, Ctrl+X, Ctrl+V
DuplicateCtrl+D
Delete the selectionDelete or Backspace
Select allCtrl+A
Add to the selectionShift+click
Select the next or previous itemTab, Shift+Tab
Move the selectionArrow keys, Shift+arrow for 10 px
Edit the labelEnter or F2
Stop editing, clear the selectionEscape
Bring forward, send backwardCtrl+], Ctrl+[
Bring to front, send to backCtrl+Shift+], Ctrl+Shift+[
Zoom in, zoom outCtrl+=, Ctrl+-
Zoom to 100 percent, fit to screenCtrl+0, Shift+1
Pan the canvasSpace+drag or middle-button drag
Save, openCtrl+S, Ctrl+O
ExportCtrl+Shift+E
Show all shortcuts?

Which tool should you use?

The diagram should live next to the code as text
Use the PlantUML Editor. You describe the diagram in text, a layout engine places the shapes, and every change shows up in code review as a text diff.
The diagram belongs inside a Markdown document such as a README
Use the Markdown Editor with a Mermaid code block. The diagram stays as text in the document, and GitHub draws it where the file is shown.
You want to place each shape yourself and get an image
Use this editor. You decide where every shape and arrow goes, style them, and export a PNG or SVG for slides and documents. Keep the .diagram.json file to change it later.
Someone else needs to edit the diagram
Send the saved .diagram.json file, or a share link for smaller diagrams. Both open here with every shape and connector still editable, which a PNG or SVG is not.

Use cases

  • Mapping a business process or an approval flow before automating it
  • Drawing the flowchart of an algorithm or a support script
  • Sketching a system overview with services, a database and arrows for a design document
  • Making a diagram image for slides, a wiki page or a README
  • Planning the steps and decisions of a sign-up or checkout flow
  • Diagramming internal systems that must not be uploaded to an online service

Troubleshooting common errors

A connector does not attach when you drop it

Why: It was dropped on empty paper, back on the shape it started from, or between two dots that already have a connector. A shape cannot connect to itself, and two connectors cannot join the same pair of dots.

Fix: Drop the end on another shape, either on a dot or on its body, which uses the nearest dot. To join the same two shapes again, start from a different dot.

Delete, Ctrl+Z or the arrow keys do nothing

Why: Shortcuts work only while focus is inside the editor. After a click on the page around it, keys go to the page, and in the format panel or a text field they keep their usual meaning.

Fix: Click an empty part of the canvas and try again. If a label is open for editing, press Escape first.

The PNG is smaller than the scale you chose

Why: Browsers limit how large a canvas can be. A big diagram at 3x or 4x would pass that limit, so it is scaled down to fit.

Fix: Export at a lower scale or only the selected shapes, or use SVG, which has no pixel limit.

Text in the SVG looks different on another computer

Why: The SVG keeps labels as real text, and the computer that opens it draws them with its own system font.

Fix: Export a PNG when the image must look the same everywhere.

Open says the file is not a LocalOnly diagram

Why: Open reads only .diagram.json files saved by this editor. Other JSON files, and files from other diagram apps, use different formats.

Fix: Open a file saved with Save. A diagram made in another app has to be redrawn here.

Copy as image is greyed out or missing

Why: The canvas is empty, or this browser cannot put images on the clipboard.

Fix: Add a shape first, or use Export to download a PNG and insert that.

Limitations

  • Opens only its own .diagram.json files. There is no .drawio or Visio import.
  • No groups, containers or swimlanes.
  • Connectors have no waypoints. Elbow, straight and curved routes are drawn for you and cannot be bent by hand.
  • No layers or pages: each file holds one diagram.
  • Drawing a connector needs a mouse, pen or touch, and moving a connector end needs a mouse or pen.
  • Copy and paste work only inside this tab. To move a diagram elsewhere, use Save, Share or Copy as image.
  • Text style applies to the whole label, so one label cannot mix bold and normal text.
  • The canvas stays light in dark mode, so exports look the same as the screen.
  • Nothing is stored. Closing or reloading the tab clears the diagram, and phone browsers may reload a background tab, so save often.
  • A diagram holds up to 1,000 shapes and 2,000 connectors, and a share link up to about 100,000 characters of diagram data.

Frequently asked questions

Learn more

Command Palette

Search for a tool or command