HomeArticlesRobotics & Kinematics

FABRIK: Inverse Kinematics Without Matrices

Forward And Backward Reaching Inverse Kinematics solves where a robotic arm's joints should go to reach a target — purely geometrically, with no matrix inversion and no singularities.

mysimulator teamUpdated July 2026≈ 8 min read▶ Open the simulation

Forward is easy, inverse is hard

Forward kinematics (FK) is straightforward: given joint angles, compute the end-effector's position by summing link vectors. Inverse kinematics (IK) runs the other way — given a target position, find the joint configuration that reaches it — and it is genuinely harder. The problem is often underdetermined (infinitely many valid angle configurations for a redundant chain), sometimes overdetermined (target beyond the arm's reach, no exact solution exists), and always non-linear, since joint positions involve sums of sines and cosines.

The FABRIK algorithm: two passes, no angles

Proposed by Aristidou and Lasenby in 2011, FABRIK works directly with joint positions instead of angles. Each iteration alternates a forward pass that pulls the tip to the target, then a backward pass that re-anchors the root:

Forward pass — set p_n = target, then for i = n-1 down to 0:
  dir = (pᵢ − pᵢ₊₁) / |pᵢ − pᵢ₊₁|;  pᵢ = pᵢ₊₁ + dir · ℓᵢ₊₁

Backward pass — set p₀ = root anchor, then for i = 1 to n:
  dir = (pᵢ − pᵢ₋₁) / |pᵢ − pᵢ₋₁|;  pᵢ = pᵢ₋₁ + dir · ℓᵢ

Repeat until |p_n − target| < tolerance (usually ~5-10 iterations)

Each pass is a single sweep along the chain re-imposing link lengths — no trigonometry, no matrix inversion. If the target lies beyond the chain's total reach, FABRIK skips the iteration and points every link straight at the target, stretching the arm to its maximum extended length.

live demo · a chain converging on a moving target in a handful of passes● LIVE

FABRIK vs Jacobian methods

The classical alternative uses the Jacobian J mapping joint velocity to end-effector velocity, updating via Δθ = Jᵀ(JJᵀ + λ²I)⁻¹Δe (damped least squares). Jacobian methods can minimise secondary objectives like obstacle avoidance via null-space projection and often converge in fewer iterations for complex goals, but require O(n³) linear algebra per step and can become unstable near singularities. FABRIK, at O(n) per iteration with no matrix inversion at all, is the go-to choice for real-time interactive applications — game character IK for foot placement and hand-reaching, motion-capture retargeting, and prosthetic control — where robustness matters more than strict optimality. Joint angle constraints can still be layered on by clamping the direction vector to an allowed range during the backward pass.

Frequently asked questions

What does FABRIK stand for and who invented it?

FABRIK stands for Forward And Backward Reaching Inverse Kinematics, proposed by Andreas Aristidou and Joan Lasenby in 2011. It solves inverse kinematics by directly repositioning joint points rather than solving for joint angles, alternating a forward pass that pulls the chain toward the target and a backward pass that re-anchors the root.

Why is FABRIK faster than Jacobian-based inverse kinematics?

Each FABRIK iteration is O(n) in the number of joints, since it just recomputes positions along the chain twice. Jacobian pseudo-inverse methods require inverting an n x n matrix each step, which costs O(n cubed), and can become numerically unstable near singularities that FABRIK simply does not encounter.

How does FABRIK handle an unreachable target?

If the target distance from the root anchor exceeds the sum of all link lengths, FABRIK skips the iterative passes and instead points every link directly at the target in a straight line, stretching the chain to its full extended length toward the goal — the best possible approximation when no exact solution exists.

Try it live

Everything above runs in your browser — open Inverse Kinematics (FABRIK) and click to set a target, watching the chain reach it using alternating forward-backward passes across Single, Double and Spider modes.

▶ Open Inverse Kinematics simulation

What did you find?

Add reproduction steps (optional)