Understanding the QTH Locator (Maidenhead System)
🌍 Pinpointing Locations on the Globe
In amateur radio, exchanging exact latitude and longitude coordinates over noisy voice channels or CW is cumbersome and prone to copying errors. To solve this, the Maidenhead Locator System (commonly called the QTH Locator) compresses geographic coordinates into a compact, alternating string of letters and digits.
Adopted globally by the IARU in 1980, this grid system is the backbone for scoring VHF/UHF contests, calculating antenna beam headings, and logging microwave and satellite contacts.
Primary Use Cases
- Contesting & Scoring: VHF/UHF and microwave contests calculate points based on the distance between Maidenhead grid squares.
- Beam Direction: Enables logging and tracking software to compute the exact azimuth and elevation for rotator control.
- QRP & Portable Activations: Rapidly communicate geographic location during SOTA, POTA, or field operations without exchanging full GPS strings.
Capital vs. Lowercase: The Casing Standard (e.g., JO30nq)
A frequent point of discussion among radio amateurs is whether the subsquare letters should be capitalized or written in lowercase.
Under the official IARU specification, the standard typographic formatting is strictly:
- Characters 1–2 (Field): UPPERCASE letters (
A–R) - Characters 3–4 (Square): Digits (
0–9) - Characters 5–6 (Subsquare): lowercase letters (
a–x) - Characters 7–8 (Extended Subsquare, if used): Digits (
0–9)
Standard 6-character:
JO30nq(Field: JO, Square: 30, Subsquare: nq)
Extended 8-character:JO30nq42(Field: JO, Square: 30, Subsquare: nq, Extended: 42)
Why this rule exists:
- Visual Clarity: Alternating cases prevents glyph confusion on handwritten logs, printed QSL cards, and low-resolution displays. It clearly separates lowercase
lfrom digit1or uppercaseI, and letterOfrom digit0. - Hierarchy at a Glance: The eye instantly distinguishes between the coarse regional grid (
JO30) and the fine-grained precision block (nq).
Note on Digital Modes & Software: While automated decoders and databases (FT8, WSJT-X, ADIF logs) process locators case-insensitively, standard human-readable presentation should always follow the AA00aa convention.
Hierarchical Architecture: How It Works
The Maidenhead system divides the globe into nested rectangles using a base-18 and base-10 alternating hierarchy based on longitude (360°) and latitude (180°). The origin point is located at the antimeridian (180° W) and the South Pole (90° S).
| Level | Name | Format | Longitude Span | Latitude Span | Approx. Precision |
|---|---|---|---|---|---|
| 1 | Field | 2 Letters (A–R) |
20° | 10° | Continent / Regional Scale |
| 2 | Square | 2 Digits (0–9) |
2° | 1° | ~70 × 111 km (mid-latitudes) |
| 3 | Subsquare | 2 Letters (a–x) |
5’ (0.0833°) | 2.5’ (0.0416°) | ~5 × 4.6 km |
| 4 | Extended | 2 Digits (0–9) |
0.5’ (0.00833°) | 0.25’ (0.00416°) | ~500 × 460 m (Microwave/Laser) |
Anatomy of an Example Locator: JO30nq
To see the system in practice, consider the 6-character locator JO30nq:
- Field
JO:J= 10th longitude field starting at 180° W → 0° to 20° EO= 15th latitude field starting at 90° S → 50° to 60° N
- Square
30:3= 4th column within the field → 6° to 8° E0= 1st row within the field → 50° to 51° N
- Subsquare
nq:n= 14th column within the square → 7° 05’ to 7° 10’ Eq= 17th row within the square → 50° 40.0’ to 50° 42.5’ N
Mathematical Calculation
Converting decimal coordinates (Longitude, Latitude) to a standard 6-character locator uses basic division with two helpful math concepts:
floor(x): Rounding down to the nearest whole integer (e.g.,floor(9.87)becomes9, discarding the fractional part).mod(Modulo): The remainder left over after integer division (e.g.,27 mod 20leaves a remainder of7).
-
Shift Coordinates to Positive Space (Origin at South Pole / Antimeridian):
Lon' = Lon + 180Lat' = Lat + 90
-
Compute Field (1st & 2nd characters - Uppercase):
- Longitude Field = Character at 0-indexed position
floor(Lon' / 20)inA..R - Latitude Field = Character at 0-indexed position
floor(Lat' / 10)inA..R
- Longitude Field = Character at 0-indexed position
-
Compute Square (3rd & 4th characters - Digits):
- Longitude Square =
floor((Lon' mod 20) / 2)(Digit0..9) - Latitude Square =
floor((Lat' mod 10) / 1)(Digit0..9)
- Longitude Square =
-
Compute Subsquare (5th & 6th characters - Lowercase):
- Longitude Subsquare = Character at 0-indexed position
floor(((Lon' mod 20) mod 2) / (5 / 60))ina..x - Latitude Subsquare = Character at 0-indexed position
floor(((Lat' mod 10) mod 1) / (2.5 / 60))ina..x
- Longitude Subsquare = Character at 0-indexed position
Interactive Lookup Tool
For quick lookups, visual map overlays, and instant GPS-to-Maidenhead conversions: