Skip to content
Free tool

Create a flowchart online: free editor

Use this editor to create flowcharts based on DIN 66001 from blocks or pseudocode. It arranges the symbols automatically: for example, type “WHILE x < 10” to get a decision diamond, loop body and loopback line. Switch to a structogram of the same process with one click, and export as PNG, SVG or PDF.

Built by Justin Schuessler

Free, with no sign-up or installation: the editor runs entirely in your browser, and your diagrams aren't sent to us.

Process complete? Try the code directly on your own VPS or web hosting plan.

Block builder

100 %
Program flowchart: FactorialFactorialStartInput: nresult := 1i := 1i <= nYesresult := result * ii := i + 1noOutput: resultEnd

Diagram keyboard shortcuts: ↑/↓ select block, Enter edit text, Alt+↑/↓ move, Delete remove, Insert add block, Ctrl+Z/Ctrl+Y undo/redo, Ctrl+X/C/V cut/copy/paste.

Pseudocode syntax
PROGRAM Name
INPUT x / OUTPUT x
CALL procedure(x)
IF condition THEN … ELSE IF … ELSE … END IF
SWITCH x  CASE 1: …  DEFAULT: …  END SWITCH
WHILE condition … END WHILE
REPEAT … UNTIL condition
FOR i FROM 1 TO n STEP 1 … END FOR
LOOP name … BREAK name … END LOOP

Every other line is an instruction; a line starting with \ is always an instruction, even if it begins with a keyword.

Indentation and capitalization do not matter, and you can mix German and English keywords. No actual program code is generated or executed.

Click a block in the diagram to edit it here. Double-click to edit its text directly in the diagram.

Save and export

Everything runs in your browser: the current state is saved only locally, and the share link contains the diagram itself. No data is sent to us.

Features

Flowcharts without dragging boxes around

You describe the process; the editor places the symbols according to DIN 66001, draws the lines and keeps both views up to date.

Symbols based on DIN 66001

Terminators, processes, decisions, input/output and predefined processes, connected by flow lines and lines that lead back for loops.

Switch to structogram

The same process as a structogram based on DIN 66261 (Nassi–Shneiderman), without having to redraw anything.

Click-and-build editor

Add blocks before, after or inside another block; edit text directly in the diagram; move, delete and undo.

Two-way pseudocode

Text and diagram stay in sync. The editor shows the line number and a hint for typos, while the diagram remains visible.

Export and project file

PNG and SVG for documents, A4 PDF for printing, and a project file (JSON) to save and reopen.

Share without an account

The share link contains the diagram in its URL. Nothing is stored on our servers.

How it works

How to create a flowchart

Start with a template or a blank flow and work whichever way you prefer.

Step 1

Load a template or start from scratch

Choose one of nine sample templates, such as factorial, leap year or bubble sort, or start an empty flowchart with “New”.

Step 2

Build a flowchart with clicks

Choose a block in the builder and place it before or after a step, or inside a block. Double-click to edit the text directly in the diagram.

Step 3

Or write pseudocode

Write the steps in the pseudocode field using German or English keywords. The diagram is laid out automatically, and the editor flags typos with line numbers.

Step 4

Export or share

Download the flowchart as a PNG, SVG or PDF (A4), save the project file (JSON), or copy a share link.

DIN 66001

Key program flowchart symbols

The DIN 66001 symbols used by the editor for program flowcharts. The flow is arranged automatically, so you do not need to move anything.

Terminator (start/end)Start

Terminator (start/end)

The oval marks the start and end of the program flowchart.

Operationsumme := summe + zahl

Operation

A rectangle represents a processing step, such as an assignment or calculation.

Input/outputInput: zahl

Input/output

The parallelogram shows where data is read or output.

Branchzahl > 0

Branch

The diamond contains a condition. Depending on the result, the flow continues through the Yes or No exit.

Subroutinesortiere(liste)

Subroutine

A rectangle with double side lines calls a subroutine with its own flowchart.

Flow lineInput: zahlOutput: zahl

Flow line

