The strategy is to handle the two cosets of $O_3(\mathbb{R})$ separately: rotations ($\det = 1$) decompose into at most two reflections, and orientation-reversing isometries ($\det = -1$) are a reflection times a rotation, hence at most three reflections.
**Step 1: Rotations are products of at most two reflections.**
Let $A \in \mathrm{SO}_3(\mathbb{R})$. By the [SO3 Rotation Theorem](/theorems/806), in some orthonormal basis $A$ takes the form:
\begin{align*}
A' = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}.
\end{align*}
The upper-left $2 \times 2$ rotation can be written as the product of two reflections in the $2$D plane:
\begin{align*}
\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} = \begin{pmatrix} -\cos\theta & -\sin\theta \\ \sin\theta & -\cos\theta \end{pmatrix} \begin{pmatrix} -1 & 0 \\ 0 & 1 \end{pmatrix},
\end{align*}
where both factors have determinant $-1$ (hence are reflections in $O_2$). Extending these to $3 \times 3$ matrices by adding a $1$ in the $(3,3)$ entry yields two reflections in $O_3(\mathbb{R})$ whose product is $A'$. Conjugating back to the original basis preserves the product-of-reflections structure.
**Step 2: Orientation-reversing isometries are products of three reflections.**
The coset decomposition gives:
\begin{align*}
O_3(\mathbb{R}) = \mathrm{SO}_3(\mathbb{R}) \;\dot\cup\; R_0 \cdot \mathrm{SO}_3(\mathbb{R}),
\end{align*}
where $R_0 = \operatorname{diag}(-1, 1, 1)$ is a reflection. If $B \in O_3(\mathbb{R})$ with $\det B = -1$, write $B = R_0 \cdot (R_0 B)$. Since $\det(R_0 B) = (-1)(-1) = 1$, the matrix $R_0 B \in \mathrm{SO}_3(\mathbb{R})$ is a product of at most two reflections by Step 1. Therefore $B$ is a product of at most $1 + 2 = 3$ reflections.
**Step 3: Conclude.**
Every element of $O_3(\mathbb{R})$ is a product of at most three reflections.