One line, one message
Write 'Customer -> App: Submits credentials' and both actors appear as navy headers with dashed lifelines, joined by a solid arrow carrying the text. '-->' draws a dashed reply. The text after the colon is optional: 'App -> DB' on its own draws an arrow with an italic 'Message…' placeholder. 'App -> App: Validates input' is a self message, a small loop off the actor's own lifeline.
Actors are created the first time they are named, left to right in order of appearance. Put '.actor Payment API' near the top to fix a column's position before any message uses it. Columns spread apart on their own to fit the longest label between them.
Shorthands for the same two actors
Once a message exists, a line that starts with '>' repeats the previous sender, receiver and arrow style — no names needed. A line that starts with '<' flips the direction and draws it dashed, which is what a reply usually is. Either character before any message exists is an error, because there is nothing to continue. Both shorthands work inside .loop and .alt blocks.
Loops and alternatives
.loop label opens a repeated block. .alt label opens the first of several alternative paths, and .else label starts the next path of the same .alt. Indent the messages inside by two spaces. A block closes when you dedent, or explicitly with .end, which closes the innermost open block from any indent. Blocks nest.
In the diagram each block is a rounded box around its rows with LOOP or ALT and the label in the corner, and a dashed 'ELSE · label' divider between alternatives. An .else outside an .alt, or inside a .loop, is an error with its own explanation. .note text pins a comment icon to the right of the last lifeline; click it to read the note.
Errors that explain themselves
Plain prose is not drawable here. A line the parser cannot read gets a pink background in the editor and the header chip reads 'Check line N'. A panel under the diagram lists up to four problems with their line numbers and what to write instead — 'From -> To: what happens', '.actor needs a name', '.end has no open .loop or .alt to close' — and counts the rest as '+ N more'. Hover a line in the editor and the matching message, box or note turns violet in the diagram, which scrolls to keep it in view; hover a message in the diagram and the editor highlights that line and scrolls to it.
What is different from a process
Sequence documents use their own parser. The process commands (.if, .then, .go, .do, .back) mean nothing here, and an arrow line in a process is just a step. The audit runs on processes only. Share links, embeds, image export and version history work the same; the text export is a .sequence.runic file. The AI chat panel and the sidebar's 'Create sequence diagram with AI' both write this syntax.
How to use it
- Create a diagramIn the sidebar under Sequences, click + ('New sequence diagram'). The document is named 'Diagram N' and opens with a seven-line starter you can overwrite. Clear it and the empty pane reads 'Nothing to draw yet' and offers 'Insert an example' instead.
- Write the first messageType 'Customer -> App: Signs in'. Two headers, two lifelines and one arrow appear in the pane on the right.
- Reply with the shorthandOn the next line type '< Shows the dashboard'. The arrow runs from App back to Customer and draws dashed.
- Reuse actor names from the menuStart a line with the first letters of an existing actor and pick it: Runic appends ' -> '. After the arrow, pick the receiver and it appends ': '. Up to eight matches are listed.
- Branch with .altType a dot and choose .alt from the menu: Runic inserts '.alt ', an indented blank line, '.else ' and another indented line. Fill in the labels and the messages. Enter after a .loop, .alt or .else line indents the next line for you.
- Fix what the panel flagsIf a line cannot be drawn, read the message under the diagram and rewrite the line as 'From -> To: text', a '>' or '<' shorthand, or one of the six commands.
- Zoom, fullscreen, shareUse − and + in the header to zoom between 50% and 150%, the Fullscreen button to hide everything but the diagram (Esc returns), and Share for the link, embed code, PNG, SVG, clipboard, Markdown or the text file.
Commands & shortcuts
| A -> B: text | solid arrow from A to B; both actors are created on first use |
| A --> B: text | dashed reply arrow |
| A -> A: text | self message — a loop on A's own lifeline |
| A -> B | arrow with no label; shows an italic 'Message…' placeholder |
| > text | same sender, receiver and arrow style as the previous message |
| < text | the reply: previous pair reversed, drawn dashed |
| .actor Name | declare an actor now to pin its column order |
| .loop label | a repeated block; indent its messages two spaces |
| .alt label | first alternative path |
| .else label | next path of the open .alt, at the .alt's indent |
| .end | close the innermost open .loop or .alt; dedenting also closes it |
| .note text | comment icon to the right of the last lifeline |
| . at line start | menu of the six sequence commands — ↑ ↓ move, Enter or Tab inserts, Esc closes |
| Tab / Shift+Tab | indent or outdent by two spaces |
Tips
- Declare actors with .actor in the order you want the columns before writing any message — otherwise first mention wins.
- Write the request path with -> and > first, then add < replies; long labels push the columns apart on their own.
- Put the condition in the .alt and .else labels ('credentials valid', 'credentials invalid') — they print in the box corners.
- Several notes in a row become one icon with a count; click anywhere else to close an open note.
- Keep each message on one line — a long label wraps and just makes its row taller.
Questions
Do I have to close every block with .end?
No. Dedenting back to the block's indent closes it. .end is for when you want the close to be visible; it closes the innermost open block from any indentation.
Can I change the order of the actors later?
Yes. Add .actor lines at the top in the order you want. A declared actor takes its column before any message mentions it.
Why is my line marked 'Not an interaction'?
Every line must be a message ('From -> To: text'), a shorthand ('> text' or '< text') or one of the six commands. Prose on its own has nothing to draw. The panel under the diagram shows the exact form to use.
Is there a limit on sequence diagrams?
Once paid plans are switched on, the free plan includes 10 sequence diagrams per account; while billing is not configured there is no cap at all. The language is the same on every plan.