Looks pretty cool. I think it's great that you support light/dark mode. FWIWI, I'm also a huge fan of Excalidraw.
I wanted to ask you: is there's a reason you use a separate svg file for each (light/dark) mode?
A single SVG file using CSS can change it's own colors based on the user's preference. I have an example here: http://alejo.ch/3jj - the 3 plots should honor your mode (I put the generator code here: https://github.com/alefore/mini_svg)
Just figure I'd ask. If you have a good reason for using separate files, I'd love to hear it (because it probably would also apply to what I'm doing). :)
I made a custom Payload CMS block that allows to create and update excalidraw diagrams within the CMS. It supports dark and light mode switching and rendering inline or as external SVG.
And last weekend I added MCP server with Oauth so I could generate and update those diagrams and add them to post drafts from Claude. I think it is more convenient since I don't have to use API billing model and don't need to build a custom UI.
Originally I wanted to sync posts from Obsidian but it doesn't have good enough image handling which I sometimes need and I needed extra metadata to unlist or password protect or noindex some posts.
Author here: I use mermaid lot as well and for some things like process flows, and to model interactions it it outrules excalidraw and posts will follow where i need exactly that. but to visualize things high level i find excalidraw way nicer.
I love excalidraw, but I have to agree. It also looks very unprofessional so if you ever have to write customer-facing diagrams, you have tool fragmentation. I just stick to draw.io now (aka diagrams.net)
Why does it cause tool fragmentation? You can change the font to a normal sans-serif font or to a monospaced font.
Personally I like the default font. It looks weird to have my crappy doodles next to a normal computer font. The default one is very legible but has a style (and ligatures) that make it feel not too neat
The Excalidraw website describes itself as: Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.
And the GitHub repo says: An open source virtual hand-drawn style whiteboard.
Collaborative and end-to-end encrypted.
I love diagramming, but I genuinely don't understand how people can use these wonky looking tools. It looks off, I had to make my own[1] to create something that's easy to use and looks good/normal.
I like the wonky, hand-drawn looking style. I think it fits well beause usually if I use a diagram it's not 100% precise and accurate, but more a high-level illustration. The wonky style conveys the approximate precision of the presented concept.
I agree 100% it's personal, wasn't trying to imply anything else, but for me the style takes away from the actual content and makes it harder to read/grasp.
Excalidraw has a 1 click 'sloppiness' change. We do drafts and ideation in 'full sloppy' mode, to indicate to the reader that this is not fully thought through, or a final documented decision. Once we've gotten through discussions and analysis, the final diagram is changed to be 'not sloppy', and the font changed from handwriting to a san serif font.
It's pretty effective to immediately communicate to folks that 'this is a concept' approach. Too many people instantly jump to conclusions about diagrams - if it's written down it must be done / fixed / formal.
Click the AI button in the toolbar to copy the Grafly format reference.
Paste it into any LLM (Claude, ChatGPT, Gemini…) along with a description of the diagram you want.
Copy the JSON the LLM returns.
Click the Import JSON button () in the toolbar and paste it in.
”
Super user friendly as well! I don’t even understand the instructions on how to use it.
In the upper right there is an import/export button that could be used for this. It's stored in localstorage so you could also dump that to wherever you like.
edit: added link to the repo in the about modal.
edit2: added import export of the entire localstorage entry on the bottom of the diagrams(left) panel.
I absolutely love it that you can import mermaid. I love mermaid because I'm a huge fan of anything related to code that can I check into git, track its evolution and the thinking that went behind it.
However, those who don't know mermaid have to struggle with updating my diagrams. Your approach, atleast in theory, should get us the best of both worlds. Mermaid for those who would like to and the mouse for those who don't.
This also addresses the issue that large complex diagrams can get unwieldy using Mermaid and moving things around with a mouse would fix those edge cases.
Depends on what you want to achieve with your look. Do you want to scream professionalism, authority, and completed?
Use a regular UML tool.
Want to say this is a rough draft of a few ideas? Then using UML is probably THE wrong look. And Exaclidraw should be used instead.
---
Anecdote time. According to one of my professors, they showed how the prototype will look in action, and the customers were so impressed by the smoke and mirrors prototype they wanted to start using it right away.
In the end, customer walked away because they thought they were being strung along to pay for something that was already done.
Wow, I had no idea that excalidraw could "import" mermaid!! This is just awesome.. I can have my LLM generate mermaid, which it is really very good at. And then I can edit the diagram!
You can also bootstrap your initial schema with LLMs with the excalidraw MCP "app" [0]. But MCP "apps"[1] are quite new and not very well supported yet.
I didn't have good experience with excalidraw-mcp when it first came out a month ago; the Claude-generated diagrams were too raw/unpolished. I'm sticking to mermaid for now but I'm interested in hearing how people make exclidraw-mcp work for them
Interesting approach. I make heavy use of Mermaid as I find it easier to make small changes and bulk generate-and-copy for publishing elsewhere. But being able to update the diagram and automatically generate the output files is a nice hybrid.
I have noticed diagrams are most useful early in thinking, but once things get complex they either become outdated or too hard to maintain. Curious how people here deal with that, do you keep diagrams in sync with code, or treat them as disposable?
I treat them as sketches, the way Martin Fowler used to describe a UML diagram. They have to be either disposable or treated as a notepad. I reconstruct the full picture only when it's necessary from "sketches". E.g., since Lucid has an infinite canvas, I'll put all my different diagrams on a single canvas, along with little diagrammatic "ideas", "notes", "brain-f$rts", etc.
For a presentation or project documentation artifacts, I can then go thru my sketches and pull bigger pictures together easily. I applied Fowler's "sketch" principle in my own tool ormle.com
I find I end up needing to walk the code to make diagrams of the current state anytime management wants to know what’s going on. It’s the only way my managers seem to understand or accept anything.
It’s a lot of work, as starting over is often easier than reviews and edits. Usually the diagrams are slightly out of date, but good enough to satisfy whoever is looking at it.
I wish I had a better solution. Now I’m wondering I could write something that walks the code for me.
Hey look, someone else has the exact same problem I do! I even use Excalidraw for diagramming as well, and have been wondering about how best to generate them according to some kind of binary format.
I have reverted to using mermaid where we are beyond the ideation phase. Then the mermaid code can live next to the document source, and I need not search for the original diagram file to edit and export. Confluence has a nice mermaid plugin.
Everyone does that these days and they are becoming AI tells like the em-dash or the blue-glow of the early AI generated images that everyone added to their blog posts.
AI can generate mermaid diagrams, not excalidraw. If you use the mermaid to excalidraw, i guess it can be, but it just looks like a mermaid diagram then and not an excalidraw.
I simply just draw in excalidraw and take a ss and past it in my obsidian note, I have a setup that automatically parses posts from my vault and then pushes them to my site
Protip: select the items in the canvas you want in your SS and 'copy to clipboard as PNG' instead of a screen shot and you can get transparent PNGs of diagrams or of detailed subsets of a larger diagram easily.
Same. I started using it for Gethly blog. It's not perfect, some things make me crazy but overall it is better than draw.io that I used to use before. Excalidraw also has these great styles that just feel right :)
I use Excalidraw extensively at work. For me, it's really close to perfection.
It has an excellent UI, selections work way better than Lucid or Figma etc, the sketchy look makes it clear designs are rough and not blueprints, it's private and loads instantly.
The one negative is that it's a pain to get the multiplayer self-hosted version running.
The company where I'm contracted retired Excalidraw in favor of Lucid and, while I understand that big companies are going to go with big, enterprise-y solutions, what went from a weekly "sketch something out to help with communicating my ideas" turned into "once every few months I begrudgingly document something".
Excalidraw is excellent for low-friction sketches.
Both Excalidraw and TLDraw are the two most popular apps of their kind, simplistic whiteboard tools, so I don't think it's that surprising and I don't see any reason why this post should be a "Show HN".
For me, draw.io is still the winner, and especially now that it runs locally also on Linux. As for works in progress, I hope this one succeeds (and would also run locally at some point):
I love excalidraw, but don't need the excalidraw+. But Excalidraw open source is the frontend only, which means I have to delete my drawings each time. So I built the backend so I can create many canvases.
Your site makes me make an account before I can use it, whereas excalidraw.com doesn't, and also excalidraw.com seems to save my drawing just fine? I closed a tab and reopened it and my drawing was still there, presumably from localStorage.
The three-lines-menu also has a "Save to..." option that lets you create a sharable link or save to your local disk.
Hey, I found that interesting and went looking for an RSS feed link on your site but couldn't find any. Assuming you don't have it already, do you plan to add it?
Documentation often rots away because it's often decoupled from the code it describes.
I'm a huge fan of anything related to code that can I check into git, track its evolution and the thinking that went behind it. Why was Kubernetes chosen? Why was NATs chosen? Why are the topics named the way they are?
I am a huge fan of mermaid diagrams because it lets me check in my diagrams into git. I am a huge fan of mermaid diagrams because my code can generate diagrams that I (or they) can check into git - and this was before AI.
Now that AI can generate mermaid diagrams, people look at my Git repos and go "oh, you use AI a lot!" - then I point to my git history and they see it's from 2018.
I'm really happy that mermaid and related tools like Excalidraw are taking off - we have another chance at documentation being automated, uptodate and "fresh".
Love Excalidraw. Used it for decades now, but reach for more powerful tools pretty often as I hit its limits. I'm not asking for the world, but some basics like being able to bold or italicize text would help out a lot.
YES YES YES! Excalidraw is amazing, I recently embedded it into my vibe coded project to add version control integration with it. Honestly one of highest quality tools I've used for my workflow, does what it needs to do and doesn't get in your way.
I've always liked umlet and umletino (web version) for a nice mix of drag and drop and edit by text editor. In the absence of good enough layout algorithms, the ability to manually drag things to the right place is kind of essential. The resulting diagrams are not so pretty of course.
I have tried a lot of tools in this space. If it comes out looking alright, that's usually because it was so simple that it didn't actually need a diagram. Anything with a bit of non trivial structure seems to quickly escalate with essentially no good options other then esoteric hacks with styling to make it look any good.
This seems to be a thing where you can have pretty automated layouts, complex diagrams, or correct diagrams and can only have two out of three.
Which means that almost 100% of my use cases for these tools never really work for me unless I sit down and grab some old school drawing tool (or just give up on the whole notion, which is much more likely). If it was trivial, I wouldn't bother making a diagram. These tools seem only usable for stuff where diagrams were overkill to begin with. I saw no examples on the linked article (and the rest of the site; I browsed the top few recent articles) to really counter this.
I wanted to ask you: is there's a reason you use a separate svg file for each (light/dark) mode?
A single SVG file using CSS can change it's own colors based on the user's preference. I have an example here: http://alejo.ch/3jj - the 3 plots should honor your mode (I put the generator code here: https://github.com/alefore/mini_svg)
Just figure I'd ask. If you have a good reason for using separate files, I'd love to hear it (because it probably would also apply to what I'm doing). :)
I made a custom Payload CMS block that allows to create and update excalidraw diagrams within the CMS. It supports dark and light mode switching and rendering inline or as external SVG.
And last weekend I added MCP server with Oauth so I could generate and update those diagrams and add them to post drafts from Claude. I think it is more convenient since I don't have to use API billing model and don't need to build a custom UI.
Here is an example post: https://www.janhouse.lv/blog/network/self-hosting-tailscale-...
Originally I wanted to sync posts from Obsidian but it doesn't have good enough image handling which I sometimes need and I needed extra metadata to unlist or password protect or noindex some posts.
Personally I like the default font. It looks weird to have my crappy doodles next to a normal computer font. The default one is very legible but has a style (and ligatures) that make it feel not too neat
And the GitHub repo says: An open source virtual hand-drawn style whiteboard. Collaborative and end-to-end encrypted.
It's the intended design...
[1] https://grafly.io
Also, and that's personal, I think it's cute.
Excalidraw is my favourite thinking tool, and the style it produces is just the right level of limiting, disarming, and professional at the same time.
It's pretty effective to immediately communicate to folks that 'this is a concept' approach. Too many people instantly jump to conclusions about diagrams - if it's written down it must be done / fixed / formal.
Click the AI button in the toolbar to copy the Grafly format reference. Paste it into any LLM (Claude, ChatGPT, Gemini…) along with a description of the diagram you want. Copy the JSON the LLM returns. Click the Import JSON button () in the toolbar and paste it in. ”
Super user friendly as well! I don’t even understand the instructions on how to use it.
I went a different route using diagram-as-code with Mermaid instead of manual drawing.
[1] https://graphlet.xyz
1. Will you be making the source code public?
2. How to export the JSON for SCM, then re-import for updating/maintenance?
https://github.com/lnenad/grafly/
In the upper right there is an import/export button that could be used for this. It's stored in localstorage so you could also dump that to wherever you like.
edit: added link to the repo in the about modal. edit2: added import export of the entire localstorage entry on the bottom of the diagrams(left) panel.
However, those who don't know mermaid have to struggle with updating my diagrams. Your approach, atleast in theory, should get us the best of both worlds. Mermaid for those who would like to and the mouse for those who don't.
This also addresses the issue that large complex diagrams can get unwieldy using Mermaid and moving things around with a mouse would fix those edge cases.
Depends on what you want to achieve with your look. Do you want to scream professionalism, authority, and completed? Use a regular UML tool.
Want to say this is a rough draft of a few ideas? Then using UML is probably THE wrong look. And Exaclidraw should be used instead.
--- Anecdote time. According to one of my professors, they showed how the prototype will look in action, and the customers were so impressed by the smoke and mirrors prototype they wanted to start using it right away.
In the end, customer walked away because they thought they were being strung along to pay for something that was already done.
[0] -- https://github.com/excalidraw/excalidraw-mcp
[1] -- https://modelcontextprotocol.io/extensions/apps/overview
It can be exceedingly useful to do this if you have a big log file and you need to have a diagram of a trace, even if you're not sharing it on a blog.
For a presentation or project documentation artifacts, I can then go thru my sketches and pull bigger pictures together easily. I applied Fowler's "sketch" principle in my own tool ormle.com
It’s a lot of work, as starting over is often easier than reviews and edits. Usually the diagrams are slightly out of date, but good enough to satisfy whoever is looking at it.
I wish I had a better solution. Now I’m wondering I could write something that walks the code for me.
That way, the diagram source and
Do use diagrams to explain an abstraction, and attach a word to it. Don't use diagrams to represent the exact state of a system.
[1]: https://darshanmakwana412.github.io/2026/03/a-system-of-jour...
https://xkcd.com/about/
Now it reads like an ad for some extension to a program I've never heard about.
https://github.com/excalidraw/excalidraw
It has an excellent UI, selections work way better than Lucid or Figma etc, the sketchy look makes it clear designs are rough and not blueprints, it's private and loads instantly.
The one negative is that it's a pain to get the multiplayer self-hosted version running.
Excalidraw is excellent for low-friction sketches.
A self-hosted version with storage (multiplayer) plus any Claude access would be a killer setup for team planning etc and let us drop Miro.
TLDraw: https://www.tldraw.com/
Excalidraw: https://excalidraw.com/
TikzMaker: https://tikzmaker.com/
https://drawx.ossy.dev
https://github.com/AykutSarac/excalihub
The three-lines-menu also has a "Save to..." option that lets you create a sharable link or save to your local disk.
I'm a huge fan of anything related to code that can I check into git, track its evolution and the thinking that went behind it. Why was Kubernetes chosen? Why was NATs chosen? Why are the topics named the way they are?
I am a huge fan of mermaid diagrams because it lets me check in my diagrams into git. I am a huge fan of mermaid diagrams because my code can generate diagrams that I (or they) can check into git - and this was before AI.
Now that AI can generate mermaid diagrams, people look at my Git repos and go "oh, you use AI a lot!" - then I point to my git history and they see it's from 2018.
I'm really happy that mermaid and related tools like Excalidraw are taking off - we have another chance at documentation being automated, uptodate and "fresh".
But in general AI-diagramming is still unsolved; needs several iterations to get rid of wonky/wrong arrows, misplaced boxes, misplaced text etc.
I have tried a lot of tools in this space. If it comes out looking alright, that's usually because it was so simple that it didn't actually need a diagram. Anything with a bit of non trivial structure seems to quickly escalate with essentially no good options other then esoteric hacks with styling to make it look any good.
This seems to be a thing where you can have pretty automated layouts, complex diagrams, or correct diagrams and can only have two out of three.
Which means that almost 100% of my use cases for these tools never really work for me unless I sit down and grab some old school drawing tool (or just give up on the whole notion, which is much more likely). If it was trivial, I wouldn't bother making a diagram. These tools seem only usable for stuff where diagrams were overkill to begin with. I saw no examples on the linked article (and the rest of the site; I browsed the top few recent articles) to really counter this.