Home › Developer Tools › PlantUML Editor

PlantUML Editor

Type PlantUML and watch the diagram update as you write. Start from a sequence, class, activity, state, use case, component, ER, mind map or Gantt template, then download a clean SVG or a high-resolution PNG. Everything is drawn in your browser, so private architecture diagrams never leave your computer.

Last updated:

Ln 1
Preview
Loading the diagram renderer…

Diagrams are drawn in your browser: the PlantUML code is converted on your device and rendered as SVG, so nothing is uploaded. The server URL is only created, never opened, so you can check a diagram with the official PlantUML renderer if you choose.

Advertisement
Advertisement

How to use the PlantUML Editor

  1. Pick a template such as Sequence or Class, or paste your existing @startuml … @enduml code.
  2. Edit the code. The preview updates as you type; anything that cannot be drawn is listed under the editor with its line number.
  3. Choose a style and zoom the preview to check details.
  4. Download SVG or PNG, or save the source with Download .puml.
  5. Reuse it elsewhere: Copy as Mermaid gives a code block GitHub renders natively, and Copy share link stores the diagram in a URL.

PlantUML syntax cheat sheet

Every diagram sits between @startuml and @enduml (mind maps use @startmindmap, Gantt charts @startgantt). The diagram type is recognized from the statements you use.

