Crow Flow is an interactive, hierarchical flow visualiser. Define systems with a simple text DSL, then explore them on a live canvas with animated flows, expandable nodes, and real-time editing.
Mermaid, PlantUML, and draw.io are great for simple diagrams. But real systems are hierarchical, directional, and too complex to flatten onto a single static image.
Traditional tools render a fixed image or SVG. You can't pan, zoom, or drill into subsystems interactively.
Subgraphs in Mermaid or packages in PlantUML are styling hints, not truly interactive containers you can expand and collapse.
Arrows in traditional tools are just lines. They don't animate, merge, or distinguish between streaming and batch data movement.
A side-by-side look at what you get out of the box.
| Capability | Mermaid | PlantUML | draw.io | Crow Flow |
|---|---|---|---|---|
| Text-based DSL | โ | โ | โ | โ |
| Interactive pan & zoom canvas | โ | โ | โ | โ |
| Drag-to-rearrange nodes | โ | โ | โ | โ |
| Expand / collapse hierarchy | โ | โ | โ | โ |
| Animated directional flows | โ | โ | โ | โ |
| Flow merging on collapse | โ | โ | โ | โ |
| Stream vs batch flow modes | โ | โ | โ | โ |
| Attribute metadata on items | โ | ~ | ~ | โ |
| Status-based auto-coloring | โ | โ | โ | โ |
| Filter / highlight by attribute | โ | โ | ~ | โ |
| Upstream / downstream tracing | โ | โ | โ | โ |
| Multiple saved scenarios | โ | โ | ~ | โ |
| Zero dependencies | โ (npm) | โ (Java) | โ (Electron/web) | โ Vanilla JS |
Built specifically for people who need to understand complex, hierarchical, directional systems โ not just draw boxes and arrows.
Double-click any container to reveal or hide its children. Nodes visually nest inside their parents. Collapsing hides internal detail while merging child flows into the container โ letting you zoom between the 10,000-foot view and the implementation detail in a single click.
UNIQUE TO CROW FLOWFlows aren't static arrows โ they're thick, animated ribbons that show the direction of data or control. Choose between streaming (real-time dashes) and batch (block segments) animation to convey the nature of each connection at a glance.
UNIQUE TO CROW FLOWWhen you collapse a container, the individual flows between its children and external nodes automatically coalesce into thicker merged ribbons. The visual weight of a connection reflects how many underlying flows it represents.
UNIQUE TO CROW FLOWClick a node with "Highlight Connections" enabled to instantly see its full upstream and downstream lineage. Or use the filter bar to dim everything except items matching a status, owner, label, or any custom attribute.
Attach arbitrary key-value attributes to any node or flow โ owner, team, status, SLA, technology โ
and edit them live in the Properties panel. Set status=live
and the node automatically turns blue with no extra config.
Save multiple graph scenarios โ current-state, target-state, migration-plan โ and switch between them instantly. Everything persists in your browser's localStorage. Duplicate a scenario to experiment without losing the original.
Three line types. No boilerplate. The DSL reads like a description of your system.
Anyone who needs to understand or communicate how things connect and flow through a layered system.
Model microservices, databases, queues, and gateways as nested hierarchies. Expand a service to see its internal components; collapse to see the big picture.
Visualise streaming and batch data flows between sources, transforms, and sinks. Use flow modes to distinguish real-time from scheduled.
Save current-state and target-state as separate scenarios. Color nodes by status (live, in-progress, to-start) to track migration progress visually.
Explain complex systems by starting collapsed and progressively expanding areas during a walkthrough. Filter to highlight what matters to each audience.
Click any node to highlight all its upstream producers and downstream consumers. Understand blast radius before changing a component.
The DSL is plain text that lives alongside your code or in a wiki. It's version-controllable, diff-friendly, and renders interactively.
Open the app, paste in a DSL, and explore your system. No account, no install, no dependencies.