Flowchart Symbols Standard
Source: heflo.com/blog/flowchart-symbols
Extracted: 2026-02-21 | This is the SINGLE SOURCE OF TRUTH for all flowchart shapes.
24 Standard Flowchart Symbols
1. Arrow (Flow Line)
- Shape: Line with directional arrowhead
- Usage: Connection symbol used to indicate a link between two other symbols and the direction of flow
- Note: This is an EDGE, not a node
2. Terminator (Start / End)
- Shape: Oval / rounded rectangle (stadium)
- Usage: Marks the start or end of a process. Labeled "Start", "End", or "Exit"
- D2 shape:
oval
3. Process
- Shape: Rectangle
- Usage: Represents a specific task, action, or operation that needs to be performed
- D2 shape:
rectangle
4. Decision
- Shape: Diamond
- Usage: Represents a point where a choice must be made — typically a yes/no or true/false question
- D2 shape:
diamond
5. Delay
- Shape: "D"-shaped semicircle (flat side on left)
- Usage: Represents a pause or waiting period in a process
- D2 shape:
queue
6. Data (Input / Output)
- Shape: Parallelogram (slanted rectangle)
- Usage: Represents information entering or leaving the system — input data or output results
- D2 shape:
parallelogram
7. Document
- Shape: Rectangle with wavy bottom edge
- Usage: Represents a single document generated, received, or used in a process
- D2 shape:
page
8. Multiple Documents
- Shape: Stacked rectangles with wavy bottom edges
- Usage: Indicates several documents involved in a step
- D2 shape:
page + style.3d: true
9. Subroutine (Predefined Process)
- Shape: Rectangle with double vertical bars on left and right sides
- Usage: Represents a named process or function that is defined elsewhere
- D2 shape:
step
10. Preparation
- Shape: Hexagon
- Usage: Represents a setup or initialization step before the main process begins
- D2 shape:
hexagon
11. Display
- Shape: Rectangle with concave (curved inward) left edge
- Usage: Represents information being shown to the user — usually on a screen or monitor
- D2 shape:
rectangle (approximation; D2 has no native display shape)
12. Manual Input (Manual Entry)
- Shape: Rectangle with slanted top edge (trapezoid, narrower at top)
- Usage: Represents a step where a user manually inputs data into the system
- D2 shape:
parallelogram (approximation; D2 has no native manual-input shape)
13. Manual Loop
- Shape: Rectangle with notched top corners (resembles an upside-down trapezoid)
- Usage: Represents a repetitive process that is performed manually until a condition is met
- D2 shape:
hexagon (approximation)
14. Loop Limit
- Shape: Pentagon (flat bottom, angled top corners)
- Usage: Represents the end point or boundary of a loop, controlling how many times it repeats
- D2 shape:
package (approximation)
15. Stored Data
- Shape: Open-ended rectangle with curved right side (magnetic tape / drum shape)
- Usage: Represents information that is saved for later use — general persistent storage
- D2 shape:
stored_data
16. Connector (On-page)
- Shape: Small circle with a label inside
- Usage: Used to link different parts of a flowchart that are on the same page
- D2 shape:
circle
17. Off-page Connector
- Shape: Pentagon (home-plate shape, pointing down)
- Usage: Shows that the flow continues on a different page or section of the flowchart
- D2 shape:
package
18. Summing Junction
- Shape: Circle divided into four equal quadrants (+ inside circle)
- Usage: Used when multiple process paths must converge into a single flow
- D2 shape:
circle (with "+" label)
19. AND (Or Junction)
- Shape: Circle divided diagonally into four sections (X pattern inside circle)
- Usage: Used when multiple conditions or inputs must all be true or complete before proceeding
- D2 shape:
circle (with "x" label)
20. Collate (Merge)
- Shape: Hourglass (two triangles meeting tip-to-tip)
- Usage: Used when two or more inputs are brought together to be organized, matched, or compared
- D2 shape:
diamond (approximation; D2 has no hourglass shape)
21. Sort
- Shape: Diamond with a horizontal line through the middle
- Usage: Used when a process step involves arranging items in a specific order
- D2 shape:
diamond (with "Sort" label)
22. Offline Storage
- Shape: Solid triangle pointing downward
- Usage: Used when a process involves storing data or documents in a physical or offline location
- D2 shape:
stored_data (approximation; D2 has no triangle shape)
23. Database
- Shape: Cylinder (like a barrel/can viewed from the side)
- Usage: Represents structured data storage, typically in a relational database
- D2 shape:
cylinder
24. Internal Storage
- Shape: Rectangle with a small square notch cut from the upper-left corner
- Usage: Represents data held within the process or system's internal memory (RAM, cache)
- D2 shape:
square (approximation; use thick inner border convention)
Classification by Frequency of Use
Tier 1 — Core (use in 90%+ of flowcharts)
| Symbol |
Shape |
D2 |
When to use |
| Terminator |
Oval |
oval |
Start / End of any process |
| Process |
Rectangle |
rectangle |
Any action, task, operation, computation |
| Decision |
Diamond |
diamond |
Yes/No branch, conditional check |
| Data (I/O) |
Parallelogram |
parallelogram |
Input entering or output leaving |
| Arrow |
→ line |
edge -> |
Direction of flow between symbols |
Tier 2 — Common (use in ~50% of flowcharts)
| Symbol |
Shape |
D2 |
When to use |
| Document |
Wavy-bottom rect |
page |
Report, file, form generated/used |
| Database |
Cylinder |
cylinder |
SQL/NoSQL data storage |
| Subroutine |
Double-bar rect |
step |
Call to a predefined function/subprocess |
| Preparation |
Hexagon |
hexagon |
Setup, initialization, config loading |
| Connector |
Circle |
circle |
Link flowchart parts on same page |
| Stored Data |
Curved-side rect |
stored_data |
General persistent data (disk, cache) |
Tier 3 — Specialized (use when needed)
| Symbol |
Shape |
D2 |
When to use |
| Delay |
D-shape |
queue |
Wait, pause, timeout |
| Manual Input |
Slant-top rect |
parallelogram |
User types data into system |
| Display |
Curved-left rect |
rectangle |
Show output on screen |
| Multi-Document |
Stacked pages |
page + 3d |
Batch of documents |
| Off-page Connector |
Pentagon |
package |
Flow continues on another page |
| Internal Storage |
Notched square |
square |
RAM, memory, cache |
| Loop Limit |
Flat-bottom pentagon |
package |
Loop boundary / max iterations |
| Manual Loop |
Notched rectangle |
hexagon |
Repeat until human says stop |
Tier 4 — Rare (specialized diagrams only)
| Symbol |
Shape |
D2 |
When to use |
| Summing Junction |
Circle + |
circle |
Multiple paths merge |
| AND |
Circle x |
circle |
All conditions must be met |
| Collate |
Hourglass |
diamond |
Compare/match multiple inputs |
| Sort |
Diamond + line |
diamond |
Arrange items in order |
| Offline Storage |
Triangle |
stored_data |
Physical/offline archive |
Shape-to-Meaning Quick Lookup
| Shape |
Meaning |
Standard Name |
| Oval |
Start or End |
Terminator |
| Rectangle |
Do something |
Process |
| Diamond |
Ask a question |
Decision |
| Parallelogram |
Data in/out |
Data (I/O) |
| Wavy-bottom rect |
A document |
Document |
| Cylinder |
Database |
Database |
| Hexagon |
Setup / prepare |
Preparation |
| Double-bar rect |
Call subroutine |
Subroutine |
| D-shape |
Wait / delay |
Delay |
| Curved-side rect |
Saved data |
Stored Data |
| Circle |
Connector |
Connector |
| Pentagon |
Off-page link |
Off-page Connector |
| Arrow line |
Flow direction |
Arrow |
Color Standard
Every symbol has a fixed hue tied to its semantic role. These colors are used as fill/stroke in D2 and as category colors in React Flow.
Node Color Palette
| Hue |
Fill |
Stroke |
Font |
Applies to |
| Violet |
#EDE9FE |
#7C3AED |
#4C1D95 |
Terminator (Start/End) |
| Blue |
#DBEAFE |
#2563EB |
#1E3A8A |
Process (action, task) |
| Amber |
#FEF3C7 |
#D97706 |
#78350F |
Decision (branch), Loop Limit |
| Slate |
#F1F5F9 |
#475569 |
#1E293B |
Data I/O |
| Indigo |
#E0E7FF |
#4F46E5 |
#312E81 |
Document, Multi-Document |
| Orange |
#FFEDD5 |
#EA580C |
#7C2D12 |
Subroutine, Manual Input, Manual Loop |
| Pink |
#FCE7F3 |
#DB2777 |
#831843 |
Preparation (setup, init) |
| Teal |
#CCFBF1 |
#0D9488 |
#134E4A |
Database, Internal Storage |
| Teal-light |
#F0FDFA |
#14B8A6 |
#134E4A |
Stored Data |
| Stone |
#F5F5F4 |
#78716C |
#292524 |
Delay, External (ext.) |
| Emerald |
#D1FAE5 |
#059669 |
#064E3B |
Display, AI/LLM (ext.) |
| Gray |
#F3F4F6 |
#9CA3AF |
#374151 |
Connector, Off-page Connector |
| Neutral |
#FAFAFA |
#D1D5DB |
— |
Group container |
Edge Color Palette
| Edge Type |
Color |
Hex |
Width |
Dash |
Opacity |
| Primary Flow |
Black |
#111827 |
3px |
solid |
0.85 |
| Gate Pass (Yes) |
Green |
#16A34A |
2px |
solid |
0.80 |
| Gate Fail (No) |
Red |
#DC2626 |
2px |
dash 5 |
0.70 |
| Data Flow |
Gray-Blue |
#6B8DB2 |
1.5px |
solid |
0.50 |
| Skip / Depth Jump |
Slate |
#64748B |
1.5px |
dash 5 |
0.40 |
| Feedback |
Purple |
#7C3AED |
1.5px |
dot 2 |
0.45 |
Edge Types — 6 Standard Types
1. Primary Flow (main path)
- Style: Black solid, 3px
- Usage: The main sequential path through the flowchart. THE ONLY edge visible in Overview.
- Label: None (unlabeled)
2. Gate Pass (Yes branch)
- Style: Green solid, 2px
- Usage: The "Yes" / "Pass" / "True" outgoing edge from a Decision diamond.
- Label:
pass (or yes, true)
- Rule: Every binary Decision MUST have exactly 1 green Pass edge + 1 red Fail edge.
3. Gate Fail (No branch)
- Style: Red dashed, 2px
- Usage: The "No" / "Fail" / "False" outgoing edge from a Decision diamond. Typically loops back to a rework step.
- Label:
fail (or no, false)
- Rule: Pairs with Gate Pass. Red = stop/rework/retry.
4. Data Flow
- Style: Gray-blue thin solid, 1.5px
- Usage: Data or artifact transfer between nodes. Does NOT compete visually with the primary path.
- Label: Name of data (e.g.,
"report.csv", "config")
5. Skip / Depth Jump
- Style: Slate gray dashed, 1.5px
- Usage: Skip ahead, depth-level jump, or cross-reference link. Neutral, non-directional feel.
- Label: Optional (e.g.,
"skip to", "see also")
6. Feedback
- Style: Purple dotted, 1.5px
- Usage: Iteration, retry, teachback, or loop-back edge. Always points upstream.
- Label: Optional (e.g.,
"retry", "teachback")
- Rule: Max 1 feedback edge in Overview. NEVER self-loop.
Gate Design Rule
A binary Decision (diamond) always has exactly 2 outgoing edges:
┌─── pass (green solid) ──→ [Next Step]
[Decision]
└─── fail (red dashed) ──→ [Rework / Retry]
The color alone tells the reader "pass" or "fail" at a glance — no need to read labels.