Finite State Machine Simulator
One transition per line, e.g. q0,0,q0 or q0 -0-> q0 or q0 0 -> q1. NFA targets may be several, written {q1,q2} or q1|q2; epsilon may be e, eps, epsilon, ε or @.
Machine type:   Input format:   Start state:   Accept states:
Test string:   Strings to test:   Alphabet:   Max length:
Trace:   Transition table:   :   Separator:
Calculation Result Download CSV
No. Result State Details

Introduction to the tool and how to use it

An online finite state machine (FSM) simulator: paste a transition table into the input box to run DFA and NFA machines, returning both a result table and plain text you can copy or export as CSV.

Input format (one transition per line, three notations supported, auto-detected by default):
1. q0,0,q0 (comma separated);
2. q0 -0-> q0, q0 -a-> q1 (arrow notation, the symbol may be empty);
3. q0 0 -> q1 (space plus arrow).

Key parameters: choose DFA or NFA as the machine type. NFA transitions may have several targets, written as {q1,q2} or q1|q2. The start state defaults to the source state of the first transition. List accept states separated by commas; leave empty for none. Provide a single test string, or pick "enumerate all short strings" to generate them from the alphabet and a maximum length. Epsilon transitions may be written as ε, eps or @.

Results come in three parts: the normalized transition table (one row per state and symbol pair, with all targets listed), the step-by-step trace (NFA states shown as sets) and the test result (accepted or not, plus the final state set). A summary block reports the state set, alphabet, start state, accept states, a determinism check and a reachability analysis.

Two things to note: when the same state and symbol lead to several targets the machine is not a DFA and the tool says so explicitly instead of silently taking the first target; an undefined transition is treated as falling into a dead state and clearly flagged, and a symbol outside the alphabet is reported separately.

Message board

All messages →
0/200

  • No one has spoken up yet — want to go first?