By the end of this page you'll see the determinant not as a formula you memorize, but as a single physical quantity — a scaling factor for volume — that a permutation sum, a cofactor expansion, and the Jacobian are all just different costumes for.
Stripped of all formality, the determinant is just: the factor by which a linear map stretches or shrinks volume — with a sign that flags whether it also flips the space inside out.
A matrix is usually introduced as a grid of numbers you multiply against a vector. Forget that for a moment. Geometrically, a matrix \(A\) is a rule that moves every point in the plane somewhere else — and it does it the same way everywhere, in the specific sense that it sends the grid of unit squares to a grid of identical parallelograms tiling the plane.
Play with the matrix below. Watch what happens to the grid, and in particular to the one shaded unit square.
Notice two things worth naming before we go further. First: the whole grid deforms uniformly — that's what "linear" buys you, so the fate of the single unit square in the corner already tells you the fate of every square in the plane. Second: the shaded parallelogram sometimes gets bigger, sometimes smaller, and if you push a slider far enough, the whole square can even flip over like a card being turned face-down. That area, with a sign attached for the flip, is the entire subject of this page.
The two columns of the matrix, \(\mathbf{u}=(a,c)\) and \(\mathbf{v}=(b,d)\), are exactly where the two edges of the unit square land. So the question "how much area does the map create?" is really: what is the area of the parallelogram spanned by \(\mathbf u\) and \(\mathbf v\)? Rather than quoting the formula, let's build it by cutting up a rectangle — a proof you can watch happen.
Drag either arrow tip and re-run the stages — the bounding-box-minus-corners argument works for any \(\mathbf u,\mathbf v\), not just the picture you started with, and the algebra tracks the picture exactly: whichever rectangles and triangles you subtract, they cancel down to \(ad-bc\).
Enclose \(\mathbf u=(a,c)\), \(\mathbf v=(b,d)\) in the axis-aligned box of width \(a+b\) and height \(c+d\) (assuming a convenient sign pattern; the algebra continues to hold in general because every piece is a signed area). Its area is \((a+b)(c+d)\). Subtract two copies of the triangle with legs \(a,c\) (area \(\tfrac12 ac\) each), two copies of the triangle with legs \(b,d\) (area \(\tfrac12 bd\) each), and two rectangles of area \(bc\) sitting in the remaining corners. What survives is
\[(a+b)(c+d) - ac - bd - 2bc = ad - bc.\]
This is the \(2\times2\) determinant, \(\det\begin{pmatrix}a&b\\c&d\end{pmatrix} = ad-bc\). It is signed: if \(\mathbf v\) sits clockwise from \(\mathbf u\) rather than counterclockwise, the same construction produces a negative number — the orientation flip from Step 1.
This is the \(2\times2\) determinant, \(\det\begin{pmatrix}a&b\\c&d\end{pmatrix} = ad-bc\). It is signed: if \(\mathbf v\) sits clockwise from \(\mathbf u\) rather than counterclockwise, the same construction produces a negative number — the orientation flip from Step 1.
In 3D the same question — how much volume does the image parallelepiped have — has a clean geometric answer: base area times height, i.e. take two of the three columns, find the parallelogram they span, then see how far the third column sticks out of that plane. That is the scalar triple product \(\mathbf u\cdot(\mathbf v\times\mathbf w)\), and if you expand it in coordinates you are forced, mechanically, into a sum over every way of picking one coordinate from each of the three vectors without repeating a row — that is, over every permutation of \(\{1,2,3\}\), each carrying a sign depending on whether the permutation is a reshuffle by an even or odd number of swaps.
Every term you revealed picks exactly one entry from row 1, one from row 2, one from row 3 — never sharing a column — and its sign is set by how many pairwise swaps it takes to sort that pattern back to the diagonal. Sum all \(3!=6\) such picks and you get exactly the volume the solid shows. Cofactor expansion, the technique usually taught first, is nothing but a recursive way of organizing this same sum row by row instead of listing it flat.
For an \(n\times n\) matrix \(A\), the Leibniz formula is
\[\det A = \sum_{\sigma \in S_n} \operatorname{sgn}(\sigma)\prod_{i=1}^{n} A_{i,\sigma(i)},\]
a sum over all \(n!\) permutations \(\sigma\) of \(\{1,\dots,n\}\), where \(\operatorname{sgn}(\sigma)=\pm1\) according to the parity of the number of transpositions composing \(\sigma\). Geometrically this is exactly the signed volume of the parallelepiped spanned by the columns of \(A\); cofactor (Laplace) expansion along a row or column regroups the same \(n!\) terms into \(n\) sums of \((n-1)!\) terms each, recursively.
Once you see the determinant as "the scale factor," a cluster of facts that look like separate theorems collapse into one observation each.
Multiplicativity, \(\det(AB)=\det(A)\det(B)\): applying \(A\) then \(B\) scales area by \(\det A\), then scales the result by \(\det B\) — scale factors of sequential transformations multiply, full stop; no separate proof needed. Singular \(\Rightarrow\) \(\det=0\): a matrix that squashes the plane onto a line (loses a dimension) has crushed all area to zero, so its scale factor must be zero — that is what "not invertible" looks like geometrically. Eigenvalues: along an eigen-direction the map is pure one-dimensional stretching by \(\lambda\); since the eigen-directions together tile out the whole space, the total volume scale factor is just the product of the individual stretches, \(\det A = \prod_i \lambda_i\).
Everything so far assumed the map was linear — the same stretching everywhere. A general smooth map \(f:\mathbb R^2\to\mathbb R^2\) is not linear globally, but calculus says it is linear locally: zoom in far enough around a point \(\mathbf x_0\) and \(f\) looks like its best linear approximation,
\[f(\mathbf x_0+d\mathbf x)\ \approx\ f(\mathbf x_0) + J(\mathbf x_0)\,d\mathbf x,\qquad J(\mathbf x_0)=\begin{pmatrix}\partial f_1/\partial x_1 & \partial f_1/\partial x_2\\ \partial f_2/\partial x_1 & \partial f_2/\partial x_2\end{pmatrix}.\]
\(J(\mathbf x_0)\), the Jacobian, is simply the matrix of that local linear map — so the question "how does area distort right here?" has exactly the same answer as before, \(|\det J(\mathbf x_0)|\), except the answer now depends on where you are. The canonical example is polar coordinates, \(f(r,\theta)=(r\cos\theta,\, r\sin\theta)\): a little \(dr\times d\theta\) cell doesn't map to a cell of the same area — it maps to one scaled by a factor that turns out to be exactly \(r\), which is why \(dx\,dy\) becomes \(r\,dr\,d\theta\) in every polar-coordinates integral you've ever computed.
Shrink \(\varepsilon\) and watch the true warped cell's area-per-\(\varepsilon^2\) converge to \(|\det J|=r_0\): the linear approximation isn't just close, it's exact in the limit — which is the entire content of calculus applied to a determinant.
If \(\mathbf y=f(\mathbf x)\) and probability mass can neither be created nor destroyed, then wherever \(f\) stretches area by \(|\det J|\), density must shrink by the same factor to keep total mass fixed:
\[p_Y(\mathbf y) = \frac{p_X(\mathbf x)}{|\det J_f(\mathbf x)|},\qquad \mathbf x = f^{-1}(\mathbf y).\]
This is precisely the object a normalizing flow optimizes: a neural network parametrizes an invertible \(f\), and training maximizes \(\log p_X(\mathbf x) - \log|\det J_f(\mathbf x)|\) — that log-determinant term is not a regularizer bolted on for stability, it is the change-of-variables formula, and the entire architectural cleverness of flow models (coupling layers, autoregressive layers) exists solely to make \(\log|\det J|\) cheap to compute for an otherwise expensive \(n\times n\) determinant.
The bars are an honest Monte Carlo histogram of samples pushed through \(f\); the curve is computed purely from the base density divided by \(|\det J_f|\) — no fitting involved. That they land on top of each other is the change-of-variables theorem, watched rather than proved.
Every step here answered the same question at increasing generality. In 2D, the determinant is a signed area you can derive by cutting up a rectangle. In \(n\)D, computing that volume via coordinates forces a sum over permutations — the Leibniz formula and cofactor expansion are just two ways to organize that same sum. Multiplicativity, singularity, and eigenvalues are restatements of "scale factors of composed maps multiply" and "zero volume means a lost dimension." The Jacobian is the same object at a point, once you accept that smooth maps are linear under a microscope. And the moment you need to move a probability density through a change of variables — which is exactly what a normalizing flow does — the determinant reappears as the one quantity standing between "how the map bends space" and "how mass must redistribute to survive it."