Visual Tools
Calculators
Tables
Mathematical Keyboard
Converters
Other Tools


Outer Product of Vectors


Symbolic visualization of u vᵀ — every entry of u against every entry of v — built cell by cell, row by row, or column by column.

Method?The outer product of a column vector u with m entries and a row vector vᵀ with n entries is the m×n matrix whose (i, j) entry is u_i·v_j. It is the opposite of the inner product: no matching-length rule, and a whole matrix out instead of a single number. Every row of the result is a multiple of vᵀ and every column a multiple of u, so the matrix has rank 1.
Lengths (independent)
u3 v3result 3×3
u3×1
u1
u2
u3
·
vᵀ1×3
v1
v2
v3
=
u vᵀ3×3
?
?
?
?
?
?
?
?
?
Step 1 / 11

Step explanations

1Outer product u vᵀ
u is a column with 3 entries and vᵀ a row with 3. Their outer product is the 3×3 matrix whose entry at row i, column j is ui · vj. There is no matching-length rule — every entry of u meets every entry of v, so the result has a row for each ui and a column for each vj.
A column times a row: no matching lengths, and a matrix out instead of a number. Learn more about the opening scene · what it is








Key Terms

Outer product — the matrix uvT\mathbf{u}\mathbf{v}^T built from a column u\mathbf{u} with mm entries and a row vT\mathbf{v}^T with nn entries; its entry at row ii, column jj is uivju_i v_j.

Result shapem×nm \times n: one row for each entry of u\mathbf{u}, one column for each entry of v\mathbf{v}. The two lengths need not match.

Rank-1 matrix — a matrix all of whose rows are multiples of one row vector, equivalently all of whose columns are multiples of one column vector. Every outer product of non-zero vectors is rank 1, and every rank-1 matrix is an outer product.

Inner product — the same pairing of entries summed into a single number, vTu=iuivi\mathbf{v}^T\mathbf{u} = \sum_i u_i v_i; requires matching lengths.

Dyadic product — an older name for the outer product, still used in physics.

Tensor product — the general construction of which the outer product of two vectors is the simplest case, written uv\mathbf{u} \otimes \mathbf{v}.

Column times row — the matrix-multiplication reading: an m×1m \times 1 matrix times a 1×n1 \times n matrix is m×nm \times n, with inner dimension 11.

Getting Started with the Visualizer

Set the two lengths, pick a method, then watch uvT\mathbf{u}\mathbf{v}^T fill.

• Use the Method pills to build the matrix cell by cell, row by row, or column by column
• Use the two length steppers independently: u\mathbf{u} sets the number of rows and v\mathbf{v} the number of columns of the result (1 to 5 each)
• Hover the ? icon for a reminder of what the outer product is and why it has rank 1
• Press play or step manually through the scene player; the speed selector and step log let you control pace and review
• Switch method at the same dimensions to see that all three routes fill the same matrix — they differ only in how the entries are grouped

The Three Methods

The visualizer offers three routes to the same matrix, and the second and third are the ones that explain its structure.

Cell by cell — one entry per scene in row-major order, uiu_i paired with vjv_j; the definition made literal, m×nm \times n steps
Row by row — one row per scene: row ii is uivTu_i \, \mathbf{v}^T, the entire row vector scaled by a single entry of u\mathbf{u}; mm steps
Column by column — one column per scene: column jj is vjuv_j \, \mathbf{u}, the entire column vector scaled by a single entry of v\mathbf{v}; nn steps

The row and column views make the same point from two sides. Every row is a multiple of vT\mathbf{v}^T and every column a multiple of u\mathbf{u}, so the matrix carries only one direction on each side. That is what rank 1 means.

The Opening Scene: A Column, a Row, and a Grid

The player opens with u\mathbf{u} standing as a column, vT\mathbf{v}^T lying as a row, and an empty m×nm \times n grid waiting for the result. At the default lengths both vectors have three entries and the grid is 3×33 \times 3.

Nothing is computed yet. What the scene establishes is the shape of the answer: a matrix, with as many rows as u\mathbf{u} has entries and as many columns as v\mathbf{v}.
u3×1u1u2u3·vᵀ1×3v1v2v3=u vᵀ3×3?????????
Opening scene, frozen

u standing as a column, vT lying as a row, and an empty 3×3 grid. No matching-length rule here: the result has a row per entry of u and a column per entry of v.

The shape rule is the reverse of the inner product's. There, matching lengths were required and the result was a single number. Here, no matching is required, because no entry of u\mathbf{u} ever has to pair with a specific entry of v\mathbf{v} — every entry meets every entry.

