How to Read a Sequence Diagram: A Plain-English Beginner Guide
- Sequence diagrams show WHO communicates with WHOM and in WHAT ORDER
- Read top-to-bottom (time) and left-to-right (participants)
- Solid arrows are requests, dashed arrows are responses
- Boxes around messages are control flow (loop, if-else, parallel)
Table of Contents
A sequence diagram is a picture of a conversation between systems. Read from top to bottom (that is time passing), follow the arrows between vertical lines (those are the things having the conversation). If you can follow a text message thread between two people, you can read a sequence diagram. Here is everything you need to know in 10 minutes.
Every concept below is followed by a small example you can see rendered in our free sequence diagram tool. Copy any code block into the tool to see it visualized.
The Core Idea in One Sentence
A sequence diagram shows who sends what to whom, in what order. That is the entire concept. The visual rules exist to make "who", "what", and "order" immediately clear at a glance.
In practice, a sequence diagram has three elements:
- Things (participants, actors) — drawn at the top as boxes or stick figures, with vertical dashed lines hanging below them
- Messages — horizontal arrows between the vertical lines
- Time — represented by top-to-bottom order; messages at the top happen first
That is it. Everything else is a refinement: different arrow styles for different message types, boxes around groups of messages to show loops or conditions, notes for extra explanation. But the foundation is just: things, messages between them, top-to-bottom time.
Participants and Actors: Who Is in the Conversation
At the top of every sequence diagram, you will see boxes or stick figures side by side. These are the participants in the interaction.
- Box (participant): represents a system, service, component, database, or any non-human thing
- Stick figure (actor): represents a human user
Below each one, a vertical dashed line (called a lifeline) extends down through the rest of the diagram. This line represents that participant's existence over time. Everything between two lifelines is communication between those two participants.
Example:
sequenceDiagram
actor User
participant App
participant Server
Paste that into our tool and you will see User as a stick figure on the left, App and Server as boxes in the middle and right. Three vertical lines hang below them. Those lines represent three things in the conversation. Nothing has happened yet because we have not added any messages.
The order of participants left-to-right is intentional. Usually the initiator of the interaction is on the left, and the diagram reads left-to-right as the request travels deeper into the system.
Arrows: The Messages Being Sent
Horizontal arrows between lifelines are messages. Someone is telling someone else to do something, or responding to a previous request.
The style of the arrow tells you what kind of message it is:
- Solid line, filled arrowhead: A request. "Hey, do this thing."
- Dashed line, filled arrowhead: A response. "Here is the result."
- Open (hollow) arrowhead: Asynchronous, fire-and-forget. "I am telling you this, but I am not waiting for a reply."
- Arrow ending in X: The message failed or was rejected.
Example:
sequenceDiagram
actor User
participant App
participant Server
User->>App: Click login
App->>Server: POST /login
Server-->>App: 200 OK + token
App-->>User: Show dashboard
Reading this diagram: the user clicks login (first message, top). The app sends a POST request to the server (second message). The server responds with 200 OK (dashed arrow, because it is a response). The app shows the user the dashboard. Read top-to-bottom, this is exactly what happens during login.
The arrow labels (the text on each arrow) describe what the message actually is. This is where you include method names, HTTP verbs, event names, or plain-English descriptions.
Sell Custom Apparel — We Handle Printing & Free ShippingBoxes Around Messages: Loops, If-Else, and Parallel
Sometimes the interaction is not just a straight sequence. There are loops, conditional paths, and things happening in parallel. Sequence diagrams show these as labeled boxes wrapped around groups of messages.
Loop means the enclosed messages repeat:
loop Every 5 seconds
App->>Server: Health check
Server-->>App: OK
end
When you see a box labeled "loop" with a condition, the messages inside happen multiple times until the condition is no longer true.
Alt means alternatives: if one condition is true, do X; otherwise do Y.
alt User exists
Server-->>App: 200 User data
else Not found
Server-->>App: 404 Not found
end
The "alt" block is divided by a dashed line. Above the line is the first alternative, below is the other. In real flows, only one of the two will actually happen.
Par means two things happening simultaneously:
par Email and SMS
Server->>EmailSvc: Send email
and
Server->>SmsSvc: Send SMS
end
A "par" block splits into multiple tracks, all of which execute at the same time. This is how you show work that does not depend on being done sequentially.
Notes: The Annotations That Add Context
Sometimes you will see text annotations attached to lifelines or spanning multiple participants. These are notes, and they exist to explain things that the messages alone do not convey:
Note over User,App: User is already logged in Note right of Server: Redis cache hit
Notes are informational. They do not represent messages being sent. They tell the reader something the diagram author wants them to know: "this section assumes X", "this operation uses Y", "timing here is critical".
When reading a sequence diagram, treat notes as helpful context but not part of the flow. The messages show what happens. The notes explain why it happens that way or what assumptions are being made.
Well-placed notes often explain performance considerations ("this call is cached, so most requests never reach the database"), security assumptions ("all communication here is encrypted"), or implementation details that affect how the reader should interpret the diagram.
Putting It All Together: Reading a Real Diagram
Here is a complete sequence diagram for an online order flow. Read it top to bottom and see if you can describe what happens:
sequenceDiagram
actor Customer
participant Web
participant Orders
participant Payment
participant Inventory
Customer->>Web: Click Buy Now
Web->>Orders: Create order
Orders->>Inventory: Check stock
alt In stock
Inventory-->>Orders: Available
Orders->>Payment: Charge card
alt Payment OK
Payment-->>Orders: Confirmed
Orders->>Inventory: Reserve item
Orders-->>Web: Success
Web-->>Customer: Order confirmed
else Payment failed
Payment-->>Orders: Declined
Orders-->>Web: Error
Web-->>Customer: Payment failed
end
else Out of stock
Inventory-->>Orders: Unavailable
Orders-->>Web: Error
Web-->>Customer: Sold out
end
What the diagram tells you:
- Customer clicks Buy Now on the Web app
- Web asks Orders to create an order
- Orders checks with Inventory whether the item is in stock
- If in stock: charge the card. If payment works, reserve the item and confirm. If payment fails, show an error
- If out of stock (alt branch): show sold out
All in 15 lines of diagram code. The same information in prose would be 200 words of "first the customer... then the web app calls... which then checks with..." Sequence diagrams compress complex flows into visual form you can absorb in seconds. For more examples, see our 8 real-world sequence diagram examples.
Practice by Creating Your First Diagram
Copy any example above into the editor. See it rendered. Modify it. Build confidence in minutes.
Open Free Sequence Diagram MakerFrequently Asked Questions
What is a sequence diagram in simple terms?
A sequence diagram shows a conversation between systems or people. Each thing gets a vertical line. Messages between them are horizontal arrows. Time flows top to bottom. Reading top-to-bottom tells you the order events happened in.
How do I read the arrows in a sequence diagram?
Solid arrows with filled heads are requests ("do this"). Dashed arrows with filled heads are responses ("here is the result"). Open arrowheads mean asynchronous messages where the sender does not wait for a reply. X at the end means the message failed.
What do the boxes around messages mean?
Boxes labeled loop mean those messages repeat. Boxes labeled alt show alternatives (if-else). Boxes labeled opt show optional messages that may or may not happen. Boxes labeled par show messages happening in parallel.
What is the difference between a participant and an actor in a sequence diagram?
Participants are systems, services, or components (shown as boxes). Actors are human users (shown as stick figures). The distinction helps readers quickly see which parts of the flow involve human interaction versus system-to-system communication.

