A free, text-based UML diagram creator with export functionality. Create sequence and class diagrams using simple syntax.
✨ Now compatible with websequencediagrams.com syntax!
Alice->Bob: or Alice -> Bob:)npm install
npm run dev
npm run build
npm run preview
sequence:
title User Login Flow
actor User
participant Server
participant Database
User->Server: Login Request
note over Server: Validates credentials
Server->Database: Query User
Database-->Server: User Data
Server-->User: Login Success
sequence:
title Payment Processing
actor Customer
participant Shop
participant PaymentGateway
Customer->Shop: Checkout
note left of Customer: Enters card details
Shop->PaymentGateway: Process Payment
note over PaymentGateway: Validates card
PaymentGateway-->Shop: Success
note right of Shop: Updates inventory
Shop-->Customer: Order Confirmed
sequence:
title Authentication
actor User
participant Server
User->Server: Login
alt [valid credentials]
Server->Database: Get User
Database-->Server: User Data
note over User, Server: Session created
Server-->User: Success
else [invalid]
Server-->User: Failed
end
sequence:
User->Server: Get Items
loop [for each item]
Server->Database: Query Item
Database-->Server: Item Data
end
Server-->User: All Items
class:
Shape {
#color: string
#x: int
#y: int
+draw()
+getArea()
}
Circle extends Shape {
-radius: double
+draw()
+getArea()
}
Rectangle extends Shape {
-width: double
-height: double
+draw()
+getArea()
}
Canvas has Shape {
+shapes: List
+addShape()
}
Window owns Canvas {
+title: string
+show()
}
Shows: inheritance (extends), aggregation (has), composition (owns), and all visibility modifiers (+, -, #).
Compatible with websequencediagrams.com syntax
sequence:title My Diagram - Add a title to your diagramparticipant Name - Declare a participant (shown as a box)actor Name - Declare an actor (shown as a stick figure)// or # are ignored-> = Solid line with filled arrowhead (caller waits)->> = Solid line with open arrowhead (caller doesn't wait)--> = Dashed line with open arrowhead (returning data)Alice->Bob:Message and spaced Alice -> Bob: Message workExample:
sequence:
title My System
actor User
participant Server
User->Server: Login Request (compact syntax)
Server --> User: Success Response (spaced syntax)
note left of Actor: Text - Note to the leftnote right of Actor: Text - Note to the rightnote over Actor: Text - Note over a participantnote over A, B: Text - Note spanning multiple participantsUse \n in any text (messages, notes, titles) to create line breaks:
title My Diagram\nWith Multiple Lines
User->Server: Send\nMultiline\nMessage
note over User: This is\na multiline\nnote
loop [condition] ... end - Iterationalt [condition] ... else [condition] ... end - Conditionalsopt [condition] ... end - Optional flowpar ... end - Concurrent executionbreak [condition] ... end - Exception/exitcritical [condition] ... end - Atomic regionclass:+ for public members- for private members# for protected members+fieldName: type+methodName()Solid Lines:
ChildClass extends ParentClass → Solid line with hollow triangleContainer has Item → Solid line with hollow diamond (weak "has-a")Owner owns Part → Solid line with filled diamond (strong "owns-a")Dashed Lines:
MyClass implements IInterface → Dashed line with hollow triangleClassA uses ClassB → Dashed arrow (temporary usage)This app is ready to deploy to Vercel, Netlify, GitHub Pages, Cloudflare Pages, or any static hosting service.
📖 See DEPLOYMENT.md for complete deployment instructions.
npx vercel
The app includes a vercel.json configuration file for optimal deployment with proper SPA routing support.
MIT