River Erosion, Explained

After reading this you will understand how a single local rule (water carries sediment while it moves fast and drops it when it slows) builds branching valley networks, and why a lowland river cannot stay straight but must meander until it pinches off oxbow lakes.

What the simulation does

Drop rain on a rough landscape and let simple physics carve it. The tool runs in two modes. In mountain mode, thousands of water drops start at random points on a procedural heightmap and roll downhill. A drop speeds up on steep slopes and slows on gentle ones. While it moves it can carry sediment, and the amount it can carry grows with its speed. When a drop slows down, it drops the excess load and raises the ground there. When it speeds up, it scoops material and lowers the ground. Nothing in that rule mentions rivers, ridges or valleys, yet after enough drops you see a branching drainage network with sharp ridgelines between basins.

In meandering mode a single lowland river migrates sideways across a flat floodplain. The outer bank of each bend erodes and the inner bank builds up, so bends grow, drift downstream, and eventually loop back on themselves. When two parts of the channel touch, the river takes the shortcut and abandons the loop, leaving a curved oxbow lake behind.

Both modes are self-organizing: the structure is not drawn by hand and not stored in the initial conditions. It emerges from a rule applied over and over to slightly random starting terrain. Change the seed and you get a different but statistically similar landscape.

When to reach for it, and when not

Use this simulation to build intuition about drainage networks, sediment transport and channel instability. It is good for the questions "why do rivers branch the way they do?" and "why can't a river stay straight?" It shows the shape of the answer clearly and quickly.

Do not use it for engineering. The drop rule is a computer-graphics approximation, not a calibrated hydraulic model. It has no units you can trust, no real rainfall in millimetres, no real discharge in cubic metres per second. It also omits tectonic uplift on purpose, so mountains here can only wear down. Real landscapes are a balance between uplift that raises rock and erosion that removes it. This tool shows only the removal half. If you need sediment yields for a real catchment, use a validated model with measured inputs, not a browser toy.

The drop rule and the carry capacity

The heart of mountain mode is one equation: how much sediment a drop can hold. Call it the carry capacity C.

C = K_c \cdot v \cdot |s| \cdot w

Here K_c is an erosion-strength constant you set with a slider, v is the drop's speed, |s| is the downhill slope under the drop, and w is its water volume. The rule then compares C to the sediment m the drop is already carrying. If C \gt m, the drop erodes the ground: it lifts sediment and the terrain height drops. If C \lt m, the drop is overloaded and deposits, so the terrain height rises. A fraction of the gap is transferred each step, tuned by an erosion rate and a deposition rate.

The intuition is the same as a real stream. Fast, steep, high-volume flow can hold a lot of grit, so it scours. When the flow slows on a flat reach or spreads out, its capacity falls below its load, so it drops sand and gravel. That is why steep headwaters cut deep and flat lowlands build up.

Speed updates from gravity and slope. A common form is

v_{new} = \sqrt{ \max\left(0,\; v^2 + g \cdot \Delta h\right) }

where g is a gravity constant and \Delta h is the drop in height from the current cell to the next. A larger fall adds more speed. Water also evaporates a little each step, shrinking w, so a drop eventually dies and the next one starts fresh.

A worked example with the default settings

One drop, three steps

Take the field defaults from the demo button and follow a single drop. Suppose K_c = 0.5, gravity constant g = 4, and the drop starts with speed v = 1, water volume w = 1 and sediment m = 0. It moves across three cells whose heights are 10.0, 9.4, 9.1, 9.05.

  1. Step 1: fall \Delta h = 0.6. New speed v = \sqrt{1 + 4 \cdot 0.6} = \sqrt{3.4} \approx 1.844. Slope |s| = 0.6. Capacity C = 0.5 \cdot 1.844 \cdot 0.6 \cdot 1 \approx 0.553. Load is 0, so C \gt m: the drop erodes. It picks up, say, 0.28 of sediment; the cell height falls to about 9.72.
  2. Step 2: fall \Delta h = 0.3. Speed v = \sqrt{3.4 + 1.2} = \sqrt{4.6} \approx 2.145. Slope 0.3. Capacity C = 0.5 \cdot 2.145 \cdot 0.3 \cdot 1 \approx 0.322. Load is 0.28, still below capacity, so it keeps eroding a little.
  3. Step 3: fall \Delta h = 0.05. The slope has almost vanished. Capacity C = 0.5 \cdot v \cdot 0.05 \cdot 1 drops to about 0.055, well below the load of roughly 0.30. Now C \lt m: the drop deposits, raising this flat cell.

That single drop cut the steep upper cells and filled the flat lower one. Run a thousand drops and the cut cells line up into a channel while the filled cells build a valley floor. The pattern is not planned; it is the sum of that capacity comparison repeated everywhere.

Capacity is high while the slope is steep, then collapses on the flat cell. Where the curve falls below the sediment the drop carries, deposition begins. The marker sits at the last eroding step.

