← Tutorials

Tutorial Series · Part 10 of 27

Pseudorange: The Distance That Is Not Quite a Distance

Explain pseudorange, clock bias, and why GNSS solves position plus time.

Series Context

Navigation from First Principles

This article is part of an ordered course. Use the previous and next links to stay in sequence.

The basic GNSS observable is signal travel time multiplied by the speed of light, giving an apparent range.1 It is called pseudorange because it contains more than pure geometry: receiver clock error, satellite clock error, atmospheric delays, instrumental delays, multipath and noise can all appear in the measurement model.2

Why timing matters

The speed of light is about:

c299,792,458m/sc \approx 299,792,458\,m/s

A receiver-clock error of only 1μs1\,\mu s corresponds to roughly:

299,792,458×106300m299,792,458 \times 10^{-6} \approx 300\,m

GNSS positioning is not just a geometry problem. It is also a timing problem.

A simple measurement model

A simplified pseudorange model is:

Pi=ρi+c(δtrδtis)+Ti+Ii+Mi+ϵiP_i = \rho_i + c(\delta t_r - \delta t_i^s) + T_i + I_i + M_i + \epsilon_i

where:

  • ρi\rho_i is geometric range.
  • δtr\delta t_r is receiver clock offset.
  • δtis\delta t_i^s is satellite clock offset.
  • TiT_i is tropospheric delay.
  • IiI_i is ionospheric delay.
  • MiM_i is multipath.
  • ϵi\epsilon_i is measurement noise.

For a first demo, collapse all non-clock errors into noise and solve:

Pi=rsi+cδtrP_i = \lVert \mathbf{r}-\mathbf{s}_i\rVert + c\delta t_r

Unknowns in 3D are:

[x,y,z,cδtr]T[x, y, z, c\delta t_r]^T

This is why the beginner rule is “four satellites for 3D position plus receiver clock”.3

Interactive demo

The embedded visualiser makes the clock term explicit by drawing the true geometric ranges and the biased pseudoranges together.

Interactive Demo

Pseudorange Clock-Bias Demo

A microsecond of receiver clock error becomes hundreds of metres of range bias. Compare the position estimate that ignores that shared offset with the one that explicitly solves for it.

Thin circles: geometric range Thick circles: pseudorange after receiver clock bias

Controls

Use the clock slider first. The red solution shows what happens if the shared bias is ignored.

Readouts

Bias added to each range0.0 m
Error if clock is ignored0.0 m
Error after bias solve0.0 m
Recovered clock term0.0 m

What to watch

  • Increasing clock bias expands or contracts all pseudorange circles together.
  • Ignoring clock bias gives a visibly wrong position estimate.
  • Solving for clock bias pulls the estimate back toward the true receiver when enough satellites exist.
  • Even a very small timing offset creates a large metre-scale range error.

Try it

Set the clock bias to 1μs1\,\mu s. The range bias should be about 300m300\,m. Then set it to 10ns10\,ns. Even that is about 3m3\,m, which is large for precise navigation.

Limits of this model

Real receivers do not simply solve one clean pseudorange equation. They use satellite navigation messages, clock corrections, atmosphere models, code tracking, carrier tracking and quality checks. This post isolates the receiver clock effect because it is the most important beginner insight.

Footnotes

  1. ESA Navipedia, “GNSS Basic Observables”. https://gssc.esa.int/navipedia/index.php/GNSS_Basic_Observables - Reference for pseudorange and carrier-phase observables. Accessed 2026-06-11.

  2. ESA Navipedia, “GNSS Measurements Modelling”. https://gssc.esa.int/navipedia/index.php/GNSS_Measurements_Modelling - Measurement equations including geometric range, clock terms, troposphere, ionosphere, multipath and noise. Accessed 2026-06-11.

  3. ESA Navipedia, “An intuitive approach to the GNSS positioning”. https://gssc.esa.int/navipedia/index.php/An_intuitive_approach_to_the_GNSS_positioning - Beginner-friendly explanation of pseudorange geometry, clock offset, 3D positioning and DOP. Accessed 2026-06-11.