Lines with arrowheads connect the symbols and show the sequence. The normal flow runs from top to bottom.

Branch with mergezahl > 0Yesnos := 1s := -1

Branch with merge

After a branch, both paths merge at one point before the flow continues.

Loop boundary (infinite loop)MenuInput: wahlMenu

Loop boundary (infinite loop)

A hexagon with beveled top corners marks the start of a loop; one with beveled bottom corners marks its end. The editor uses this pair for an infinite loop.

Exit pointInfinite loopdoneYesnoAweiter()Infinite loopA

Exit point

A lettered circle connects two points without a long line. An exit ends at circle A, and the flow resumes at circle A after the loop.

Loop with return pathi <= 10Yesi := i + 1no

Loop with return path

A loop is formed by a branch and a return line leading back to the condition.

Control structures

Loops and branches in flowcharts

See how the editor draws common control structures and how to write them in pseudocode using German or English keywords.

Branch

The diamond contains the condition. The branches split to the left and right, then merge again. Pseudocode: WENN … DANN … SONST … ENDE WENN (German) or IF … THEN … ELSE … END IF (English).

Switch-case statement

A diamond containing the expression, with one branch per case and an optional default branch. Pseudocode: FALLS x … FALL 1: … SONST: … ENDE FALLS (German) or SWITCH x … CASE 1: … DEFAULT: … END SWITCH (English).

Pre-test loop

The diamond comes before the body. The loopback line leads back on the left to the condition, while the No branch continues on the right. Pseudocode: SOLANGE … ENDE SOLANGE (German) or WHILE … END WHILE (English).

Post-test loop

The body runs at least once, followed by the decision diamond containing the condition. Pseudocode: WIEDERHOLE … BIS … (German) or REPEAT … UNTIL … (English).

Counting loop

Drawn as an initial assignment, a condition, a body and an increment of the counter. Pseudocode: FÜR i VON 1 BIS 10 … ENDE FÜR (German) or FOR i FROM 1 TO 10 … END FOR (English), optionally with SCHRITT or STEP.

Infinite loop with break

A pair of loop boundary symbols encloses the body; a break leads through a connector to a point after the loop. Pseudocode: ENDLOSSCHLEIFE … ABBRUCH … ENDE ENDLOSSCHLEIFE (German) or LOOP … BREAK … END LOOP (English).

Examples

Flowchart examples for practice

Nine typical exercises from school, vocational training and university are included as templates. Load one with “Load sample template”, explore the finished flowchart and its pseudocode, and make changes.

  • Factorial
  • Grade calculation
  • Login with 3 attempts
  • Leap year
  • Maximum of a list
  • Bubble sort
  • Vending machine
  • Prime number test
  • Number guessing

DIN 66261

Key Nassi–Shneiderman diagram symbols

The Nassi–Shneiderman structure blocks the editor can draw. Each block has exactly one entry at the top and one exit at the bottom. The editor does not support parallel processing as defined in DIN 66261.

Instruction (structure block)summe := summe + zahl

Instruction (structure block)

A rectangle represents a single processing step, such as an assignment or calculation.

SequenceInput: zahlquadrat := zahl * zahlOutput: quadrat

Sequence

Blocks stacked vertically run in sequence from top to bottom. Input and output are ordinary instruction blocks.

Branch (selection)zahl > 0YesnoOutput: “positive”∅

Branch (selection)

A triangle containing the condition splits the flow into a Yes branch and a No branch. An empty branch is marked with ∅.

Case selection (multiple choice)x1a := 102a := 20elsea := 0

Case selection (multiple choice)

Exactly one case runs depending on the value of an expression. The case values appear directly below the diagonal; the final case (often “otherwise” for all remaining values) is in the right-hand triangle.

Pre-test loopwhile i <= 10i := i + 1

Pre-test loop

The condition is at the top and is checked before each iteration. If it is false at the start, the loop body does not run at all.

Post-test loopInput: zahlto zahl > 0

Post-test loop

The condition is at the bottom: the loop body runs at least once and repeats until the condition is met.

