Reduced Row Echelon Form (RREF)
Reduced row echelon form (RREF) is the unique simplest form a matrix can be brought to by row operations. The calculator performs Gauss-Jordan elimination, showing every swap, scaling and elimination step.
A canonical form, and the route to it
Row operations do not change what a matrix means. Swapping two rows, scaling one, or adding a multiple of one to another all leave the underlying relationships intact — which raises an obvious question: how far can a matrix be simplified before the operations run out?
Reduced row echelon form is the answer, and it is a single answer. Every matrix has exactly one, reachable by any sequence of valid operations. This calculator produces it by Gauss-Jordan elimination and logs every step on the way.
Uniqueness is what makes this form worth naming. Two people eliminating in different orders, making different choices about which row to use first, arrive at the identical matrix — so the form is a property of the matrix rather than of the method.
The row-operation log is the other half of the output. Learning elimination means learning which operation to reach for next, and a list of the choices actually made is more instructive than the destination alone.
How to use this calculator
- Enter the matrix Commas between entries, semicolons between rows. Any rectangular shape is accepted, and augmented matrices are entered as one wider matrix.
- Follow the row operations in order Each is listed separately in the notation used when working by hand. A matrix already in reduced form produces none, which is reported rather than left blank.
- Read the reduced matrix Leading entries are 1, each is alone in its column, and they step down and to the right with zero rows at the bottom.
- Note the pivot columns They are listed by index. For an augmented matrix they identify which variables are determined and which are free.
How the elimination proceeds
The algorithm walks the columns left to right, keeping track of which row it is working on. For each column it looks for the entry of largest magnitude in the rows not yet used, and swaps that row into position — a choice that has no effect on the final form but keeps the divisions numerically stable.
If the largest candidate is still below the working tolerance, the column has nothing usable in it. That column is skipped without consuming a row, which is how a free column arises, and the walk moves on with the same working row.
Otherwise the chosen row is divided through by its leading entry so that entry becomes 1, and then multiples of it are subtracted from every other row — above as well as below. Clearing upwards is what distinguishes this from plain echelon form, and it is why each leading 1 ends up alone in its column.
A final pass replaces any entry left within rounding distance of zero by an exact zero, so the reported matrix is clean rather than dotted with residues from the arithmetic. The scaling step is skipped when a leading entry is already 1, which is why the log for a tidy matrix is shorter than expected.
What each input means
- A Matrix — form field “Matrix (rows separated by ;)”
- Any rectangular matrix. For a system of equations, enter the coefficients with the right-hand side as a final column.
- R Reduced form
- The unique reduced row echelon form of the input. It depends on the matrix alone, not on the order of operations used.
- pivots Pivot columns
- The columns holding a leading 1. Their count is the rank; the remaining columns correspond to free variables.
Worked examples
Every number below is produced by the same calculation engine the tool above runs. Nothing here is typed by hand, so the walkthrough cannot drift from what you get when you enter the same values yourself.
An augmented system
A 3×4 matrix representing three equations in three unknowns, with the last column as the right-hand side.
Inputs Matrix (rows separated by ;) = 1, 2, -1, -4; 2, 3, -1, -11; -2, 0, -3, 22
- Matrix A 3×4 [[1, 2, -1, -4], [2, 3, -1, -11], [-2, 0, -3, 22]]
- Method Gauss-Jordan elimination — pivot, scale to 1, then clear above and below.
- Row op Swap R1 ↔ R2
- Row op R1 → (1/2)·R1
- Row op R2 → R2 − (1)·R1
- Row op R3 → R3 − (-2)·R1
- Row op Swap R2 ↔ R3
- Row op R2 → (1/3)·R2
- Row op R1 → R1 − (1.5)·R2
- Row op R3 → R3 − (0.5)·R2
- Row op R3 → (1/0.166667)·R3
- Row op R1 → R1 − (1.5)·R3
- Row op R2 → R2 − (-1.33333)·R3
- RREF [[1, 0, 0, -8], [0, 1, 0, 1], [0, 0, 1, -2]]
- Pivots column 1, column 2, column 3
- Rank 3
Result [[1, 0, 0, -8], [0, 1, 0, 1], [0, 0, 1, -2]]
The first three columns reduce to the identity, and the last column then holds the solution directly — one value per variable, read off without any back-substitution. That is the payoff for clearing above the pivots as well as below.
The log shows a swap early on, because the algorithm prefers the largest available pivot rather than the first non-zero one. The final form would be identical without that swap; only the arithmetic along the way changes.
A matrix already in reduced form
The 3×3 identity matrix, which satisfies every condition of the form as it stands.
Inputs Matrix (rows separated by ;) = 1, 0, 0; 0, 1, 0; 0, 0, 1
- Matrix A 3×3 [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
- Method Gauss-Jordan elimination — pivot, scale to 1, then clear above and below.
- Row op No operations needed — matrix already in RREF.
- RREF [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
- Pivots column 1, column 2, column 3
- Rank 3
Result [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
No operations are performed and the log says so explicitly rather than appearing empty. Every leading entry is already 1, alone in its column, and correctly positioned.
This is the fixed point of the procedure: reducing a matrix that is already reduced returns it unchanged, which is the consistency check the uniqueness claim implies.
Reading the result
Reading a solution from an augmented matrix
A pivot in every coefficient column and none in the final column means a unique solution, read straight from the last column. A pivot in the final column means the system is inconsistent, since it asserts that zero equals something non-zero.
Non-pivot columns are free
A coefficient column without a pivot corresponds to a variable that can take any value, with the pivot variables adjusting to match. The number of such columns is how many parameters the solution family needs.
Uniqueness is of the form, not the route
Different elimination orders produce different logs and identical results. If your reduced matrix differs from the one shown, one of the two contains an arithmetic error — the form leaves no room for legitimate disagreement.
When you would use this
Solving a linear system by hand
Augmenting the coefficients with the constants and reducing gives the solution without back-substitution, and shows immediately whether one exists at all.
Finding a basis from a spanning set
The pivot columns of the reduced form identify which of the original columns form an independent set. Those columns of the original matrix are a basis for its column space.
Assumptions and limitations
What this calculator assumes
- Row operations preserve the row space, so the reduced form describes the same relationships as the input.
- The largest available entry is chosen as each pivot, which affects the log but not the result.
- Entries within rounding distance of zero are set to exact zero before the form is reported.
- Any rectangular shape is accepted; squareness is not required.
Where it stops being the right tool
- Entries are shown as decimals rather than exact fractions, so a value of one third appears rounded.
- The solution to an augmented system is not spelled out in words — the reduced matrix has to be read.
- A basis for the null space is not produced from the free columns.
Common mistakes
Stopping at echelon form
Why it happens. Once every entry below the pivots is zero the matrix looks finished, and back-substitution will indeed work from there. It is not the reduced form, and it is not unique.
How to avoid it. Clear above each pivot as well. The reduced form has a single non-zero entry in every pivot column, which is what makes the answer readable without substitution.
Scaling a row and forgetting the whole row
Why it happens. Attention goes to the leading entry being turned into 1, and the rest of the row — including any augmented column — has to be divided by the same amount.
How to avoid it. Apply every operation across the full width. In an augmented matrix a partially scaled row silently changes the system being solved.
Reading a different reduced form as a valid alternative
Why it happens. Row reduction allows genuine freedom in which operation to perform next, so it feels as though the destination might vary too.
How to avoid it. It does not. Compare entry by entry: a difference means one of the two calculations went wrong, and the log shows where to look.
Learn why this works
Frequently asked questions
What makes RREF unique?
The four conditions pin it down completely: every leading entry is 1, each leading 1 is the only non-zero entry in its column, the leading 1s move down and to the right, and any zero rows sit at the bottom. No two different matrices satisfying all four are row-equivalent.
Why is RREF useful?
It exposes the rank as the number of pivots, identifies which columns are independent, and for an augmented matrix lets the solution be read directly from the final column without back-substitution.
What is the difference between REF and RREF?
Echelon form only requires zeros below each leading entry. The reduced form additionally requires each leading entry to be 1 and to be the only non-zero entry in its column — which is what buys uniqueness and the readable solution.
Does the order of row operations change the answer?
No. It changes the log and the intermediate matrices, but the reduced form is a property of the original matrix. That is precisely what uniqueness means.