Convert Figma logo to code with AI

jgraph logodrawio

draw.io is a JavaScript, client-side editor for general diagramming.

40,552
7,557
40,552
266

Top Related Projects

Virtual whiteboard for sketching hand-drawn like diagrams

70,541

Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown

10,277

Generate diagrams from textual description

2,577

Master repository for the JGraphT project

4,593

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:

  1. Visit https://app.diagrams.net/
  2. Choose where to save your diagrams (Device, Google Drive, OneDrive, etc.)
  3. Start creating your diagram using the intuitive drag-and-drop interface

To run draw.io locally:

  1. Clone the repository:
    git clone https://github.com/jgraph/drawio.git
    
  2. Navigate to the project directory:
    cd drawio
    
  3. Open src/main/webapp/index.html in your web browser to use the application locally

For developers who want to contribute or customize:

  1. Fork the repository on GitHub
  2. Make your changes and submit a pull request
  3. 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.

70,541

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.

10,277

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>
2,577

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.

4,593

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

About

draw.io, this project, is a configurable diagramming/whiteboarding visualization application. draw.io is jointly owned and developed by JGraph Ltd and draw.io AG.

As well as running this project, we run a production-grade deployment of the diagramming interface at https://app.diagrams.net.

License

The source code authored by us in this repo is licensed under a modified Apache v2 license. This project is not an open source project as a result.

The JGraph provided icons and diagram templates are licensed under the CC BY 4.0. Additional terms may also apply where the icons are originally defined by a third-party copyright holder. We have checked in all cases that the original license allows use in this project. Also see the terms for using the draw.io logo below.

Additional minified JavaScript files and Java libraries are used in this project. All of the licenses are deemed compatible with the Apache 2.0, nothing is GPL or AGPL, due diligence is performed on all third-party code.

We make no copyright claim on the content you create with this software, regardless of the copyright of individual icons used in such content.

Scope of the Project

draw.io is a diagramming or whiteboarding application, depending on which theme is selected. It is not an SVG editing app, the SVG export is designed only for embedding in web pages, not for further editing in other tools.

The application is designed to be used largely as-is. draw.io is not suitable as a framework for building other products from. For this try either Tldraw or Excalidraw.

Note, in particular, we don't have support for collaborative editing in this project. If this is important, one of the projects above is likely a better choice.

If you are using a draw.io project/product and have issues or questions about the editor itself, the issue tracker and discussion in this GitHub project are likely a good place to look.

Running

One way to run draw.io is to fork this project, publish the master branch to GitHub pages and the pages sites will have the full editor functionality (sans the integrations).

Another way is to use the recommended Docker project or to download draw.io Desktop.

The full packaged .war of the client and servlets is built when the project is tagged and available on the releases page.

Supported Browsers

draw.io supports Chrome 98+, Firefox 94+, Safari 15.4+, Opera 84+, WebView Android 98+, Safari iOS 15.4+ and Edge 98+.

This project is not open-contribution

draw.io is also closed to contributions, as it's not open source. We follow a development process compliant with our SOC 2 Type II process. We do not have a mechanism where we can accept contributions from non-staff members.

draw.io is not suitable as a framework for building other products from. For this try either Tldraw or Excalidraw.

Logo and trademark usage

draw.io is a registered EU trademark, #018062448

Do not use the draw.io name or any draw.io logo in a way that suggests you are JGraph, your offering or project is by JGraph, or that JGraph is endorsing you or your offering or project.

Do not use any draw.io logo as the icon or logo for your business/organization, offering, project, domain name, social media account, or website.

Do not modify the permitted draw.io logos, including changing the color, dimensions, or combining with other words or design elements.

Do not use JGraph trademarks or logos without JGraph’s prior written permission.