PlantUML Skinparam: Complete Styling and Theme Guide (2026)

PlantUML skinparam guide — before and after styling with colors, fonts, themes, and dark mode

PlantUML Skinparam: Complete Styling and Theme Guide (2026)

40+ Built-in Themes
50+ Skinparam Properties
12+ Diagram Types Styled
Free No Signup Required

PlantUML skinparam is the built-in styling system that controls colors, fonts, arrow styles, borders, and shadows across every diagram type. It works alongside the built-in theme library — skinparam provides precise property-level control, while themes apply a complete visual preset in a single line.

This guide covers the full plantuml skinparam property reference — color overrides, font settings, per-diagram-type styling, dark themes, the sketchy hand-drawn style, and how skinparam compares to the newer style tag syntax. Every example in this guide is ready to copy and test.

Test any plantuml skinparam code immediately in our free PlantUML generator online — no Java install required. Paste any code block, click Generate, and see the styled result in seconds.

Preview any skinparam style instantly — no install, no Java
Paste any code from this guide into our free online PlantUML generator and see the styled output immediately. Export to PNG or SVG in one click.
Try Free Generator →
Before — Default PlantUML styling User API Service Database POST /login SELECT user user record 200 + token skin param After — Styled with plantuml skinparam User API Service Database POST /login SELECT user user record 200 + token Plain Default Output Styled with PlantUML Skinparam

What Is PlantUML Skinparam and How Does It Work?

PlantUML skinparam is a declarative styling command that overrides default visual properties at the diagram or element level. You write skinparam PropertyName value inside your diagram definition and PlantUML applies the style to all matching elements. Properties are camelCase and combine element type with property name.

The full plantuml skinparam reference is documented at plantuml.com/skinparam. There are two layers of styling in PlantUML:

ApproachSyntaxBest For
Skinparamskinparam ArrowColor #1a56dbFine-grained property overrides; targeting specific element types
Theme!theme ceruleanQuick full-diagram visual preset; consistent look across multiple diagrams
Style tag (new)style .component { ... }CSS-like selector syntax; introduced in PlantUML 2.x

Skinparam overrides always win over theme defaults. You can combine !theme with skinparam to use a theme as a base and then fine-tune specific properties — for example, applying !theme cerulean and then overriding just the arrow color with a brand hex.

💡 Property naming convention Skinparam property names follow the pattern ElementType + PropertyName. For example: SequenceArrowColor (sequence diagram arrows), ClassBackgroundColor (class diagram fills), ParticipantBorderColor (sequence participant boxes). Global properties like ArrowColor apply to all diagram types unless overridden per-element-type.

PlantUML Skinparam Color Properties: Background, Border and Arrow

