Fluid Dynamics
Stokes Drag
Why tiny things fall slowly through fluid
Stokes drag is the viscous resistance force on a small, slowly moving sphere in a fluid: F = 6πμrv, where μ is the fluid's dynamic viscosity, r the sphere radius, and v its speed. Because it grows only linearly with speed — and the sphere reaches terminal velocity almost instantly — Stokes drag explains why fog droplets float, why cells settle gently in a test tube, and how Millikan weighed the electron's charge. It is the exact creeping-flow solution George Stokes pulled out of the Navier–Stokes equations in 1851, valid whenever the Reynolds number is far below 1.
- Drag forceF = 6πμrv
- ValidityRe = ρvd/μ < 1 (creeping flow)
- Terminal velocityv_t = 2r²(ρ_p − ρ_f)g / (9μ)
- ScalingF ∝ v, v_t ∝ r²
- DerivedGeorge G. Stokes, 1851
- Air viscosity (20 °C)μ ≈ 1.8×10⁻⁵ Pa·s; water ≈ 1.0×10⁻³ Pa·s
Interactive visualization
Press play, or step through manually. The visualization is yours to drive — try it before reading on.
Watch the 60-second explainer
A condensed visual walkthrough — narrated, captioned, under a minute.
What Stokes drag is
Drop a steel ball bearing into honey and it sinks slowly and steadily — no acceleration you can see, no splash, no turbulent wake. That smooth, speed-limited fall is governed by Stokes drag: the resistance a fluid exerts on a small sphere when the flow around it is so gentle that viscosity, not inertia, runs the show. The force is
F = 6 π μ r v
where μ (mu) is the fluid's dynamic viscosity in pascal-seconds, r is the sphere's radius, and v is its speed relative to the fluid far away. The drag opposes the motion. The remarkable thing is the linearity: double the speed and you exactly double the drag. That is completely unlike the everyday inertial drag of a car or a thrown ball, which grows with the square of speed.
The reason is the flow regime. At very low speeds the fluid slides around the sphere in smooth, time-reversible laminar streamlines with no wake. This is the creeping-flow or Stokes-flow limit, in which the inertial terms of the Navier–Stokes equations are negligible compared to the viscous terms. Stokes solved that simplified equation exactly in 1851 and integrated the resulting pressure and shear stress over the sphere's surface. The total comes out as 6πμrv — one-third of it pressure drag, two-thirds skin friction.
The low-Reynolds-number world
Whether Stokes' law applies is decided by the Reynolds number, the dimensionless ratio of inertial to viscous forces:
Re = ρ v d / μ (d = 2r is the sphere diameter)
Stokes drag is accurate to a few percent when Re < 0.1 and remains a useful estimate up to Re ≈ 1. Above that, inertia begins to matter: the flow separates, a wake forms, and the drag stops being linear. Engineers then abandon the clean formula and use a measured drag coefficient C_d that depends on Re. In fact Stokes' law is identical to writing the general drag formula F = ½ ρ v² C_d (πr²) with the special low-Re value C_d = 24/Re.
Low Reynolds number is the natural habitat of the very small and the very slow. A swimming bacterium, a pollen grain settling, a red blood cell in plasma, a paint pigment in solvent — all live at Re far below 1, in a world where coasting is impossible: stop pushing and you stop instantly, because viscous drag has no memory of your momentum.
Terminal velocity from a force balance
Let a sphere of density ρ_p fall through a fluid of density ρ_f. Three forces act: gravity down, buoyancy up, and Stokes drag opposing the motion (so up, while falling). At terminal velocity v_t the net force is zero:
6 π μ r v_t = (4/3) π r³ (ρ_p − ρ_f) g
⇒ v_t = 2 r² (ρ_p − ρ_f) g / (9 μ)
Two features jump out. First, terminal velocity scales with the square of the radius — a particle twice as wide falls four times faster. Second, it is inversely proportional to viscosity, so the same particle drifts down in honey thousands of times slower than in water. Because the drag is linear, the approach to terminal velocity is a simple exponential with time constant τ = m/(6πμr); for micron-scale particles τ is microseconds, so they are effectively always at terminal velocity.
Real numbers
The formulas only become real when you put air, water, and honey into them. The viscosity μ is the single most important number — note how wildly it ranges across everyday fluids.
| Fluid (≈20 °C) | Dynamic viscosity μ (Pa·s) | Relative to water |
|---|---|---|
| Air | 1.8 × 10⁻⁵ | ~1/55 of water |
| Water | 1.0 × 10⁻³ | 1× |
| Olive oil | 8.4 × 10⁻² | ~84× |
| Glycerine | ~1.4 | ~1,400× |
| Honey | ~10 | ~10,000× |
Now the terminal velocities. These all use v_t = 2r²(ρ_p − ρ_f)g / (9μ) with g = 9.81 m/s². The last column shows how convincingly each case sits in the Stokes regime (Re ≪ 1).
| Falling object | Terminal velocity v_t | Reynolds number |
|---|---|---|
| 1 µm-radius fog droplet in air | ≈ 1.2 × 10⁻⁴ m/s (0.12 mm/s) | ~2 × 10⁻⁵ (Stokes valid) |
| 10 µm dust grain in air (ρ≈2500) | ≈ 7.6 × 10⁻³ m/s (7.6 mm/s) | ~5 × 10⁻³ (Stokes valid) |
| 100 µm sand grain in water | ≈ 9 × 10⁻³ m/s (9 mm/s) | ~0.9 (edge of Stokes) |
| 2 mm steel ball in glycerine | ≈ 0.010 m/s (1.0 cm/s) | ~0.018 (Stokes valid) |
| 1 mm raindrop in air | (measured ≈ 4 m/s) | ~280 (Stokes FAILS — use C_d) |
The raindrop is the cautionary tale: plug it blindly into Stokes' law and you would predict an absurd terminal velocity of tens of metres per second. Its Reynolds number is in the hundreds, far outside the creeping-flow regime, so the real fall speed is set by turbulent form drag and is only about 4 m/s.
Where Stokes drag shows up
- Millikan's oil-drop experiment (1909). Charged oil droplets a micron across fall under gravity and rise under an electric field. Stokes' law converts their measured fall speed into a radius and mass, and the field needed to suspend a drop reveals its charge — always a multiple of e ≈ 1.6 × 10⁻¹⁹ C.
- Sedimentation and centrifuges. Cells, proteins, and nanoparticles separate by size because v_t ∝ r². A centrifuge replaces g with an effective acceleration of thousands of g, so the same r²-dependence sorts particles in minutes instead of days.
- Atmospheric science. The lifetime of aerosols, volcanic ash, and pollen in the air is set by Stokes settling; this is why fine particulate pollution lingers for days while coarse grit drops out quickly.
- Falling-ball viscometers. Time how long a calibrated ball takes to sink a known distance through a liquid, invert Stokes' law, and you have measured the liquid's viscosity μ directly.
- Microbiology and microfluidics. Swimming bacteria and lab-on-a-chip flows live at Re ≪ 1, where Stokes drag governs propulsion, mixing, and particle transport.
A sketch of the derivation
In the creeping-flow limit the Navier–Stokes equations drop their nonlinear inertial term and reduce to the linear Stokes equations: ∇p = μ∇²u, with incompressibility ∇·u = 0. Solving these around a sphere with no-slip on its surface (fluid velocity zero at the wall) and uniform flow U far away gives the velocity and pressure fields exactly. Integrating the resulting stress tensor over the sphere yields the drag:
F_drag = ∮ (pressure + viscous shear) dA = 6 π μ r U
pressure (form) drag = 2 π μ r U (one third)
skin-friction drag = 4 π μ r U (two thirds)
The split into one-third pressure and two-thirds friction is a famous and exact result. It also explains the scaling: viscous stress ~ μU/r acting over an area ~ r² gives a force ~ μUr — linear in radius and speed, with the pure number 6π supplied by the full integration.
JavaScript — Stokes drag calculations
// Stokes drag force on a sphere
function stokesDrag(mu, r, v) {
return 6 * Math.PI * mu * r * v; // newtons
}
// 5 µm sphere at 1 mm/s in water
console.log(stokesDrag(1.0e-3, 5e-6, 1e-3).toExponential(2)); // ~9.4e-11 N
// Reynolds number (decides validity)
function reynolds(rho, v, d, mu) {
return rho * v * d / mu;
}
// Terminal velocity from the force balance
function terminalVelocity(r, rhoParticle, rhoFluid, mu, g = 9.81) {
return (2 * r * r * (rhoParticle - rhoFluid) * g) / (9 * mu);
}
// 1 µm fog droplet (water) settling in air
const muAir = 1.8e-5, rhoAir = 1.2;
const vFog = terminalVelocity(0.5e-6, 1000, rhoAir, muAir);
console.log(`Fog v_t = ${(vFog * 1000).toFixed(3)} mm/s`); // ~0.030 mm/s for r=0.5µm
console.log(`Re = ${reynolds(rhoAir, vFog, 1e-6, muAir).toExponential(1)}`); // ~2e-6 ⇒ valid
// 1 mm raindrop in air — Stokes predicts nonsense, check Re first
const vDropStokes = terminalVelocity(0.5e-3, 1000, rhoAir, muAir);
const reDrop = reynolds(rhoAir, vDropStokes, 1e-3, muAir);
console.log(`Raindrop Stokes v_t = ${vDropStokes.toFixed(0)} m/s, Re = ${reDrop.toFixed(0)}`);
if (reDrop > 1) console.log('Re >> 1: use a drag coefficient, not Stokes law');
// Time constant to reach terminal velocity (exponential approach)
function dragTimeConstant(mass, mu, r) {
return mass / (6 * Math.PI * mu * r); // seconds
}
const m = (4 / 3) * Math.PI * Math.pow(1e-6, 3) * 1000; // 1µm water droplet
console.log(`tau = ${dragTimeConstant(m, muAir, 1e-6).toExponential(2)} s`); // microseconds
// Falling-ball viscometer: invert Stokes law to get mu
function viscosityFromFall(r, rhoBall, rhoFluid, vMeasured, g = 9.81) {
return (2 * r * r * (rhoBall - rhoFluid) * g) / (9 * vMeasured);
}
// 2 mm steel ball sinks 4 cm/s in an unknown oil
console.log(viscosityFromFall(1e-3, 7800, 900, 0.04).toFixed(2), 'Pa·s'); // ~0.38
Common mistakes
- Using Stokes' law outside its regime. Always check Re = ρvd/μ first. For anything bigger than a fraction of a millimetre falling in air, Re ≫ 1 and the linear law is badly wrong — switch to a drag coefficient.
- Forgetting buoyancy. The driving force is the net weight (ρ_p − ρ_f)Vg, not the full weight. For dense particles in air this barely matters, but in dense liquids it is essential.
- Confusing dynamic and kinematic viscosity. Stokes' law uses dynamic viscosity μ (Pa·s). Kinematic viscosity ν = μ/ρ (m²/s) is a different quantity; mixing them up throws results off by the fluid density.
- Treating drag as ∝ v² for small particles. The familiar ½ρv²C_dA form is the high-Reynolds (inertial) law. In the Stokes regime drag is linear in v, and the v² formula overestimates it enormously.
- Ignoring the slip correction for tiny particles in gas. When the particle size approaches the gas mean free path (sub-micron aerosols), the Cunningham slip correction reduces the drag below the bare Stokes value — exactly the correction Millikan needed.
- Assuming a rigid sphere. Gas bubbles and liquid drops have internal circulation, so the Hadamard–Rybczynski result gives less drag than 6πμrv for a perfectly rigid sphere.
Frequently asked questions
What is Stokes drag?
Stokes drag is the viscous resistance force on a small, slow-moving sphere in a fluid: F = 6πμrv, where μ is the fluid's dynamic viscosity, r the sphere radius, and v its speed. It is linear in speed (unlike the v² inertial drag of fast bodies) because at low speeds the fluid flows smoothly around the sphere and momentum transfer is dominated by viscosity, not inertia.
When is the Stokes drag formula valid?
Only at low Reynolds number, Re = ρvd/μ ≪ 1, the so-called creeping or Stokes flow regime. In practice it is accurate to a few percent for Re below about 0.1 and gives a rough estimate up to Re ≈ 1. Above that, inertial effects, flow separation, and a wake appear, and you must switch to a drag coefficient C_d that varies with Re instead of the simple linear law.
How does Stokes drag set terminal velocity?
A falling sphere reaches terminal velocity when drag plus buoyancy balance gravity. Setting 6πμrv = (4/3)πr³(ρ_p − ρ_f)g gives v_t = 2r²(ρ_p − ρ_f)g / (9μ). Terminal velocity grows with the square of the radius, so a 2× bigger droplet falls 4× faster. This is why fine fog droplets hang in the air for minutes while raindrops fall in seconds.
Why is Stokes drag proportional to radius, not area?
Inertial drag scales with frontal area (r²) because it depends on how much fluid momentum the body sweeps up. Stokes drag instead scales linearly with r because viscous stress is set by velocity gradients in a shear layer whose thickness is comparable to the sphere itself. The full creeping-flow solution integrates these viscous stresses over the surface and yields the famous factor 6π times μrv.
How did Millikan use Stokes drag to measure the electron charge?
In the 1909 oil-drop experiment, tiny charged oil droplets fell under gravity and rose under an electric field. From the terminal fall speed and Stokes' law, Millikan found each droplet's radius and mass; from the field needed to hold it stationary he found its charge. The charges always came in multiples of about 1.6×10⁻¹⁹ C — the elementary charge.
What is the difference between Stokes drag and form drag?
Stokes drag is pure viscous (skin-friction) drag in smooth, attached, laminar flow and scales as v. Form (pressure) drag arises at high Reynolds number when flow separates and leaves a low-pressure wake behind the body; it scales as v². Real drag is a mixture, but for tiny particles in fluid the viscous Stokes term overwhelmingly dominates and the wake is negligible.