Top Related Projects
Virtual whiteboard for sketching hand-drawn like diagrams
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Generate diagrams from textual description
Master repository for the JGraphT project
Directed graph layout for JavaScript
Quick Overview
draw.io (also known as diagrams.net) is a free, open-source diagramming and flowcharting tool. It provides a web-based interface for creating various types of diagrams, including flowcharts, network diagrams, org charts, and more. The tool can be used online or installed locally, offering flexibility for different user needs.
Pros
- Free and open-source, allowing for customization and community contributions
- Supports a wide range of diagram types and integrations with popular platforms
- Available as both a web application and desktop application for offline use
- Regular updates and active community support
Cons
- Learning curve for advanced features and customizations
- Limited collaboration features compared to some paid alternatives
- Some users report occasional performance issues with large, complex diagrams
- Mobile experience can be challenging due to the complexity of the tool
Getting Started
To use draw.io online:
- Visit https://app.diagrams.net/
- Choose where to save your diagrams (Device, Google Drive, OneDrive, etc.)
- Start creating your diagram using the intuitive drag-and-drop interface
To run draw.io locally:
- Clone the repository:
git clone https://github.com/jgraph/drawio.git - Navigate to the project directory:
cd drawio - Open
src/main/webapp/index.htmlin your web browser to use the application locally
For developers who want to contribute or customize:
- Fork the repository on GitHub
- Make your changes and submit a pull request
- Follow the contribution guidelines in the repository's README
Competitor Comparisons
Virtual whiteboard for sketching hand-drawn like diagrams
Pros of Excalidraw
- Simpler, more intuitive interface for quick sketches and diagrams
- Lightweight and fast, with a focus on hand-drawn aesthetics
- Easy collaboration features with real-time editing
Cons of Excalidraw
- Limited advanced diagramming features compared to Draw.io
- Fewer export options and integrations with other tools
- Less suitable for complex, professional-grade diagrams
Code Comparison
Excalidraw (React-based rendering):
const roughCanvas = rough.canvas(canvas);
roughCanvas.rectangle(10, 10, 100, 100, {
fill: elementStyle.backgroundColor,
stroke: elementStyle.strokeColor,
strokeWidth: elementStyle.strokeWidth,
});
Draw.io (mxGraph-based rendering):
var graph = new mxGraph(container);
var parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
var v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30);
var v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30);
var e1 = graph.insertEdge(parent, null, '', v1, v2);
} finally {
graph.getModel().endUpdate();
}
Both repositories offer diagramming tools, but Excalidraw focuses on simplicity and a hand-drawn style, while Draw.io provides more advanced features for complex diagrams. Excalidraw uses React and HTML5 Canvas for rendering, while Draw.io relies on the mxGraph library for its core functionality.
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Pros of mermaid
- Lightweight and easy to integrate into existing documentation
- Text-based diagram creation, suitable for version control
- Supports a wide range of diagram types (flowcharts, sequence diagrams, Gantt charts, etc.)
Cons of mermaid
- Less intuitive for non-technical users
- Limited customization options compared to draw.io
- Rendering can be inconsistent across different platforms
Code Comparison
mermaid:
graph TD
A[Start] --> B{Is it?}
B -->|Yes| C[OK]
B -->|No| D[End]
draw.io:
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Start" style="rounded=1;" vertex="1" parent="1">
<mxGeometry x="120" y="120" width="80" height="40" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
mermaid uses a simple text-based syntax for creating diagrams, while draw.io uses XML-based format for more complex and customizable diagrams.
Generate diagrams from textual description
Pros of PlantUML
- Text-based diagram creation, enabling version control and easy collaboration
- Supports a wide variety of diagram types, including UML, network, and wireframe
- Can be integrated into various tools and platforms, including IDEs and documentation systems
Cons of PlantUML
- Steeper learning curve for users unfamiliar with text-based diagramming
- Limited customization options for diagram aesthetics compared to DrawIO
- Requires additional software or plugins for rendering diagrams
Code Comparison
PlantUML:
@startuml
Alice -> Bob: Hello
Bob --> Alice: Hi there
@enduml
DrawIO:
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Hello" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="4">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="Alice" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="4" value="Bob" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="120" width="120" height="60" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
Master repository for the JGraphT project
Pros of JGraphT
- Focused on graph theory algorithms and data structures
- Extensive library of graph algorithms (e.g., shortest path, spanning trees)
- Better suited for complex graph computations and analysis
Cons of JGraphT
- Lacks built-in visualization capabilities
- Steeper learning curve for non-programmers
- Limited GUI support compared to draw.io
Code Comparison
JGraphT (creating and analyzing a graph):
Graph<String, DefaultEdge> graph = new SimpleGraph<>(DefaultEdge.class);
graph.addVertex("A");
graph.addVertex("B");
graph.addEdge("A", "B");
DijkstraShortestPath<String, DefaultEdge> dijkstra = new DijkstraShortestPath<>(graph);
draw.io (XML representation of a simple graph):
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="A" vertex="1">
<mxGeometry x="100" y="100" width="80" height="30" as="geometry"/>
</mxCell>
<mxCell id="3" value="B" vertex="1">
<mxGeometry x="300" y="100" width="80" height="30" as="geometry"/>
</mxCell>
<mxCell id="4" edge="1" source="2" target="3"/>
</root>
</mxGraphModel>
JGraphT is better suited for programmatic graph analysis, while draw.io excels in visual graph creation and editing.
Directed graph layout for JavaScript
Pros of dagre
- Specialized for directed graph layouts, offering optimized algorithms
- Lightweight library focused on graph rendering, easier to integrate into existing projects
- More flexible for programmatic graph generation and manipulation
Cons of dagre
- Limited built-in UI features compared to draw.io's rich interface
- Requires more custom coding for interactive elements and user input
- Less suitable for general-purpose diagramming tasks
Code Comparison
draw.io (JavaScript):
var graph = new mxGraph(container);
var parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
var v1 = graph.insertVertex(parent, null, 'Hello', 20, 20, 80, 30);
var v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30);
var e1 = graph.insertEdge(parent, null, '', v1, v2);
} finally {
graph.getModel().endUpdate();
}
dagre (JavaScript):
var g = new dagre.graphlib.Graph();
g.setNode("kspacey", { label: "Kevin Spacey", width: 144, height: 100 });
g.setNode("swilliams", { label: "Saul Williams", width: 160, height: 100 });
g.setEdge("kspacey", "swilliams");
dagre.layout(g);
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
draw.io
About
draw.io is a configurable diagramming and whiteboarding application, jointly owned and developed by draw.io Ltd (previously named JGraph) and draw.io AG. We also run a production deployment at https://app.diagrams.net.
License
The source code in this repository is licensed under the Apache License 2.0.
The icon sets, stencil libraries, and diagram templates are provided under the following terms:
The icon sets and stencil libraries included in this software, and any derivatives thereof (including conversions to other formats, traced reproductions, substantially similar visual representations, or AI-generated images created using these icons as reference or training input), may not be used as software assets in, distributed for use with, or incorporated into Atlassian products or products distributed through the Atlassian marketplace or plugin ecosystem, without explicit written permission.
This restriction does not apply to end-user diagram output (such as exported images or documents) created using this software.
Some icons are originally defined by third-party copyright holders; we have verified that all original licenses permit use in this project. Additional third-party JavaScript libraries are included, all with licenses compatible with Apache 2.0 (no GPL or AGPL).
We make no copyright claim on diagrams you create with this software.
Contributions
We do not accept pull requests. The project is developed entirely by the core team.
Scope
draw.io is a diagramming and whiteboarding application. It is not an SVG editor. SVG export is intended for embedding in web pages, not for editing in other tools.
Note that draw.io does not support real-time collaborative editing in this version, currently.
For issues or questions about the editor in any draw.io product, the issue tracker and discussions here are a good starting point.
Running
Options for running draw.io:
- Fork this repository and publish to GitHub Pages for a fully functional editor (without integrations)
- Use the official Docker image
- Download draw.io Desktop
Packaged .war files are available on the releases page.
Supported Browsers
Chrome 123+, Firefox 120+, Safari 17.5+, Opera 109+, Edge 123+, WebView Android 137+, Safari iOS 18.5+.
Trademark
draw.io is a registered EU trademark (#018062448).
Do not use the draw.io name or logo in ways that suggest affiliation with, endorsement by, or sponsorship by draw.io. Do not use draw.io logos for your own business, product, project, domain, or social media presence. Do not modify the draw.io logos. Use of draw.io trademarks requires prior written permission.
Top Related Projects
Virtual whiteboard for sketching hand-drawn like diagrams
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Generate diagrams from textual description
Master repository for the JGraphT project
Directed graph layout for JavaScript
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot