thin (reduced) SVD
The full SVD carries a lot of dead weight. If A is a tall 1000-by-3 matrix, the full U is 1000-by-1000 — a million entries — even though only the first 3 columns ever interact with the singular values; the other 997 columns multiply zeros in Sigma. The thin SVD throws away that wasted structure and keeps only the parts that do work.
Concretely, for a tall m-by-n matrix with m >= n, the thin SVD writes A = U_hat Sigma_hat V^T, where U_hat is m-by-n (just the first n left singular vectors), Sigma_hat is n-by-n square diagonal, and V is n-by-n. If you go further and keep only the r nonzero singular values (r = rank A), you get the compact SVD A = U_r Sigma_r V_r^T with U_r being m-by-r, Sigma_r being r-by-r and invertible, and V_r being n-by-r.
The product is identical to the full SVD — you have lost nothing about A, only the columns of U that paired with zero singular values and contributed nothing. For wide matrices (m < n) the same idea trims V instead. This is the form numerical libraries return by default, because it stores and computes the minimum that reconstructs A exactly.
Think of it as the difference between a complete map of the world and a map cropped to the only country you will ever drive in. The compact version is also the natural home for the pseudoinverse and for low-rank work, since Sigma_r is square and invertible and there are no padding zeros to step around.
For a tall skinny matrix the thin SVD is vastly cheaper yet reconstructs A perfectly.
Thin keeps n singular vectors (some sigma's may still be zero); compact keeps only the r nonzero ones. People often say thin loosely to mean either; check whether the kept block is n-by-n or r-by-r.