A Moore machine is a finite state machine whose outputs depend only on the current state — never directly on the inputs. The output for each state is fixed; inputs only affect which state you transition to next.
The contrast is the Mealy machine, whose outputs depend on both state and inputs.
Structure

Same general layout as a Mealy machine: combinational logic computes the next state from current state + inputs; flip-flops hold the state; another piece of combinational logic computes the outputs. The difference is what feeds the output logic — for Moore, only the state.
The cyan “input → output” path that’s present in a Mealy machine is absent in a Moore machine.
Trade-offs vs Mealy
Pros of Moore:
- Glitch-free outputs. Outputs only change at clock edges (when the state register updates), so they’re stable for a full clock cycle. Easy to interface with other clocked logic.
- Easier to verify. Each state has a clear output — write the state diagram, label each state with its output, done.
Cons of Moore:
- More states. Often needs more states than an equivalent Mealy machine because it can’t react instantly to inputs — it has to transition into a new state first to change the output.
- One cycle of latency. Output reflects the state, which reflects last cycle’s input. Mealy can react to inputs combinationally within the same cycle.
Worked example
Consider the goal “output Z = 1 whenever the input has been 1 for two consecutive cycles.” Moore version:
- State A: just reset / no recent 1s. Output Z = 0.
- State B: input was 1 last cycle. Output Z = 0.
- State C: input has been 1 for two cycles in a row. Output Z = 1.
Each state has its own output value baked in. Transitions: from A, input=1 goes to B; from B, input=1 goes to C; from C, input=1 stays at C; any state with input=0 goes back to A.
Compare with the Mealy version of the same problem (see Sequence detector (FSM design example)) — it can use one fewer state because the output can fire combinationally on the input that completes the sequence.
When to choose Moore
Default to Moore when:
- Outputs need to drive external clocked devices (to avoid glitches).
- The verification team or specifications expect “this state means this output.”
- Latency tolerance is a cycle or more.
Choose Mealy when:
- Output latency matters and you need the output to reflect inputs in the same cycle.
- State count matters more than output cleanness.
In practice, hybrid machines are common — most outputs are Moore (registered), with a few Mealy outputs added where latency dictates. Synthesis tools handle both seamlessly.