How it works
rombik parses your code with a real parser (Python, C, C++, C#, Java and Pascal), builds a logical tree of the algorithm and lays it out as an ISO 5807 flowchart — in seconds, right in your browser.
Standard shapes
Terminator
Start / End
Process
Action, computation, assignment
Decision
Condition (if / while)
Input-output
input / print, cin / cout
Loop boundary
for loop with a counter
Subprogram
Call to your own function
What’s already supported
Each function becomes its own chart; its parameters are drawn as an input parallelogram, and return as an output parallelogram.
Python full support
- if / elif / else, match / case
- for … in range, while, for/else, while/else
- while True … break (post-condition), infinite loop
- break / continue / return / raise
- try / except / finally, with
- list / set / dict comprehension → loop
- input / print → “Input …” / “Output …”
- methods & nested classes (“Class.method”), decorators
- lambdas (name = lambda …) → separate chart, ternary a if c else b → branch
C / C++ full support
- if / else, switch (all cases + default, fallthrough → “||”)
- for (classic and range-based), while, do / while
- break / continue / return, recursion
- cin / cout and printf / scanf → input/output
- try / catch
- class methods (“Class::method”), operators, namespace, templates
- lambdas (auto f = [](){…}) → separate chart, ternary ?: → branch
- C — a subset of C++ (same handling)
C# full support
- if / else, switch (case + default, fallthrough, switch expression)
- for, foreach (foreach (var x in c)), while, do / while
- break / continue / return / throw, recursion
- Console.ReadLine() → “Input …”, Console.Write/WriteLine → “Output …”
- methods, constructors, properties, static methods (“Class.method”)
- classes, structs, interfaces, enum → charts per method
- call to your own method → subprogram
- try / catch — the try body is drawn
- lambdas (x => …) → separate chart, ternary ?: → branch
Java full support
- if / else, switch (case + default, fallthrough → “||”, arrow and colon)
- for, for-each (for (T x : c)), while, do / while
- break / continue / return / throw, recursion
- Scanner.nextX() → “Input …”, System.out.print* → “Output …”
- methods, constructors, static methods (“Class.method”)
- classes, interfaces, enum → charts per method
- call to your own method → subprogram, strings "…" → “…”
- try / catch — the try body is drawn
- lambdas ((x) -> …) → separate chart, forEach → loop, ternary ?: → branch
Pascal full support
- procedure / function → separate charts
- assignment “:=” → action
- writeln / write → Output, readln / read → Input
- if .. then .. else
- for .. to / downto .. do
- while .. do, repeat .. until
- case .. of
Limits: what rombik doesn’t draw
An ISO 5807 flowchart describes the structural control flow, not every detail of the language. So some constructs are intentionally not expanded in detail — the same across all languages:
- Exception handling (
try/catch/finally,except) — ISO 5807 has no standard shape for exceptions; only the maintrybody is drawn. - Streams and inline anonymous lambdas (
stream,map(lambda…), a lambda inside astd::sort(…)call) — stay as a text action. But a lambda assigned to a name (f = lambda …) does become a separate chart. - Labeled
break/continue(break label) — break the nearest loop; the label is ignored. - Anonymous / local classes, text blocks — shown as a text action, not a separate chart.
These are limits of the “arbitrary code → standard flowchart” genre, not bugs. If something’s missing for you — hit “Bug or idea” below and I’ll take a look.
Interactive visual editor
Besides automatic generation, rombik has a full visual editor (the “✎ Edit” button on the chart card). You can:
- Drag blocks (they snap to the grid), move a whole selected group together
- Reroute arrows or draw your own connections; edit text with a double-click
- Split into charts manually: select blocks with a lasso (Shift+drag the background) or Shift-click, then “⊞ Separate chart” moves them into their own figure (framed)
- “⊟ Merge” — merges several charts back into one
- Arrows between charts automatically become connector pairs (circles A, B, C…)
- “Edit all” — all the code’s functions on one canvas, so you can split blocks between them
- Undo / redo, an infinite canvas with pan/zoom
Rubber Duck Debugging 🦆
Stuck with an algorithm or tired of coding? In the bottom-right corner of the editor a Rubber Duck is always waiting for you. It’s made specifically to support you, give a useful hint about working with rombik and just lift your mood. Click it whenever you need moral support!
Export and formats
After building a chart, you can save it in various formats:
- Word (.docx) Real Word document objects (not an image) — native Word shapes, standard-compliant. Tall charts split into pages with connectors
- SVG / PNG Perfect for pasting into Word, Google Docs or presentations
- PDF A vector format for print — coursework, handouts, slides
- Typst Native code for modern typesetting systems for academic papers
- Excalidraw Opens in Excalidraw as native board objects — for whiteboards and presentations
Delegate to AI (API / CLI / MCP)
rombik isn’t only a website. A ready-made skill for AI agents (Claude Code, etc.) lets you just ask — and the agent builds the flowcharts from your code. Prefer to drive it yourself? The same engine is available over an HTTP API, a CLI and MCP (for clients like Claude Desktop or Cursor — the agent gets a render tool right in the chat). Either way you only pay for the charts you generate; create a key in your account.
- 🤖 AI agents — a ready-made skill (Claude Code, etc.) + OpenAPI: the agent generates charts from your code, you just give the task
- rombik CLI —
renderandbatchin the terminal; browser login (rombik auth) - HTTP API — from scripts, CI, or your own backend (with an API key)
- Same formats: Word (.docx), Typst, Excalidraw, SVG, PNG, PDF; batch render → a multi-page PDF or a zip
Chart came out wrong? Got an idea?
If some construct was drawn incorrectly — write in, add a snippet of code, and I’ll fix it.