What a squarename is
A squarename is a short, speakable address for a 3-metre square anywhere on Earth. It is computed from a coordinate by formula and decoded back by the same formula. Nothing is stored, nothing is looked up, no server is involved.
51n1w-e3.salty.rowan.6
- 51n1w-e3
- the region: a 0.2° tile, named by a self-describing coordinate code (51°N 1°W, sub-square e3)
- salty
- the sector: an 840 m square, named by an adjective
- rowan
- the patch: a 15 m square, named by a noun
- 6
- the spot: one of 25 three-metre squares in the patch
The last three parts, salty rowan six, are unique within any 25 km window, so people in the same town can say them alone. The region makes the name unique worldwide. An optional fifth part is a check token, a character or a word, so a name that was misheard is caught rather than guessed; the card above shows it as the verify word, and copying the name includes it.
Move the map above and the name under the crosshair updates. Drag in close to see the three squares drawn: the sector in blue, the patch in black, the spot in red.
Use it
The reference implementation is an npm package with no runtime dependencies, published under the Apache 2.0 licence.
npm install squarename
import { encode, decode, format, parse } from "squarename";
const name = encode(51.5308, -0.1238);
format(name); // "51n1w-e3.salty.rowan.6"
format(name, { check: "word" }); // "51n1w-e3.salty.rowan.6.shamrock"
const parsed = parse("51n1w-e3 salty rowan 6");
decode(parsed); // { lat, lng } inside the same 3 m square
The specification defines the grid, the wordlist, the check tokens and the test vectors, so an implementation in any language can be checked against this one. The spec and wordlists are licensed CC BY 4.0.
Who is behind it
Squarenames is developed and maintained by SQRS, which uses it as the address of every square in its apps. The specification is open so that any product can name a place the same way.