Reduced row echelon form has a leading 1 in each row, each further right than the last, and zeros above and below it. The number of those leading 1s is the rank. Everything else — independence, solvability, the null space — can be read off from there.
The three row operations
Elimination uses exactly three moves, and no others are needed.
Swap two rows. Multiply a row by a non-zero number.Add a multiple of one row to another.
What makes them safe is that every one is reversible, so none of them changes the solution set of the system the matrix represents. You are rewriting the same equations, not different ones.
The “non-zero” in the second is essential. Multiplying a row by zero destroys an equation and cannot be undone, which is exactly why it is excluded.
Echelon and reduced echelon
Two forms, and the difference is how far the work is taken.
Row echelon form clears only below each pivot, leaving a staircase. Solving from it needs back-substitution, and it is what Gaussian elimination produces.
Reduced row echelon form also clears above each pivot and scales every pivot to 1. The solution can be read straight off, with no substitution at all.
Reduced form has one property that plain echelon form lacks: it is unique. Any two people reducing the same matrix reach the same reduced form, whatever order they work in. Plain echelon form depends on the choices made along the way, which is why this page produces the reduced one.
Why exactness matters
This is the section that justifies how the page is built.
Rank is the number of non-zero pivots, so computing it is a sequence of questions of the form “is this entry zero?”. That is precisely the kind of question floating point answers badly.
Take a matrix whose third row is exactly row one plus row two. Its rank is 2, and elimination should leave the third row entirely zero. In double precision the subtractions leave something like 2.2e−16 instead, the algorithm sees a non-zero pivot, and the reported rank is 3.
The usual fix is a tolerance: treat anything below some ε as zero. It helps, and it cannot be made correct in general — a matrix with genuinely tiny entries then has its real pivots discarded. Any threshold is wrong for some matrix.
Exact rational arithmetic sidesteps the question entirely. Zero is zero, the rank is right, and there is no parameter to tune. The cost is that it only works for the modest sizes this page handles — which is exactly the range where a person is trying to understand the answer rather than just consume it.
Rank, nullity and the null space
Rank is the number of pivots: how many genuinely independent rows there are, and the dimension of the space they span.
Nullity is the number of free columns: how many independent vectors the matrix sends to zero.
Rank + nullity = number of columns. Always, for every matrix. Every input dimension is either preserved by the transformation or crushed by it, and the two counts have to add up.
The null space basis falls straight out of the reduced form: set one free variable to 1, the rest to 0, and solve for the pivots. One vector per free column, and the page checks that the matrix sends each of them to exactly zero.
For a system of equations these numbers are the whole answer. Full column rank means at most one solution; a nullity above zero means infinitely many, with the null space describing exactly how they vary.
Where it gets used
Solving systems. Reduce the augmented matrix and read off the answer. It is what elimination was invented for.
Testing independence. Stack vectors as rows and reduce: the rank is how many are genuinely independent, and a zero row shows one was redundant.
Finding bases. The pivot columns of the original matrix form a basis for its column space, and the free columns generate the null space.
Inverting. Reducing [A | I] to [I | A⁻¹] is the same algorithm applied to a wider matrix.
Sources and methodology
Gaussian elimination and the rank-nullity theorem are standard; these are the references.
Method. Every entry stays an exact rational through the whole elimination. That is not a refinement here, it is the difference between a right and a wrong answer: rank is decided entirely by which pivots are zero, and a floating-point pivot that should be zero arrives as a tiny non-zero number, so a rank-deficient matrix is reported as full rank. The suite builds matrices with a deliberate dependency — a third row that is an exact combination of the first two — and requires the reported rank to be at most 2. That engine is verified on every change against 104 hand-written assertions, including that a row built as an exact combination of two others never raises the reported rank above two, across three hundred generated cases, and that every null space basis vector is sent to exactly zero. The count and the per-case breakdown are published on the formula verification page.
Read the guide
Elimination on an augmented matrix is how a system of equations gets solved — the System of Equations Calculator does that directly.