The orientation is the whole distinction. A column times a row is m×1m \times 1 by 1×n1 \times n, and the inner dimension 11 means each entry of the product is a single multiplication with nothing to sum. A row times a column, 1×n1 \times n by n×1n \times 1, is the inner product.

Cell by Cell: The Definition Made Literal

The cell method fills one entry per scene in row-major order: uiu_i meets vjv_j and the product lands at row ii, column jj.

The frozen picture below is the fifth of nine steps at 3×33 \times 3, the centre entry u2v2u_2 \cdot v_2, with the first four cells already filled.
u3×1u1u2u3·vᵀ1×3v1v2v3=u vᵀ3×3u1·v1u1·v2u1·v3u2·v1u2·v2????
Cell method, the centre entry

u2 and v2 highlighted, their product landing at row 2, column 2, with the first four cells already filled. Row index from u, column index from v.

The row index always comes from u\mathbf{u} and the column index from v\mathbf{v}, and the picture makes the reason plain: the active entry of u\mathbf{u} sits level with the destination row, and the active entry of vT\mathbf{v}^T sits above the destination column.

There is no accumulation. Each cell is one product and depends on nothing else in the grid, so the nine steps could run in any order; the row-major sweep is a presentational choice. That independence is also what makes the row and column readings possible.

Row by Row: Each Row Is a Copy of v Transpose

The row method fills one row per scene: a single entry uiu_i scales the entire row vector vT\mathbf{v}^T, and the scaled copy becomes row ii of the result.

The frozen picture below is the second step: row 22 being written as u2vTu_2 \, \mathbf{v}^T, with row 11 already filled.
u3×1u1u2u3·vᵀ1×3v1v2v3=u vᵀ3×3u1·v1u1·v2u1·v3u2·v1u2·v2u2·v3???
Row method, row 2

One entry of u against all of vT: row 2 is u2 times the whole row vector. Every row of the result is a multiple of vT.

This is scalar multiplication of a vector, applied mm times with mm different scalars. Every row of the result is therefore a multiple of the same row vT\mathbf{v}^T, and the row space of the matrix is the single line through v\mathbf{v}.

That is half of the rank-1 story. A matrix whose rows are all multiples of one vector has rank at most 11, however many rows it has: the rows carry one direction and mm different lengths, nothing more.

Column by Column: Each Column Is a Copy of u

The column method fills one column per scene: a single entry vjv_j scales the entire column u\mathbf{u}, and the scaled copy becomes column jj of the result.

The frozen picture below is the second step: column 22 being written as v2uv_2 \, \mathbf{u}, with column 11 already filled.
u3×1u1u2u3·vᵀ1×3v1v2v3=u vᵀ3×3u1·v1u1·v2?u2·v1u2·v2?u3·v1u3·v2?
Column method, column 2

One entry of v against all of u: column 2 is v2 times the whole column. Every column of the result is a multiple of u - the other half of rank 1.

This is the other half of the story. Every column is a multiple of u\mathbf{u}, so the column space is the line through u\mathbf{u}, and the matrix sends every input vector w\mathbf{w} to a multiple of u\mathbf{u}: (uvT)w=u(vw)(\mathbf{u}\mathbf{v}^T)\mathbf{w} = \mathbf{u}\,(\mathbf{v} \cdot \mathbf{w}).

Row space a line, column space a line — the two views agree that the rank is 11, which is the rank theorem in miniature: row rank equals column rank. It is also why the outer product is the building block of the singular value decomposition, where a general matrix is written as a sum of such one-direction pieces.

The Completed Product

The final scene shows every cell filled, so the grid reads uivju_i \cdot v_j throughout: m×nm \times n products from m+nm + n numbers.

Whichever method built it, the same matrix results; the methods differ only in how the products are grouped.
u3×1u1u2u3·vᵀ1×3v1v2v3=u vᵀ3×3u1·v1u1·v2u1·v3u2·v1u2·v2u2·v3u3·v1u3·v2u3·v3
Completed outer product, frozen

Nine products from six numbers. Rows are copies of vT, columns are copies of u, and the diagonal sums to the inner product u·v.

Two consequences are worth carrying away. The matrix is singular whenever it is square with n2n \geq 2, because rank 11 is less than nn; its only non-zero eigenvalue is uv\mathbf{u} \cdot \mathbf{v} with eigenvector u\mathbf{u}. And the pair of vectors is not unique: (2u)(12v)T(2\mathbf{u})(\tfrac{1}{2}\mathbf{v})^T is the same matrix, so an outer product remembers the two directions and the product of the two lengths, not the lengths separately.

