Convert Figma logo to code with AI

jgraph logodrawio

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

4,311
731
4,311
159

Top Related Projects

119,441

Virtual whiteboard for sketching hand-drawn like diagrams

86,902

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

12,820

Generate diagrams from textual description

2,746

Master repository for the JGraphT project

5,566

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

119,441

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.

86,902

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.

12,820

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,746

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.

5,566

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

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:

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.