DiagramKey statements
Sequenceactor User, participant "Web app" as App, User -> App : Log in (solid), App --> User : OK (dashed reply), alt / else / end, loop, note right of App : text, activate App
Classclass Order { - id : int + total() : float }, interface, abstract class, enum, A <|-- B inheritance, A *-- B composition, A o-- B aggregation, A ..> B dependency, "1" o-- "*" cardinality
Activitystart, :Do something;, if (ok?) then (yes) / else (no) / endif, while (more?) / endwhile, repeat / repeat while (again?), fork / fork again / end fork, |Lane|, stop
State[*] --> Idle, Idle --> Busy : start, state Busy { … }, state Check <<choice>>, -- between concurrent regions
Use caseactor Customer, usecase "Pay" as UC1 or (Pay), rectangle Shop { … }, UC1 ..> UC2 : <<include>>
Component[API], component, node, database, cloud, package "Name" { … }, () "HTTP" interface, A --> B : label
ERentity User { *id : int <<PK>> -- name : text }, User ||--o{ Order : places
Mind map* Root, ** Child, *** Grandchild (the number of stars sets the level)
GanttProject starts 2026-03-02, [Design] lasts 5 days, [Build] starts at [Design]'s end, [Launch] happens at [Build]'s end, -- Phase --

Arrow and relation reference

CodeWhereMeaning
-> / -->SequenceSynchronous message / return message (dashed)
->>SequenceAsynchronous message (open arrowhead)
->xSequenceLost message (ends in a cross)
++ / -- after a messageSequenceActivate the target / deactivate the sender
<|-- / <|..ClassInheritance (extends) / realization (implements)
*-- / o--ClassComposition (filled diamond) / aggregation (hollow diamond)
--> / ..>Class, componentAssociation / dependency
||--o{ERExactly one to zero or more (crow's foot)
-up->, -left->AllLayout hints; accepted and treated as a normal arrow

Tips

  • Use aliases for long names: participant "Payment service" as Pay keeps every message line short and readable.
  • Keep diagrams in Git as .puml files next to the code they describe; text diffs show exactly what changed.
  • Break up large diagrams. A sequence diagram with more than about eight participants or a class diagram with more than fifteen classes is easier to read as two diagrams.
  • Write left to right direction at the top of use case, component, class and state diagrams for a horizontal layout.

Frequently asked questions

What is PlantUML?

PlantUML is a widely used open-source language for describing UML and other diagrams as plain text. A line such as Alice -> Bob : Hello becomes a sequence diagram arrow. Because diagrams are text, they can be versioned in Git, reviewed in pull requests and generated by scripts.

Is my diagram sent to a server?

No. The official PlantUML renderer is a Java program, usually reached through the plantuml.com server, which receives your diagram text. This editor instead converts the PlantUML code in your browser and draws it with the open-source Mermaid engine, so the text stays on your device. Only the renderer library itself is downloaded from a public CDN.

Does it support every PlantUML feature?

It covers the syntax most diagrams use: sequence, class, activity (new syntax), state, use case, component and deployment, entity relationship, mind map, WBS and Gantt diagrams. Styling with skinparam, sprites, !include files and some rarer elements are skipped, and the editor lists every skipped line. The layout is computed by a different engine, so spacing and arrow routing can differ from plantuml.com. For pixel-identical output, use Copy PlantUML server URL.

What is the PlantUML server URL?

PlantUML can encode a diagram into a URL: the text is compressed with deflate and written in a URL-safe base64 alphabet, for example https://www.plantuml.com/plantuml/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000. The editor builds that URL locally and only copies it. If you open it, the diagram text is sent to plantuml.com to be drawn.

Why is a line marked as not understood?

The converter supports common PlantUML statements. A misspelled keyword, a missing @enduml in the middle of the text, or a feature that cannot be drawn here (such as skinparam styling or the old (*) activity syntax) is listed under the editor with its line number, and the line number is highlighted in the gutter. The rest of the diagram is still drawn.

SVG or PNG: which should I download?

SVG is a vector image that stays sharp at any zoom level and can be edited in Inkscape, Figma or draw.io; it is ideal for documentation and wikis. PNG works everywhere, including slides, chat and issue trackers; choose 2× or higher so text stays crisp on high-resolution screens.

Can I convert PlantUML to Mermaid?

Yes. Press Copy as Mermaid to get the equivalent Mermaid code in a Markdown block. GitHub, GitLab, Notion, Obsidian and many wikis render Mermaid code blocks natively, so it is a handy way to move diagrams into a README.

Are all the tools on FreeToolCabin tested for quality and accuracy?

Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.

Related tools

Mermaid Diagram EditorWrite Mermaid code and see flowcharts, sequence, Gantt and ER diagrams live. Export SVG or PNG.Markdown EditorWrite Markdown with a toolbar, live split preview, autosave and .md or HTML export.Gantt Chart MakerPlan tasks with dates, progress and dependencies on a Gantt chart, then export PNG or CSV.Mind Map MakerBuild mind maps fast with keyboard shortcuts and auto layout, then export PNG, SVG or JSON.Online Python CompilerRun Python 3 in your browser with input(), numpy, pandas, charts and share links.JSON EditorEdit JSON in a tree and as code side by side: add, rename, drag, change types, undo and download.Unzip FilesOpen and extract ZIP files online.RAR & 7z ExtractorOpen RAR, 7z and other archives online and extract files.Regex TesterTest and debug regular expressions live.File Info ViewerCheck file size, type, date and MD5/SHA hashes.SQLite ViewerOpen .db and .sqlite files in your browser, browse tables and run SQL queries.DOCX ViewerOpen and read Word .docx files in your browser, then print or save them as HTML.EPUB ReaderOpen and read EPUB e-books in your browser with pages, a table of contents and font controls.What Is My BrowserSee your browser, version, OS, engine, screen and which web features it supports.Font ViewerPreview TTF, OTF, WOFF and WOFF2 fonts with sample text, waterfall, glyphs and metadata.Regex Cheat Sheet75+ ready-to-use regex patterns for emails, URLs, IPs and dates, each with a live test box.JavaScript Keycode FinderPress any key to see its JavaScript key, code, keyCode, which, location and modifiers.QR Code ScannerScan QR codes with your camera or from an image and safely read the link or text.RAID CalculatorUsable capacity, efficiency and fault tolerance for RAID 0, 1, 5, 6, 10, 50 and 60 arrays.JSONPath TesterTest JSONPath expressions live: filters, slices, wildcards and recursive search, with matches highlighted.Country Codes ListSearch ISO 3166 alpha-2, alpha-3 and numeric country codes with calling codes and TLDs.CSS Selector TesterTest CSS selectors on your HTML: highlighted matches, match count and specificity.Git Cheat SheetSearchable Git command reference by task, with copy buttons and an undo/rename/fix wizard.HAR File ViewerOpen a .har file to see a waterfall timeline, headers, bodies, timings and size totals.jq PlaygroundRun jq filters on JSON in your browser with live output, flags and an example library.Markdown Cheat SheetInteractive Markdown syntax reference: edit every example and see the live rendered preview.Regex ExplainerPaste a regular expression and get a plain-English breakdown, railroad diagram and flag notes.XPath TesterTest XPath expressions on XML or HTML: highlighted matches, node paths, values and examples.EML File ViewerOpen .eml email files to read the message, headers and raw source and save attachments.Graphviz Online ViewerWrite Graphviz DOT code and render graphs live; switch layout engines, export SVG or PNG.JavaScript Online CompilerWrite and run JavaScript in your browser with a console, timing, error lines and share links.Jupyter Notebook ViewerOpen .ipynb files and read code, Markdown, math, tables, plots and errors without Python.LaTeX Table GeneratorEdit a table like a spreadsheet or paste from Excel and get LaTeX tabular or booktabs code.Log File ViewerOpen huge log files with level colors, regex and time filters, JSON pretty-print and tail -f.Logic Gate SimulatorBuild logic circuits with AND, OR, NOT, XOR gates and flip-flops; see live outputs and truth tables.MSG File ViewerOpen Outlook .msg emails in your browser: sender, recipients, body, headers and attachments.Online Code EditorVS Code-style editor in your browser: tabs, 50+ languages, find/replace, autosave.Online Hex EditorOpen any file as hex and ASCII, edit bytes, search, inspect values and save the result.MBOX File ViewerOpen .mbox mail archives: list and search messages, read them, save attachments, export EML.MDB File ViewerOpen Access .mdb and .accdb databases in your browser: list tables, view rows, export CSV.Shapefile ViewerView zipped shapefiles on a map with the attribute table, then export to GeoJSON or CSV.PHP Online CompilerRun PHP 8 code in your browser with output, HTML preview, error lines and share links.Sorting Algorithm VisualizerWatch bubble, insertion, merge, quick, heap and radix sort step by step with live counters.Lottie ViewerOpen Lottie JSON or .lottie files to play, pause, scrub frames, change speed and see details.Diff ViewerPaste a git diff or .patch file and view it side by side or inline, with file navigation.EditorConfig GeneratorBuild an .editorconfig with indent, charset, line endings and trim rules per file pattern.Folder Compare ToolCompare two folders by file list, size and SHA-256 hash, then open a text diff of changed files.Glob Pattern TesterTest glob patterns like **/*.js, {a,b} and !exclusions against a list of file paths.JMESPath TesterEvaluate JMESPath expressions against JSON live, the query language used by the AWS CLI.MongoDB Query TesterTest MongoDB find filters, projections and aggregation pipelines on sample JSON documents.Semantic Version CalculatorBump, compare, sort and test SemVer versions against npm ^, ~ and x ranges.XSLT TesterRun an XSLT 1.0 stylesheet on XML in your browser and see the output as HTML, XML or text.ASCII Diagram EditorDraw boxes, arrows and text on a character grid and copy plain-text diagrams for code and READMEs.DBF File ViewerOpen dBase .dbf files and shapefile tables, search and sort records, export CSV or XLSX.
See all 53 Code Playgrounds & Testers →