Mermaid vs PlantUML vs Graphviz
Tre strumenti da testo a diagramma, tre compiti diversi. Mermaid è conciso ed esegue il rendering nel browser; PlantUML è il più approfondito per UML; Graphviz dispone in layout grafi di grandi dimensioni. Ecco come differiscono davvero.
⚠️ Avvertenza: sviluppiamo un editor Mermaid gratuito. I criteri qui sotto — sintassi, tipi di diagramma, come ciascuno esegue il rendering, supporto GitHub — sono oggettivi; verificali pure rispetto alla documentazione ufficiale di ogni progetto.
| Strumento | Stile della sintassi | Tipi di diagramma | Come esegue il rendering | Nativo su GitHub | Ideale per |
|---|---|---|---|---|---|
| Mermaid | Concisa, simile a Markdown | Diagramma di flusso, sequenza, ER, classi, stato, Gantt, mappa mentale, torta e altro | JavaScript — esegue il rendering nel browser | Sì — nativo in Markdown | Docs-as-code in README, wiki e note |
| PlantUML | DSL prolisso (@startuml … @enduml) | Il set UML più completo, oltre a molti diagrammi non UML | Java — un server PlantUML o un jar locale | No — richiede un'immagine pre-renderizzata | Modellazione UML approfondita ed esaustiva |
| Graphviz (DOT) | Linguaggio di descrizione di grafi (digraph { … }) | Grafi generici a nodi e archi, alberi, mappe di dipendenze | Motore Graphviz (dot); port WASM per il browser | No — richiede un'immagine pre-renderizzata | Grafi e gerarchie di grandi dimensioni con layout automatico |
"Nativo su GitHub" significa che il diagramma viene renderizzato dal sorgente in Markdown senza caricare alcuna immagine. PlantUML e Graphviz richiedono un SVG/PNG pre-renderizzato per comparire su GitHub.
Quando scegliere ciascuno
Scegli Mermaid quando il diagramma documenta il codice e dovrebbe vivere nel repository — uno schizzo dell'architettura in un README, un diagramma di sequenza in un documento di progettazione, uno schema in una wiki. Esegue il rendering in modo nativo su GitHub e GitLab, così i revisori lo vedono inline, e la sintassi è abbastanza leggera da scriverla nel flusso della stesura delle note.
Scegli PlantUML quando hai bisogno di UML rigoroso e completo — gerarchie di classi dettagliate, diagrammi di componenti e di deployment, o un controllo preciso sulla notazione. Rinunci al rendering nativo su GitHub e alla concisione in cambio della profondità, e per produrre le immagini esegui un server PlantUML (o il jar).
Scegli Graphviz quando il "diagramma" è in realtà un grande grafo di cui non vuoi posizionare il layout a mano — grafi di dipendenze, grafi di chiamata, grandi macchine a stati. Il suo linguaggio DOT e il motore di layout automatico gestiscono centinaia di nodi che sarebbero ingestibili da disegnare manualmente.
Se sei arrivato qui per creare un diagramma adesso, la via più rapida è Mermaid.
Vedi anche: Editor Mermaid · UML / classi · Esempi · Incorpora Mermaid
Domande frequenti
Mermaid vs PlantUML — quale è migliore?
Nessuno dei due è migliore in assoluto; mirano a compiti diversi. Mermaid è conciso ed esegue il rendering in modo nativo in Markdown su GitHub e GitLab, il che lo rende ideale per la documentazione che vive accanto al codice. PlantUML ha un set di funzionalità UML molto più completo e un controllo più fine, ma esegue il rendering tramite un server Java e non viene disegnato in modo nativo su GitHub. Scegli Mermaid per docs-as-code rapidi, PlantUML per UML esaustivo.
Mermaid può fare tutto ciò che fa PlantUML?
No. PlantUML copre più tipi di diagramma UML e offre un controllo più approfondito su stile e layout. Mermaid copre i diagrammi di cui la maggior parte dei team ha bisogno ogni giorno — diagrammi di flusso, sequenza, ER, classi, stato e Gantt — con molta meno sintassi. Se hai bisogno di UML avanzato come diagrammi di componenti o di deployment dettagliati, PlantUML si spinge oltre.
Graphviz è la stessa cosa di Mermaid?
No. Graphviz usa il linguaggio DOT ed eccelle nel disporre automaticamente in layout grandi grafi a nodi e archi — alberi di dipendenze, grafi di chiamata, macchine a stati. Mermaid è di più alto livello e consapevole del tipo di diagramma (sa cos'è un diagramma di sequenza), ed esegue il rendering nel browser e su GitHub. Per un grande grafo generato, il motore di layout di Graphviz è difficile da battere; per diagrammi di documentazione leggibili, Mermaid è più rapido da scrivere.
GitHub esegue il rendering di PlantUML o Graphviz?
GitHub esegue il rendering di Mermaid in modo nativo nei blocchi delimitati ```mermaid, ma non di PlantUML o Graphviz. Per questi, generi un'immagine (SVG o PNG) con il loro renderer e fai il commit o colleghi quell'immagine nel tuo Markdown.
Posso convertire PlantUML in Mermaid automaticamente?
Non esiste un convertitore affidabile con un solo clic — le sintassi e i set di funzionalità differiscono, quindi una conversione pulita di solito significa riscrivere il diagramma a mano. La buona notizia è che i tipi comuni (sequenza, classi, stato) si mappano da vicino, quindi una riscrittura manuale è rapida per i diagrammi di tutti i giorni.