Swapping the roles of u\mathbf{u} and v\mathbf{v} transposes the grid, and summing the diagonal, when the grid is square, gives back the inner product. The outer product and the inner product are the same two vectors seen from opposite sides.

Reading the Scene Player

Each scene combines highlights, arrows, and a caption.

• In the cell method, the active entry of u\mathbf{u} is highlighted primary, the active entry of v\mathbf{v} secondary, and the destination cell accent; two arrows flow into it, one from each vector
• In the row method, one entry of u\mathbf{u} is primary, all of vT\mathbf{v}^T is secondary, and the whole destination row is accent, with an arrow from each entry of vT\mathbf{v}^T into its cell
• In the column method, the roles swap: all of u\mathbf{u} is primary, one entry of v\mathbf{v} secondary, and the whole destination column accent
• Filled cells show their symbolic content uivju_i \cdot v_j at a font size that scales with the larger dimension
• The step log on the right keeps a record of every completed cell, row or column

Choosing the Two Lengths

The two steppers are independent, and that independence is the first thing to notice.

• Set u\mathbf{u} to length 33 and v\mathbf{v} to length 22 for a 3×23 \times 2 result, or the reverse for 2×32 \times 3; nothing requires the lengths to agree
• Equal lengths give a square matrix, whose trace u1v1++unvnu_1 v_1 + \cdots + u_n v_n is the inner product of the same two vectors
• Length 11 on either side collapses the matrix to a single row or a single column, a scaled copy of the other vector
• Larger shapes make the rank-1 pattern more striking: at 5×55 \times 5 there are 2525 entries but only 1010 independent numbers behind them

What the Outer Product Is

The outer product of a column vector uRm\mathbf{u} \in \mathbb{R}^m and a row vector vT\mathbf{v}^T with vRn\mathbf{v} \in \mathbb{R}^n is the m×nm \times n matrix

uvT=(u1v1u1v2u1vnu2v1u2v2u2vnumv1umv2umvn),(uvT)i,j=uivj\mathbf{u}\mathbf{v}^T = \begin{pmatrix} u_1 v_1 & u_1 v_2 & \cdots & u_1 v_n \\ u_2 v_1 & u_2 v_2 & \cdots & u_2 v_n \\ \vdots & \vdots & \ddots & \vdots \\ u_m v_1 & u_m v_2 & \cdots & u_m v_n \end{pmatrix}, \qquad (\mathbf{u}\mathbf{v}^T)_{i,j} = u_i v_j


It is ordinary matrix multiplication of an m×1m \times 1 matrix by a 1×n1 \times n matrix, with inner dimension 11, so each entry is a single product rather than a sum. Reading the product by rows, row ii is uivTu_i \mathbf{v}^T; reading it by columns, column jj is vjuv_j \mathbf{u}.

The inner product is the same two vectors multiplied in the other order: vTu\mathbf{v}^T\mathbf{u} is 1×n1 \times n times n×1n \times 1, a 1×11 \times 1 matrix, a number. Outer and inner are the two ways a column and a row can meet.

Because every column of uvT\mathbf{u}\mathbf{v}^T is a multiple of u\mathbf{u}, the column space is the line through u\mathbf{u} and the rank is 11 whenever both vectors are non-zero. For the general theory of rank, see the matrix rank theory page.

Key Properties

The outer product is bilinear, and its structure follows from the entrywise formula.

Rank: rank(uvT)=1\operatorname{rank}(\mathbf{u}\mathbf{v}^T) = 1 for non-zero u,v\mathbf{u}, \mathbf{v}, and 00 if either is zero
Transpose: (uvT)T=vuT(\mathbf{u}\mathbf{v}^T)^T = \mathbf{v}\mathbf{u}^T — swapping the vectors transposes the matrix, so the outer product is not commutative unless u=v\mathbf{u} = \mathbf{v}
Bilinearity: (u1+u2)vT=u1vT+u2vT(\mathbf{u}_1 + \mathbf{u}_2)\mathbf{v}^T = \mathbf{u}_1\mathbf{v}^T + \mathbf{u}_2\mathbf{v}^T, and likewise in v\mathbf{v}
Scalar pull-out: (ku)vT=u(kv)T=kuvT(k\mathbf{u})\mathbf{v}^T = \mathbf{u}(k\mathbf{v})^T = k\,\mathbf{u}\mathbf{v}^T — the same matrix arises from many pairs of vectors
Action on a vector: (uvT)w=u(vw)(\mathbf{u}\mathbf{v}^T)\mathbf{w} = \mathbf{u}\,(\mathbf{v} \cdot \mathbf{w}) — the matrix sends every vector to a multiple of u\mathbf{u}
Trace (square case): tr(uvT)=uv\operatorname{tr}(\mathbf{u}\mathbf{v}^T) = \mathbf{u} \cdot \mathbf{v}
Symmetry: uuT\mathbf{u}\mathbf{u}^T is symmetric and positive semidefinite
Projection matrix: uuTuTu\dfrac{\mathbf{u}\mathbf{u}^T}{\mathbf{u}^T\mathbf{u}} projects any vector onto the line through u\mathbf{u}
Eigenvalues (square case): uv\mathbf{u} \cdot \mathbf{v} with eigenvector u\mathbf{u}, and 00 with multiplicity n1n - 1

