Skip to main content

D2: Declarative Diagramming

A modern language that turns text to diagrams

Create beautiful diagrams in minutes. Simple syntax. Endlessly customizable. D2 is the fastest and easiest way to get a mental model from your head onto the screen, then make edits with your team.
NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SENDSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST

Feature highlights

Production-ready themesThemes by professional designers, each unique. Effortlessly ready for blogs, wikis, and presentations.
PreprocessingMulti-GPUTrainingEvalInferenceOrchestratorData WarehouseProcessing PipelineNote: we can replace the orchestrator with Kubernetes when we run out of things to doFull workingpipelinePrimarySecondary
Sketch modeOur take on a beautiful, hand-drawn aesthetic.
john wickhenchman 1henchman 2big boss john wickhenchman 1henchman 2big boss shoots, misses john wickhenchman 1henchman 2big boss shoots, missesshoots, hits john wickhenchman 1henchman 2big boss shoots, missesshoots, hitsshoots, misses john wickhenchman 1henchman 2big boss shoots, missesshoots, hitsshoots, missesshoots, hits john wickhenchman 1henchman 2big boss shoots, missesshoots, hitsshoots, missesshoots, hitsinjures john wickhenchman 1henchman 2big boss shoots, missesshoots, hitsshoots, missesshoots, hitsinjuresshoots, hits
AnimationsD2 is the only language that can produce animated diagrams from text.
planktonformula will steal
LaTeXPerfect for academic use and research papers.
好笑的猫咪跳舞, 在月亮下欢唱。 它踩在小青蛙头上, 嘴里嚼着苹果香。웃기는 고양이 날다, 달빛 아래 춤을 추다. 개구리 머리 밟다, 입 속 사과 향기 즐기다.
Any languageMake diagrams in English, Chinese, French, or even emojis, D2 supports almost all languages.
declare function getSmallPet(): Fish | Bird; const works = (a > 1|| (b < 2)declare function getSmallPet(): Fish | Bird; const works = (a > 1) || (b < 2)awsSession := From(c.Request.Context()) client := s3.New(awsSession) ctx, cancelFn := context.WithTimeout(c.Request.Context(), AWS_TIMEOUT) defer cancelFn()awsSession := From(c.Request.Context()) client := s3.New(awsSession) ctx, cancelFn := context.WithTimeout(c.Request.Context(), AWS_TIMEOUT) defer cancelFn()
Code snippetsMade for software diagrams. Syntax highlighted code right in the diagram.
MarkdownInclude longform explanations with Markdown.
clouddisksidintPKblocksidintPKdiskintFKblobAWS S3 Vancouver
TablesShow structured data like SQL tables.

More features

Local CLIRobust CLI with watch mode. Completely offline workflow.
Most major OS'sMacOS, Linux, and Windows. D2 is included in many popular package managers like Homebrew and Winget.
VSCode and VimOfficial editor support for VSCode and Vim, with more coming soon.
Online playgroundCreate and share diagrams quickly by going to our hosted Playground.
ContainersFirst-class support for containers (grouping shapes in other shapes).
Images and IconsImport any image or icon online into your diagram
Multiple layout enginesChoose from 3 layout engines that uniquely handle different types of diagrams.
Use any fontTo customize the font, simply pass in your own .ttf files.
ImportsModularize your diagrams like your code. Split models from views or dice it any way you want.
VariablesReuse values like colors, labels, and anything else for clean diagram code.
GlobsAll the power of wildcard globs you're already familiar with.
AutoformatDon't sweat style decisions like indentations and spacing, D2 has a built-in autoformatter.
Language APIProgrammatically create diagrams by calling D2's language API.
Interactive tooltips and linksHover over shapes to learn more, or click through to another page.
Class shapeUML Class diagrams are fully supported
Sequence diagramsSequence diagrams are created by setting shape: sequence_diagram
Adaptive dark modeDiagrams adjust color schemes to fit user preferences automatically, anywhere on the web.
ExtensionsExplore official and community developed plugins and extensions
ExportsOn the CLI, you may export .d2 into SVG, PNG, PDF. More coming soon!
Cheat sheetDownload our handy one-pager D2 syntax cheat sheet

Get involved

Chat on DiscordHangout, talk about diagrams, get help, give feedback and see early previews of what's coming next.Go to Discord
Check out our blogTechnical blog posts from the authors of D2 on a variety of topics from feature deep dives to how things were built.Go to blog