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 main try body is drawn.
  • Streams and inline anonymous lambdas (stream, map(lambda…), a lambda inside a std::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 CLIrender and batch in 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
How to connect →

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.