Why It Matters

Rank-1 matrices are the atoms of matrix algebra, and the outer product is how they are written.

Matrix multiplication: ABAB is the sum of the outer products of the columns of AA with the rows of BB, AB=kakbkTAB = \sum_k \mathbf{a}_k \mathbf{b}_k^T
Singular value decomposition: any matrix is a sum of rank-1 outer products σkukvkT\sigma_k \mathbf{u}_k \mathbf{v}_k^T, ordered by importance; keeping the first few is low-rank approximation
Projection matrices: uuT/uTu\mathbf{u}\mathbf{u}^T / \mathbf{u}^T\mathbf{u} is the matrix form of projection onto a line
Rank-1 updates: the Sherman-Morrison formula and quasi-Newton methods adjust a matrix by adding an outer product
Statistics: a covariance matrix is an average of outer products (xμ)(xμ)T(\mathbf{x} - \boldsymbol{\mu})(\mathbf{x} - \boldsymbol{\mu})^T
Machine learning: Hebbian learning updates weights by yxT\mathbf{y}\mathbf{x}^T, and attention scores are built from products of the same shape
Physics: dyadic tensors such as the inertia tensor and stress tensor are sums of outer products

Worked Example

Take

u=(123),v=(45)\mathbf{u} = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix}, \quad \mathbf{v} = \begin{pmatrix} 4 \\ 5 \end{pmatrix}


The outer product is 3×23 \times 2:

uvT=(141524253435)=(458101215)\mathbf{u}\mathbf{v}^T = \begin{pmatrix} 1 \cdot 4 & 1 \cdot 5 \\ 2 \cdot 4 & 2 \cdot 5 \\ 3 \cdot 4 & 3 \cdot 5 \end{pmatrix} = \begin{pmatrix} 4 & 5 \\ 8 & 10 \\ 12 & 15 \end{pmatrix}


Read by rows: (4,5)(4, 5), (8,10)=2(4,5)(8, 10) = 2 \cdot (4, 5), (12,15)=3(4,5)(12, 15) = 3 \cdot (4, 5) — every row is a multiple of vT\mathbf{v}^T. Read by columns: (4,8,12)T=4u(4, 8, 12)^T = 4\mathbf{u} and (5,10,15)T=5u(5, 10, 15)^T = 5\mathbf{u} — every column is a multiple of u\mathbf{u}. The rank is 11.

The inner product is not defined for this pair, since the lengths differ. With v=(4,5,6)\mathbf{v} = (4, 5, 6) instead, the outer product becomes 3×33 \times 3 and its trace 4+10+18=324 + 10 + 18 = 32 equals uv\mathbf{u} \cdot \mathbf{v}. Set the visualizer to 33 and 22 and step through any method to see this matrix assembled symbolically.

Common Mistakes

A few mistakes recur.

Confusing outer with inneruvT\mathbf{u}\mathbf{v}^T is a matrix, vTu\mathbf{v}^T\mathbf{u} is a number; the order of the column and the row decides which
Requiring equal lengths — the inner product needs them, the outer product does not; a 33-vector and a 22-vector have a perfectly good 3×23 \times 2 outer product
Treating it as commutativevuT\mathbf{v}\mathbf{u}^T is the transpose of uvT\mathbf{u}\mathbf{v}^T, a different matrix unless u=v\mathbf{u} = \mathbf{v}
Expecting full rank — an n×nn \times n outer product has rank 11, never more; it is singular for n2n \geq 2
Reading a rank-1 matrix as arbitrary — if a matrix has the outer product pattern, it is determined by m+n1m + n - 1 numbers, not mnmn
Losing the row-column assignment — the row index comes from u\mathbf{u} and the column index from v\mathbf{v}; uivju_i v_j sits at (i,j)(i, j), not (j,i)(j, i)