Speed and Distance Converter

Uncrewed systems work mixes units that come from different traditions in the same sentence — airspeed in knots, ground track in kilometres, altitude in feet, sensor geometry in metres, control loops in metres per second. This page converts between them. Nothing is transmitted: the arithmetic runs in the page, there are no requests and no storage.

metres per second

Mach here assumes the ICAO standard-atmosphere sea-level speed of sound in dry air. Read the note below before using it for anything above the surface.

metres

Why the Mach row needs a caveat and the others do not

Every factor above except one is an exact definition rather than a measurement. The international nautical mile is defined as 1852 metres exactly. The international foot is 0.3048 metres exactly, which makes the statute mile 1609.344 metres exactly, since it is 5280 of those feet. A knot is one nautical mile per hour, so it is 1.852 km/h exactly and 1852/3600 metres per second exactly. These are not approximations that drift with better instruments; they are the definitions themselves, and the only error in converting between them is whatever your display precision throws away.

Mach is different in kind. It is not a speed unit at all — it is a ratio of a speed to the local speed of sound, and the local speed of sound is a property of the air the vehicle happens to be flying through. For an ideal gas it depends on temperature alone, as the square root of absolute temperature, which means it falls as you climb through the troposphere and then stops falling in the isothermal layer above it. Two aircraft at the same true airspeed and different altitudes are at different Mach numbers, and the difference is not small.

This page uses 340.294 m/s, the speed of sound at the sea-level conditions of the ICAO standard atmosphere — dry air at 15 °C, which is 288.15 K. That figure is the standard’s value and it is reproducible from the standard’s own constants, but it is still an assumption about the air, not a definition of a unit. The Mach row above is therefore exactly right for a vehicle at sea level on a standard day, approximately right for one near the surface on an ordinary day, and wrong at altitude. Treat it as a sea-level reference conversion. If you need Mach at altitude, you need the temperature at that altitude, and that is a different calculation from the one this page performs.

The units are not interchangeable in the code either

There is an engineering point behind the caveat. Mixed-unit arithmetic is one of the oldest sources of loss in this field, and the conversion factor is almost never where it goes wrong — a factor of 1.852 is easy to get right. What goes wrong is a quantity crossing an interface without its unit attached, and being interpreted by the receiver under a different convention than the sender used.

The defences are all boring and all effective. Carry units in the type system rather than in the variable name, so the compiler rather than the reviewer catches the mismatch. Pick one internal convention — SI, radians, a single stated frame — and convert at the boundary, once, in a place you can point at. Where a value crosses a network interface, put the unit in the message schema and not in the interface document, because interface documents drift and schemas are checked. And treat altitude with particular suspicion: it is not one quantity but several — above mean sea level, above the terrain below you, above a pressure datum that changes with the weather — and converting the number between feet and metres correctly while confusing which datum it refers to produces a precisely wrong answer.

The self-test line in the second panel re-checks the conversions on load against cases whose answers are fixed by the definitions above. If it ever reports a failure, the numbers on this page should not be used.