RREF vs REF: what's the difference and when does it matter?

Row echelon form (REF) and reduced row echelon form (RREF) both organize a matrix into a staircase pattern. The difference is what happens above the pivots.

At a Glance

What REF requires

What REF requires

A matrix is in row echelon form when:

  1. All zero rows are at the bottom.
  2. The leading entry of each nonzero row (the leftmost nonzero value) is to the right of the leading entry in the row above it.
  3. Every entry below each leading entry is zero.

The leading entries don't need to be 1. They just need to step right as you go down. Wikipedia's row echelon form entry states the base requirements the same way: "All rows having only zero entries are at the bottom," and "the leading entry of every non-zero row… is to the right of the leading entry of every row above."

[ 3   6  -9  |  3 ]
[ 0  -2   4  |  8 ]
[ 0   0   5  | 10 ]

This is in REF. The leading entries are 3, −2, and 5, none are 1, and the entries above the pivots (the 6 and −9 in row 1, the 4 in row 2) are not zeroed out. That's fine for REF.

What RREF adds

RREF requires two more things on top of REF:

  1. Every leading entry is exactly 1.
  2. Every other entry in each pivot column is zero, including entries above the pivot, not just below.

Taking the same system and finishing the reduction:

[ 1   0   0  |  5 ]
[ 0   1   0  | -2 ]
[ 0   0   1  |  2 ]

This is the RREF of the same matrix. The left block is now the identity matrix, and the solutions are readable directly: x₁ = 5, x₂ = −2, x₃ = 2.

To get from the REF above to this RREF, three more operations are needed: scale each row so its leading entry becomes 1, then eliminate upward. Written out:

R1 ÷ 3, R2 ÷ (-2), R3 ÷ 5:
[ 1   2  -3  |  1 ]
[ 0   1  -2  | -4 ]
[ 0   0   1  |  2 ]

Eliminate upward using R3, then R2:
[ 1   0   0  |  5 ]
[ 0   1   0  | -2 ]
[ 0   0   1  |  2 ]

That's the full REF-to-RREF gap in one worked pass: three scalings and two upward eliminations, five extra row operations beyond what forward elimination alone required.

The practical difference: back-substitution vs. direct reading

With REF, you still have work to do. Starting from the bottom row of the example above (5x₃ = 10), you solve x₃ = 2, substitute that into row 2 to find x₂, then substitute both into row 1 to find x₁. This is back-substitution.

With RREF, you skip that entirely. The matrix already encodes the solution. For large systems, this is a meaningful difference in effort, and in hand calculations, fewer steps means fewer opportunities for arithmetic errors. On a 5×5 system, back-substitution from REF involves roughly ten substitution-and-simplify steps; going the extra distance to RREF trades that for a fixed, mechanical set of row operations that don't compound arithmetic mistakes the way manual substitution does.

REF is not unique; RREF is

Given a matrix, many different REFs are possible depending on which row operations you apply and in which order. RREF is unique: there is exactly one RREF for any matrix. This is why the RREF calculator always produces the same answer regardless of the internal algorithm, and why RREF is the standard form for storing and comparing results.

Which method corresponds to which form

Gaussian elimination (forward elimination only) produces REF. You stop once the matrix has its staircase shape, then back-substitute to read the solution.

Gauss-Jordan elimination continues past REF, applying upward elimination to zero out entries above each pivot and scale each pivot to 1. The result is RREF. No back-substitution needed. Wikipedia's Gaussian elimination article draws this same line: "the term Gaussian elimination refers to the process until it has reached its upper triangular, (unreduced) row echelon form," whereas continuing "to convert a matrix into reduced row echelon form is sometimes called Gauss-Jordan elimination."

Both methods are correct for solving linear systems. Gauss-Jordan does more row operations but produces a simpler final read. In practice, most computational tools go all the way to RREF.

When REF is enough

There are situations where you stop at REF intentionally:

When you need RREF

A matrix where the difference is easy to see

REF:               RREF:
[ 1  2  5 ]        [ 1  0  3 ]
[ 0  1  1 ]        [ 0  1  1 ]

The REF on the left has a 2 above the pivot in column 2. In RREF, that's been eliminated. From REF you'd compute x₁ = 5 − 2x₂ = 5 − 2 = 3 by back-substitution. From RREF you read x₁ = 3 directly. Same answer, one fewer step.

For more columns and more rows, that "one fewer step" multiplies.

REF vs RREF Side by Side

Row Echelon Form (REF)Reduced Row Echelon Form (RREF)
Pivot valueAny nonzero numberAlways exactly 1
Entries below pivotZeroZero
Entries above pivotMay be nonzeroZero
UniquenessMany valid REFs per matrixExactly one RREF per matrix
Solving a systemRequires back-substitutionDirect read-off
Typical use caseDeterminants, LU decomposition, rankSolutions, null space, canonical comparison
Produced byGaussian eliminationGauss-Jordan elimination

Frequently asked questions

Is RREF always better than REF?

Not for every purpose. RREF is better when you want to read a solution directly or need a unique canonical form. REF is enough, and often faster, for computing a determinant, doing an LU decomposition, or just checking rank. Choosing REF over RREF on purpose isn't a shortcut that loses information, it's matching the amount of reduction to what the task actually needs.

Does a calculator that shows RREF also show REF along the way?

Most standalone RREF calculators return only the final reduced form, since that's the unique, storable answer. If you need to see the REF stage, either perform forward elimination by hand and stop before the upward pass, or use a tool that exposes intermediate steps.

Can two different REFs of the same matrix have different pivot positions?

No. The pivot positions (which columns contain leading entries) are the same in every valid REF or RREF of a given matrix; only the specific numbers can differ between different REFs. That invariance is what lets rank, which counts pivot columns, stay well-defined even though REF itself isn't unique.

Why does Gauss-Jordan need more operations than Gaussian elimination?

Because it does everything Gaussian elimination does (clear below each pivot) and then adds two more passes: scaling every pivot to exactly 1, and clearing every entry above each pivot. On an n×n matrix, that roughly doubles the row operations compared to stopping at REF, which is the tradeoff you're making for a solution you can read without back-substituting.