diagrams.net Libraries
Create and share custom libraries:
- Use the scratchpad or create a new library by clicking File, New Library
- Once the library appears in the sidebar, you can drag and drop cells and images from the diagram or your harddrive
- Supported image formats are PNG, JPG, SVG and GIF (including animated GIFs). If you are adding SVG files, you can make the colors of the SVG configurable using this method: https://www.drawio.com/doc/faq/svg-edit-colours
- When all elements have been added, click the pen icon, add titles to the entries and click Export
- This will download the library file to your computer
- To share it, the file must be uploaded to the web and made available via a public URL. One way to do this is to upload it to a public GitHub repository.
- If you are using GitHub, use the RAW URL of the library which is of the form https://raw.githubusercontent.com/ORG/REPO/REF/PATH/FILENAME.xml, eg. https://raw.githubusercontent.com/jgraph/drawio-libs/master/libs/templates.xml
- Once you have the URL of the library, you can share it by encoding the URL and adding it the clibs parameter. To encode the URL, paste it into the text box at https://jgraph.github.io/drawio-tools/tools/convert.html and click URL Encode. For our example, this will yield https%3A%2F%2Fjgraph.github.io%2Fdrawio-libs%2Flibs%2Ftemplates.xml
- Then add this to https://app.diagrams.net/?splash=0&clibs=U, eg. https://app.diagrams.net/?splash=0&clibs=Uhttps%3A%2F%2Fjgraph.github.io%2Fdrawio-libs%2Flibs%2Ftemplates.xml (where splash=0 bypasses the splash screen). Multiple libraries can be specified by separating them with semicolons. Each value must be prefixed with a U if it's a URL, eg. https://app.diagrams.net/?splash=0&clibs=Uhttps%3A%2F%2Fjgraph.github.io%2Fdrawio-libs%2Flibs%2Fun-ocha-icons-bluebox.xml;Uhttps%3A%2F%2Fjgraph.github.io%2Fdrawio-libs%2Flibs%2Fun-ocha-icons.xml
- You can then share this link and clicking on it will open and install your custom libraries in draw.io
Library File Format
Libraries consist of an enclosing <mxlibrary>
node containing a JSON array, which in turn contains entries with either an xml
property with a compressed or uncompressed mxGraphModel or a data
property with an image data URI (in PNG, JPG or SVG). All entries must have a w
and h
property for the width and height of the cell(s) or image in the entry and an optional title
property for the title in the sidebar and preview. For entries with a data
property, an optional "aspect": "fixed"
may be specified to add aspect=fixed
to the style of the image cell, and an optional style
attribute can be specified to be added the default style of the image cell. Eg. for "data": "data:image/png,[...]", "aspect": "fixed", "style": "resizable=0;rotatable=0;"
the resulting cell style will be shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image=data:image/png,[...];resizable=0;rotatable=0;
For uncompressed xml
properties, <
must be writter as <
, >
must be written as >
and "
must written as \"
(escaped), eg. "xml": "<mxGraphModel><root><mxCell id=\"0\"/><mxCell id=\"1\" parent=\"0\"/><mxCell id=\"2\" value=\"Test3\" style=\"whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#000000;\" vertex=\"1\" parent=\"1\"><mxGeometry width=\"120\" height=\"60\" as=\"geometry\"/></mxCell></root></mxGraphModel>"
The compressed XML may be obtained by clicking on the Encode button at https://jgraph.github.io/drawio-tools/tools/convert.html, eg. "xml": "jVBLDoMgED3N7BE2XVdbV131BKROhASE4LTq7TsVWuPCpAuS95lH3gyo2s9t0tHcQocO1AVUnUKgjPxco3Mghe1ANSCl4AfyeuBWqyuiTjjQPwGZAy/tnpiVLIy0uCJwwMaRyXkylvAe9ePjTNyZNUOeSzcVw5D00GP5EBPhfFhqlUqjFoNHSguPTLYjkydOubcwaHtDe02Pmfe/5LYhg7Lkl27HXL3drd8="
Image (raster) Libraries
Vector Libraries
Click on a link above to open a library or go to File, Open Library from URL in draw.io and enter an URL of the form https://jgraph.github.io/drawio-libs/libs/templates.xml