Color values in plantuml skinparam use hex codes (#rrggbb or #rgb), named HTML colors (red, blue), or transparent. There is no support for rgba values in skinparam — use hex codes with solid colors only. The table below lists the most-used global and per-element color properties.

Global Color Properties

PropertyDefaultEffect
skinparam backgroundColorwhiteCanvas background behind all elements
skinparam ArrowColor#A80036All arrows (all diagram types)
skinparam ArrowFontColorblackArrow label text color
skinparam BorderColor#A80036All element borders globally
skinparam FontColorblackAll text labels globally
skinparam NoteBackgroundColor#FEFECENote box fill (all diagram types)
skinparam NoteBorderColor#A80036Note box border
skinparam ShadowingtrueDrop shadow on elements — set false to remove
skinparam MonochromefalseSet true for black-and-white output
skinparam RoundCorner0Corner radius in pixels (e.g. 8 for rounded)
skinparam Padding5Padding inside element boxes
skinparam dpi96Output PNG resolution (e.g. 150 for sharper)

Color Properties by Element Group

GroupBackgroundBorderFont
Participant (Sequence)ParticipantBackgroundColorParticipantBorderColorParticipantFontColor
Actor (Sequence)ActorBackgroundColorActorBorderColorActorFontColor
ClassClassBackgroundColorClassBorderColorClassFontColor
Class headerClassHeaderBackgroundColorClassHeaderFontColor
ComponentComponentBackgroundColorComponentBorderColorComponentFontColor
Package / FramePackageBackgroundColorPackageBorderColorPackageFontColor
Activity / ActionActivityBackgroundColorActivityBorderColorActivityFontColor
StateStateBackgroundColorStateBorderColorStateFontColor
Database (ER)DatabaseBackgroundColorDatabaseBorderColorDatabaseFontColor

PlantUML Skinparam Font: Name, Size, Color and Style

Font properties follow the same ElementType + PropertyName pattern. Global font settings apply to all text in the diagram. You can override per element type — for example, setting a larger font only for class diagram headers while keeping body text at the default size.

PropertyTypeExample ValueEffect
skinparam FontNameGlobalHelveticaFont family for all labels
skinparam FontSizeGlobal14Font size (px) for all labels
skinparam FontColorGlobal#0c1f4aFont color for all labels
skinparam FontStyleGlobalBoldBold, Italic, Underline, or Plain
skinparam ClassFontSizePer-element13Class body text only
skinparam ClassHeaderFontSizePer-element14Class name in header bar
skinparam ClassHeaderFontStylePer-elementBoldBold class names
skinparam ParticipantFontSizePer-element13Sequence participant label size
skinparam ArrowFontSizePer-element11Arrow label font size
skinparam TitleFontSizePer-element18Diagram title text size
skinparam TitleFontStylePer-elementBoldBold diagram title
@startuml
skinparam FontName "Segoe UI"
skinparam FontSize 13
skinparam FontColor #1e293b
skinparam TitleFontSize 18
skinparam TitleFontStyle Bold
skinparam ArrowFontSize 11

title User Login Flow

Alice -> Bob : POST /login
Bob --> Alice : 200 OK + token
@enduml

PlantUML Skinparam for Sequence Diagrams

Sequence diagrams have the widest skinparam support of any diagram type. You can control every visual element — participant boxes, activation bars, arrow colors and thickness, divider backgrounds, alt/loop frame fills, and note styling.

PropertyControls
skinparam SequenceArrowThicknessArrow line width in pixels
skinparam SequenceArrowColorOverrides global ArrowColor for sequences only
skinparam SequenceGroupBackgroundColoralt/opt/loop frame fill
skinparam SequenceGroupBorderColoralt/opt/loop frame border
skinparam SequenceDividerBackgroundColor== Divider == fill color
skinparam SequenceDividerFontColor== Divider == text color
skinparam LifelineBorderColorVertical lifeline dashed line color
skinparam ActivationBorderColorActivation bar border color
skinparam ActivationBackgroundColorActivation bar fill color
@startuml
skinparam ParticipantBackgroundColor #dbeafe
skinparam ParticipantBorderColor #1a56db
skinparam ParticipantFontColor #0c1f4a
skinparam SequenceArrowColor #1a56db
skinparam SequenceArrowThickness 2
skinparam SequenceGroupBackgroundColor #f1f5f9
skinparam SequenceGroupBorderColor #cbd5e1
skinparam LifelineBorderColor #93c5fd
skinparam NoteBackgroundColor #eff6ff
skinparam NoteBorderColor #1a56db
skinparam Shadowing false

Alice -> Bob : Request
activate Bob
note right of Bob : Processing
Bob --> Alice : Response
deactivate Bob
@enduml

PlantUML Skinparam for Class and Component Diagrams

Class and component diagrams share the same general property naming pattern. Class diagrams add header-specific properties for the class name bar. Component diagrams add interface styling. Both respond to the global color and font properties as well as their own per-element overrides.

Class Diagram Skinparam

@startuml
skinparam ClassBackgroundColor #eff6ff
skinparam ClassBorderColor #1a56db
skinparam ClassHeaderBackgroundColor #1a56db
skinparam ClassHeaderFontColor #ffffff
skinparam ClassFontColor #0c1f4a
skinparam ClassFontSize 13
skinparam ArrowColor #374151
skinparam Shadowing false
skinparam RoundCorner 6

class User {
  +String name
  +String email
  +login()
}
class Admin {
  +resetPassword()
}
User <|-- Admin
@enduml

Component Diagram Skinparam

@startuml
skinparam ComponentBackgroundColor #dbeafe
skinparam ComponentBorderColor #1a56db
skinparam ComponentFontColor #0c1f4a
skinparam InterfaceBackgroundColor #1a56db
skinparam InterfaceFontColor #ffffff
skinparam PackageBackgroundColor #f8fafc
skinparam PackageBorderColor #94a3b8
skinparam ArrowColor #374151
skinparam Shadowing false

package "Backend" {
  [API Gateway]
  [User Service]
}
() "UserAPI"
[API Gateway] --> [User Service]
[User Service] - "UserAPI"
@enduml

PlantUML Skinparam Themes: Full List and How to Apply Them

Themes in PlantUML are pre-built skinparam bundles. Apply any theme with !theme THEME_NAME as the first line after @startuml. You can then override individual properties using standard skinparam after the theme declaration — your skinparam lines always win over the theme defaults.

The full plantuml skinparam theme list contains 40+ built-in options. Here are all currently available themes:

amiga
aws-orange
black-knight
bluegray
blueprint
carbon-gray
cerulean
cerulean-outline
cloudscape-design
crt-amber
crt-green
cyborg
cyborg-outline
hacker
lightgray
mars
materia
materia-outline
metal
mimeograph
minty
mono
neon
plain
reddress-darkblue
reddress-darkorange
reddress-darkred
reddress-lightorange
sandstone
silver
sketchy
sketchy-outline
solar
spacelab
superhero
superhero-outline
toy
united
vibrant
vapor

Preview all themes visually before choosing — the PlantUML themes gallery shows each theme applied to the same sequence diagram so you can compare styles at a glance.

🌟 Recommended themes by use case Professional documentation: cerulean or materia. Technical presentations: cyborg or superhero. Client-facing diagrams: minty or sandstone. Wireframes and prototypes: sketchy. Print output: plain or lightgray. Dark dashboards: cyborg or hacker.
Test theme + skinparam combinations live — free, no install
Copy any code example with !theme and skinparam overrides into our free generator and see the styled diagram immediately. Supports all diagram types.
Open Free Generator →

Dark Mode and High-Contrast Themes: Monokai, Nord and Dracula

PlantUML does not include official Monokai, Nord, or Dracula themes by name, but several built-in themes produce equivalent dark aesthetics. The closest built-in dark themes are cyborg, hacker, neon, crt-amber, crt-green, and blueprint. You can also build a custom dark theme entirely with skinparam.

Built-in Dark Theme Options

ThemeBackgroundAccentStyle
cyborgDark navyBright blueBootstrap-dark inspired
hackerBlackBright greenTerminal / matrix aesthetic
neonVery darkNeon accentsHigh-contrast neon glow
crt-amberNear-blackAmberVintage CRT monitor look
crt-greenNear-blackGreenClassic green-screen CRT
blueprintDark blueWhite linesTechnical blueprint drawing

Custom Dark Theme with Skinparam

@startuml
' Custom dark theme approximating Monokai / Nord
skinparam backgroundColor #272822
skinparam ArrowColor #66d9e8
skinparam ParticipantBackgroundColor #3e3d32
skinparam ParticipantBorderColor #66d9e8
skinparam ParticipantFontColor #f8f8f2
skinparam ClassBackgroundColor #3e3d32
skinparam ClassBorderColor #a6e22e
skinparam ClassFontColor #f8f8f2
skinparam ClassHeaderBackgroundColor #1e1f1c
skinparam NoteBackgroundColor #1e1f1c
skinparam NoteBorderColor #75715e
skinparam Shadowing false
skinparam FontName "Courier New"

Alice -> Bob : authenticate
Bob --> Alice : token
@enduml

Sketchy and Hand-Drawn Style for Presentations

The sketchy theme renders diagrams in a hand-drawn, marker-on-whiteboard style — ideal for early-stage architecture discussions, client presentations, and any context where you want to signal that the design is still evolving. The sketchy-outline variant produces the same effect without filled backgrounds.

@startuml
!theme sketchy

title Team Meeting — Draft Architecture

[Frontend] --> [API]
[API] --> [Database]
[API] --> [Cache]

note right of [API]
  Still deciding on
  Redis vs Memcached
end note
@enduml

You can also achieve the hand-drawn look without the full theme using a single skinparam property: skinparam HandWritten true. This uses a built-in rough rendering algorithm and applies to all diagram types without changing any color settings.

✎️ When to use sketchy Use sketchy diagrams in stakeholder meetings when the design is intentionally unfinished. A polished-looking diagram can give the impression of a final decision; a sketchy one signals openness to feedback. Switch to cerulean or materia for the final documentation version.

PlantUML Skinparam vs the New style Tag Syntax

PlantUML 2.x introduced a CSS-like style tag as an alternative to plantuml skinparam. It uses selector-based syntax — you define a class name starting with a dot and assign properties inside curly braces. Elements then reference the style with a stereotype. Both approaches coexist in current PlantUML versions.

skinparam (Classic — all versions)
  • Works in all PlantUML versions
  • Property-name approach: skinparam ClassBackgroundColor #dbeafe
  • Targets element types globally
  • Wider third-party documentation
  • Stable and production-safe for all platforms
style tag (New — PlantUML 2.x+)
  • Requires PlantUML 2.x or later
  • Selector approach: style .myClass { BackgroundColor: #dbeafe }
  • Targets individual elements by class name
  • More flexible for mixed styles in one diagram
  • Check server/extension version before using
@startuml
' New style tag syntax (PlantUML 2.x+)
style .highlighted {
  BackgroundColor: #dbeafe
  BorderColor: #1a56db
  FontColor: #0c1f4a
}

class User <<highlighted>> {
  +login()
}
class Order {
  +submit()
}
User "1" *-- "many" Order
@enduml

For maximum compatibility across VS Code extensions, Confluence plugins, GitLab renderers, and CI/CD pipelines, use standard skinparam syntax. Reserve the style tag for environments where you can confirm PlantUML 2.x is running.

Reusable Team Stylesheets and Shared Config Files

The most efficient way to keep all your team's diagrams visually consistent is to centralise all skinparam settings in a shared .iuml file stored in your repository. Every diagram then includes this file with a single line — and style changes propagate automatically to every diagram in the project.

Creating a Team Stylesheet

' File: /docs/styles/team-style.iuml
' Include in any diagram with: !include ../styles/team-style.iuml

skinparam backgroundColor #ffffff
skinparam ArrowColor #1a56db
skinparam ArrowFontColor #374151
skinparam ParticipantBackgroundColor #dbeafe
skinparam ParticipantBorderColor #1a56db
skinparam ParticipantFontColor #0c1f4a
skinparam ClassBackgroundColor #eff6ff
skinparam ClassBorderColor #1a56db
skinparam ClassHeaderBackgroundColor #0c1f4a
skinparam ClassHeaderFontColor #ffffff
skinparam ComponentBackgroundColor #dbeafe
skinparam ComponentBorderColor #1a56db
skinparam PackageBackgroundColor #f8fafc
skinparam PackageBorderColor #94a3b8
skinparam NoteBackgroundColor #eff6ff
skinparam NoteBorderColor #1a56db
skinparam Shadowing false
skinparam RoundCorner 8
skinparam FontName "Segoe UI"
skinparam FontSize 13

Using the Shared Stylesheet

@startuml
!include ../styles/team-style.iuml

title User Authentication Flow

Alice -> Bob : POST /login
Bob --> Alice : 200 + token
@enduml
⚙️ CI/CD integration for team stylesheets Store your team-style.iuml in a /docs/styles/ folder at the root of your repository. In your GitHub Actions or GitLab CI pipeline, run java -jar plantuml.jar -r -tsvg ./docs/ to recursively render all .puml files — the !include paths resolve relative to each file automatically.

For teams that want to preview and validate skinparam styling without running a local PlantUML install, our free PlantUML generator online renders any skinparam configuration instantly in the browser. Paste the full diagram code including !theme and all skinparam lines to see the output.

Preview your team stylesheet live — no Java, no install
Paste your full diagram code including all skinparam properties into our free online tool and see the styled output in seconds. Export PNG or SVG instantly.
Generate Free →

PlantUML Skinparam — Frequently Asked Questions

What is plantuml skinparam and when should I use it?

PlantUML skinparam is the built-in CSS-like styling command that overrides visual properties — colors, fonts, shadows, borders, and arrows. Use it to match brand colors, remove default shadows (skinparam Shadowing false), change fonts, or create a custom color theme. For full presets, use !theme instead.

How do I remove the drop shadow from PlantUML diagrams?

Add skinparam Shadowing false to your diagram. This removes the drop shadow from all elements globally — participants, class boxes, components, and packages. It is one of the most common skinparam settings for professional documentation because the default shadow can look dated in clean design contexts.

How do I change the arrow color in PlantUML?

Use skinparam ArrowColor #HEX to change all arrows globally. For sequence diagrams only, use skinparam SequenceArrowColor #HEX. Arrow label text uses skinparam ArrowFontColor. Test any color combination live in our free PlantUML generator before updating your diagrams.

Can I combine a !theme with skinparam overrides?

Yes — this is the recommended approach for team stylesheets. Apply the theme first with !theme cerulean, then add skinparam lines after it to override specific properties. Skinparam declarations always take precedence over theme defaults. For example, apply !theme materia as a base and then override skinparam ArrowColor with your brand hex code.

How do I make a PlantUML diagram black and white for printing?

Add skinparam Monochrome true to your diagram. This converts all colors to grayscale. For a cleaner print output, combine it with skinparam Shadowing false and !theme plain. Alternatively, export to PDF using the -tpdf flag in local mode — PDF export preserves vector quality for any print size.

What is the difference between skinparam FontName and skinparam ClassFontName?

skinparam FontName sets the font family globally for all diagram text. skinparam ClassFontName overrides the font for class body text only. The ElementType prefix pattern works for all diagram types — ParticipantFontName, ComponentFontName, ActivityFontName — so you can mix fonts within a single diagram for different element types.

Where can I find the full plantuml skinparam property list?

The plantuml.com/skinparam page lists all supported properties. For an alternative layout, the PlantUML documentation on ReadTheDocs organises them by diagram type. Our PlantUML cheat sheet includes the most commonly used skinparam properties for each diagram type in a quick-reference table.

How do I create a shared skinparam stylesheet for my team?

Create a team-style.iuml file with all your skinparam settings. Save it in your repository under /docs/styles/. In each .puml diagram file, add !include ../styles/team-style.iuml after @startuml. The !include path is relative to the diagram file location. Any change to the shared file applies instantly to all diagrams in the project.

Does plantuml skinparam support rgba colors?

No — skinparam does not support rgba() notation. Use solid hex codes (#rrggbb) or short hex (#rgb) for all color values. Named HTML colors like red and transparent are also supported. For semi-transparent effects, use a solid hex color that matches your intended look against the canvas background.

J
Joshua

SEO strategist and founder of AI Tool Synergy. Focused on building topical authority through data-driven content and free tools that actually work. Explore all free tools at aitoolsynergy.com/free-tools-online — no signup ever required.