UTC (Coordinated Universal Time) and GMT (Greenwich Mean Time) both sit at the same UTC offset: ±0:00. In everyday use — scheduling meetings, reading weather forecasts, adjusting your clock — they are interchangeable. But technically, they are different things, and the distinction matters in precision applications.
The Technical Difference
GMT is based on mean solar time at the Royal Observatory in Greenwich, London. Solar time is inherently variable: Earth's rotation is not perfectly uniform, and the length of a solar day varies slightly across the year due to Earth's elliptical orbit and axial tilt.
UTC is based on International Atomic Time (TAI), which is measured by an ensemble of atomic clocks maintained by labs around the world. Atomic clocks are far more stable than Earth's rotation — they drift by less than a nanosecond per day. To keep UTC within 0.9 seconds of mean solar time (and thus aligned with GMT in practice), IERS (the International Earth Rotation and Reference Systems Service) occasionally adds leap seconds to UTC.
Leap Seconds
A leap second is a one-second adjustment added to UTC to account for the slowing of Earth's rotation. Since 1972, 27 leap seconds have been added (as of 2025). They are always added on December 31 or June 30 at 23:59:59 UTC, causing a minute to last 61 seconds. The IERS announces a leap second about six months in advance.
Leap seconds cause problems for software that assumes a minute always has 60 seconds. Linux and Windows handle them differently; some systems 'smear' the second over a longer period. The ITU voted in 2022 to abolish leap seconds by 2035, allowing UTC and solar time to drift apart by up to 1 minute (the divergence will be addressed separately in the future).
Which to Use
For application development, logging, and APIs: use UTC. For aviation, GPS, and scientific applications that require sub-second precision: use TAI or GPS time (which has a known, fixed offset from TAI). For HTTP date headers, email timestamps, and general internet standards: 'GMT' is specified by the relevant RFCs but means UTC in practice. Never store local time — always store UTC and convert at display time.