Meet Flowmark
Flowmark turns a description of a software system into an SVG diagram. You name the things that matter and describe how they relate. Flowmark measures the labels, places the nodes, routes the connections, and redraws the result whenever the source changes.
The idea in one minute
Section titled “The idea in one minute”A Flowmark file contains meaning, not coordinates:
diagram "Checkout" { direction LR
group app "Application" { api: gateway "Public API" checkout: service "Checkout" }
orders: database "Orders" events: broker "Domain events"
api -> checkout "place order" checkout -> orders "save" checkout => events "OrderPlaced"}Read it from top to bottom:
diagramgives the model a name.api: gateway "Public API"declares a node: stable ID, semantic kind, human label.groupsays two nodes belong to the same boundary.->describes a direct interaction;=>describes an event.direction LRasks the layout engine to make the main flow read left to right.
There are no x and y positions to maintain. That is the bargain Flowmark offers: less manual
control in exchange for source that stays readable, reviewable, and easy to change.
What Flowmark is good at
Section titled “What Flowmark is good at”Flowmark is designed for diagrams whose structure matters more than artistic freedom:
- software architecture and service maps
- event-driven systems and data pipelines
- operational and business workflows
- database relationships
- request traces and sequence diagrams
- diagrams that live in repositories, documentation, and CI
The same source can become a portable SVG, a live browser diagram, or an animated explanation.
One source, several ways to work
Section titled “One source, several ways to work”Flowmark keeps the text model authoritative regardless of where you edit it:
- Hosted Studio is the fastest way to begin. It runs in the browser, opens and saves local
.flowmarkfiles, and exports portable output without an account. - Local Studio opens the same authoring experience from the CLI with repository file watching and opt-in writes.
- VS Code and compatible editors provide native language intelligence, formatting, preview, and export beside the rest of your code.
- Any text editor works with the CLI and language server when you prefer your own tooling.
Presentation controls in Studio update the DSL instead of creating hidden editor state. A file can move between these workflows without changing its meaning or becoming tied to one host.
Choose how readers receive it
Section titled “Choose how readers receive it”Authoring and delivery are separate choices. Once the source is in place:
- export self-contained SVG for READMEs, wikis, slides, and generated artifacts
- render fenced blocks through Remark or Markdown-it for documentation sites
- import standalone
.flowmarkfiles through Vite and compatible build tools - use React or the web component when readers need pan, zoom, themes, or playback
- validate and render whole repositories through the CLI and CI
See Publish diagrams for the destination-based decision guide.
How layout uses the model
Section titled “How layout uses the model”Flowmark measures labels before placing nodes. Groups participate in layout instead of becoming decorative boxes afterward. Connections attach to node boundaries, and routed edges can receive crossing treatment when a graph gets dense.
That does not mean every graph will look perfect. Automatic layout is a set of informed tradeoffs. It does mean you should reach for semantic structure—groups, direction, density, and edge meaning—before trying to micromanage geometry.
Choose your next step
Section titled “Choose your next step”- I want a result now: follow the quickstart.
- I want to design in the browser: open Studio.
- I want to learn the language: build your first diagram.
- I want editor support: use VS Code or a compatible editor.
- I have a specific diagram in mind: start with design guides.
- I need to integrate Flowmark: choose a publishing path.
- I am comparing tools: read Is Flowmark right for you?.
The language reference is for lookup. It is intentionally not the first thing you need to read.