howfishthink
Sonar Trainer · Calculator

Why sonar shows fish deeper than they are

A fish finder measures time of flight, so it reports the straight-line distance from the transducer to the fish — slant range — not vertical depth. Any fish that is not directly below you reads deeper than it is.

Slant range = √(depth² + offset²). A fish 20 ft deep and 10 ft off your track is 22.4 ft away, so the screen says 22.4 ft instead of 20 ft — off by 2.4 ft (11.8%). Directly below you the error is zero.

Geometry · to scale—
Right-triangle diagram: transducer above, fish to the lower right, showing slant range vs actual depth depthoff trackdisplayed
Actual depth
20 ft
Displayed (slant range)
22.4 ft+2.4 ft error (11.8%)
Angle off axis
26.6°outside the printed cone
Cone edge reads
20.3 ft+0.3 ft at the printed edge
What this means

At 26.6° off axis the sonar reports 22.4 ft instead of the actual 20 ft. The top of the arch is the closest point, so it is the least-wrong reading. The tails, where the fish is at a steeper angle, are even deeper.

Why slant range, not depth

A transducer sends a pulse and times how long the echo takes to return. Sound travels through water at about 4,800 ft/s, so the unit computes range = speed × time / 2. That range is the straight-line distance to whatever reflected the pulse — the slant range. It is not the same as depth unless the fish is directly below you.

The formula is the Pythagorean theorem:

displayed = √(depth² + offset²)

At the nominal cone edge, where offset = depth × tan(cone/2), this collapses to:

edge display = depth / cos(cone/2)

On a 20° cone that is 1.5% over-reading at any depth. On a 40° cone it is 6.4%.

Edge error by cone angle and depth

How much deeper the sonar reads a fish at the nominal cone edge, in feet. The percentage version is the same for every depth — it is a function of the cone angle only.

Depth error in feet for a fish at the nominal cone edge, by cone angle and actual depth
Coneat 5 ftat 10 ftat 20 ftat 30 ftat 50 ftat 100 ft% over
8°<0.1 ft<0.1 ft<0.1 ft<0.1 ft0.1 ft0.2 ft0.2%
12°<0.1 ft<0.1 ft0.1 ft0.2 ft0.3 ft0.6 ft0.6%
20°<0.1 ft0.2 ft0.3 ft0.5 ft0.8 ft1.5 ft1.5%
30°0.2 ft0.4 ft0.7 ft1.1 ft1.8 ft3.5 ft3.5%
40°0.3 ft0.6 ft1.3 ft1.9 ft3.2 ft6.4 ft6.4%
60°0.8 ft1.5 ft3.1 ft4.6 ft7.7 ft15.5 ft15.5%

Error at the edge = depth × (1/cos(cone/2) − 1). For small angles the rule of thumb is roughly cone² ÷ 1650 percent.

The top of an arch is the most accurate reading

As the boat passes over a fish, the slant range starts large (fish at the leading edge of the cone, far away), shrinks to its minimum (fish directly below), then grows again as it exits the trailing edge. On the display that traces out an arch. The peak of the arch — the shortest range — is the reading closest to the fish's true depth, because the fish is most nearly below you at that moment.

The tails of the arch are the worst readings: the fish is at the largest angle then, so slant range is furthest from vertical depth. A fish 20 ft deep that passes 10 ft off the track reads as deep as 22.4 ft at its worst — an error of 2.4 ft. At the closest point (offset = 0) it would read exactly 20 ft.

What this means in practice

Three things follow directly from the geometry:

What this leaves out

More from the sonar model