Why meanders are an instability

Meandering mode uses a different rule: bank migration driven by curvature. Model the river as a chain of points along its centreline. At each point the local curvature \kappa measures how tightly the channel bends. The outer bank of a bend moves outward at a rate proportional to that curvature.

\dot{n} = E \cdot \kappa \cdot U

Here \dot{n} is the sideways migration speed of the bank, E is a bank-erodibility constant, \kappa is curvature (larger for tighter bends), and U is a flow term. A straight reach has \kappa = 0 and does not move. But any tiny bend has \kappa \gt 0, so its outer bank pushes out, which increases the curvature, which pushes it out faster still. That is positive feedback: the straight state is unstable, and the smallest wiggle grows.

Growth does not run forever. As a bend swells, it drifts downstream and its neck narrows. When two parts of the channel come within one channel width of each other, the river breaks through the neck and takes the short path. The abandoned loop fills in at its ends and becomes an oxbow lake. Then the process starts again on the shortened, freshly bending river.

Turn bank erodibility E up and meanders grow and pinch off quickly. Turn it down and the same river takes far longer to develop its first oxbow. The pattern is the same; only the timescale changes.

Try the instability yourself

A sine-shaped channel is drawn on a floodplain. As bank erodibility rises, the bends grow taller and lean downstream; at high values two bends touch and one is cut off into a separate closed loop (an oxbow), while the main channel straightens across the neck.

Reading the landscape

In mountain mode the relief is drawn with hillshading: slopes facing the light are bright, slopes facing away are dark, so ridges and valleys read as three-dimensional. The cells that carry the most water are tinted blue, which traces the channel network. Look for three things.

Branching
Channels join downstream like the veins of a leaf. Small tributaries feed larger ones, which feed a trunk. This dendritic pattern is what real basins on uniform rock show too.
Ridgelines
The bright crests between basins are drainage divides. Rain landing on one side goes to one channel, rain on the other side goes to another. The divides sharpen as erosion proceeds.
Smoothing over time
With no uplift, total relief only decreases. Peaks lower, valleys fill, and the whole surface flattens toward a low, gentle plain. Run it long enough and the drama fades.

In meandering mode, watch the wavelength of the bends stay roughly constant while their amplitude grows, and watch bends migrate downstream. Count oxbow lakes over time: each one marks a cutoff event.

Common mistakes when reading the output

Do not read the heights as metres or the drops as litres of rain. The numbers are arbitrary simulation units. Comparisons within one run are meaningful (this valley is deeper than that one), but the absolute values are not physical.

A few more traps. First, expecting a steady state in mountain mode. There is none without uplift; the surface keeps decaying, just more slowly. If the picture stops changing, it is because relief has nearly run out, not because the system reached equilibrium.

Second, over-cranking the erosion strength. If K_c is very large, drops gouge deep pits in a few steps and the network looks noisy rather than branched. Moderate settings give the cleanest dendritic pattern. Third, blaming a "bad" seed. Every seed grows a different landscape, and some look messier than others, but the branching statistics are similar across seeds. Judge the process, not one snapshot.

Related simulations

River erosion is one of many systems where a simple local rule produces global structure. The Forest Fire Model reaches self-organised criticality much as drainage networks self-organise. For pattern from local interaction, see the Traffic Jam Simulator, where jams form with no cause, and Schelling’s Segregation Model, where mild preferences sort a city. For population dynamics with feedback loops like the meander instability, the Predator–Prey Simulator and the SIR Epidemic Simulator both show how one rule drives a whole trajectory. The Small-World Network Lab is another case of emergent structure from repeated local edits.

Frequently asked questions

Why do the valleys branch instead of running straight?

Because water pools into whatever low path already exists, and eroding that path makes it lower, which attracts still more water. Small channels capture their neighbours and merge into larger ones. The result is a tree of channels, the same dendritic shape seen in real basins on uniform rock.

Why can't the river just stay straight?

A perfectly straight channel is a balance point, but an unstable one. Any tiny bend speeds the outer flow, erodes the outer bank, and deepens the bend. Since the response grows the disturbance rather than damping it, the straight state cannot last. This is the same mathematics as a pencil balanced on its tip.

What creates an oxbow lake?

A bend grows and drifts until its neck is very narrow. When two parts of the channel meet, the river takes the shortcut across the neck and abandons the long loop. The cut-off loop, sealed at both ends by deposited sediment, becomes a curved standing lake.

Why are there no mountains being pushed up?

Uplift is left out on purpose. With rain only, the terrain can lose height but never gain it, so the model shows erosion alone. Real landscapes come from uplift and erosion working against each other, and this tool isolates the erosion half so you can see it clearly.

Does the seed change the science or just the picture?

Just the picture. Different seeds give different specific valleys and bends, but the statistical behaviour (branching, ridgelines, meander wavelength, cutoffs) is the same. Change the seed to check that your conclusions do not depend on one lucky landscape.