Counting loopfor i from 1 to 10Output: i

Counting loop

A pre-test loop with a counter variable, start and end values, and an optional step size.

Subroutine callsortiere(liste)

Subroutine call

A block with double side lines calls a separate subroutine described elsewhere.

Infinite loopMenuInput: wahlexecute(choice)

Infinite loop

A repetition without a condition: a top bar (optionally labeled), a bar on the left, and a bottom bar. It can only be exited with an exit block.

Exit (break)Menu

Exit (break)

The wedge on the left exits the innermost surrounding loop; the label names the block being exited. Execution then continues with the block after that loop.

Discover more

More tools

FAQ

Frequently asked questions

Quick answers about flowcharts, DIN 66001 and this editor.

A program flowchart shows the steps of a program or algorithm as a sequence of standardized symbols connected by arrows. It shows the order of instructions, inputs, outputs and decisions, independently of any programming language. It's also called a flow diagram or simply a flowchart.

Load a sample template in the editor, or start an empty flowchart with “New”. Add blocks with a click or write the process as pseudocode; both stay in sync. The editor arranges the symbols automatically: branches split left and right before merging again, and loopback lines run to the left of the loop body. Finally, export as PNG, SVG or PDF. It's free and requires no sign-up.

The symbols are defined in DIN 66001 and internationally in ISO 5807. The editor uses the terminator (oval) for start and end, the process (rectangle), the decision (diamond), input/output (parallelogram), the predefined process (rectangle with double vertical edges), flowlines with arrowheads, the connector (lettered circle), and a pair of loop boundary symbols for infinite loops.

A loop consists of a decision and a loopback line. In a pre-test loop, the diamond comes before the body: if the condition is met, the body runs and the line leads back to the diamond; otherwise, the flow continues to the right. In a post-test loop, the diamond comes after the body. A counting loop is drawn as an initial assignment, a condition, a body and an increment of the counter. The editor draws an infinite loop with a pair of loop boundary symbols; a break leads through a connector to a point after the loop. A switch-case statement becomes a diamond with one branch per case and an optional default branch.

Write one step per line, using keywords for blocks: IF … THEN … ELSE … END IF; FALLS x with FALL 1: and SONST: through ENDE FALLS; SOLANGE … ENDE SOLANGE; WIEDERHOLE … BIS …; FÜR i VON 1 BIS 10 … ENDE FÜR; ENDLOSSCHLEIFE … ENDE ENDLOSSCHLEIFE with ABBRUCH; plus EINGABE, AUSGABE and AUFRUF. English keywords (IF, SWITCH, WHILE, REPEAT, FOR, LOOP, BREAK, INPUT, OUTPUT, CALL) work too; you can switch between the two in the pseudocode field. The editor doesn't recognize keywords in other languages and treats those lines as simple instructions. Just paste pseudocode you've written elsewhere into the field. If there's a typo, the editor highlights the line with a hint and keeps the last valid diagram.

Both describe the same process. A flowchart connects symbols with arrows; loops use lines that lead back. A structogram (DIN 66261, Nassi–Shneiderman diagram) nests blocks inside one another and has no jumps, making it more compact and enforcing a structured approach. You can switch between the two views in this editor because both are drawn from the same process.

Yes. Export it as a high-resolution PNG or SVG and insert the file into Word, PowerPoint or another document. For printing, there's a PDF on an A4 page. The project file (JSON) lets you save your flowchart and reopen it in the editor later.

The editor is free to use without signing up. It runs entirely in your browser: your current work is stored only in your browser's local storage, and exports are created directly on your device. In a share link, the diagram is stored in the part of the URL after #, which is not sent to the server.

Any more questions?

Contact Support
From flow to program

Try the code for your flowchart on your own server

On a ZAP-Hosting VPS, you have full root access for any language. PHP and MySQL are ready to use on a web hosting plan.

4.4/5 Trustpilot32,000+ Active serversSince 2010

No setup. No risk. Online in seconds.

Flexible TermCancel anytimeOnline in 60 seconds

Looking for more tools? View all developer tools