The Open Location Code (OLC) is a geocode based on a system of regular grids for identifying an area anywhere on the Earth. It was developed at Google's Zürich engineering office, and released late October 2014. Location codes created by the OLC system are referred to as PlusCodes.
Open Location Code is a way of encoding location into a form that is easier to use than showing coordinates in the usual form of latitude and longitude. PlusCodes are designed to be used like street addresses and may be especially useful in places where there is no formal system to identify buildings, such as street names, house numbers, and post codes.
Plus Codes are differently expressed latitude and longitude coordinates, so they can be assigned to any location. They are similar in length to a telephone number (e.g., ) but can often be shortened to only four or six digits when combined with a locality (e.g., ). Locations close to each other have similar codes. They can be encoded or decoded offline. The character set avoids similar-looking characters to reduce confusion and errors and avoids vowels to make it unlikely that a code spells existing words. Plus Codes are not case-sensitive and can therefore be easily exchanged over the phone. Since August 2015, Google Maps has supported Plus Codes in its search engine. The shortened Plus Code is displayed for a location, may be copied, clicked, or transcribed, and can be entered into the address box (followed by the town or city name if not local and using shortened code) to display the location on the map. The algorithm is licensed under the Apache License 2.0 and is available on GitHub.
Plus Codes are increasingly being used for addressing purposes in places that aren't well-served by the traditional street address system. This includes the many unnamed streets in Cape Verde, multiple slums in India, and even some Native American reservations in the United States. In Laxmi Nagar, Pune, the nonprofit Shelter Associates used codes to bring delivery services to specific homes and businesses in the slum for the first time in 2020-21. PlusCodes are also being used by the International Rescue Committee in Somalia for immunization and family planning programs.
The Open Location Code system is based on latitudes and longitudes in WGS84 coordinates. Each code describes an area bounded by two parallels and two meridians out of a fixed grid, identified by the southwest corner and its size. The largest grid divides the globe into blocks of 20 by 20 degrees, 18 columns from West to East and 9 rows from the South to the North poles. Those large blocks are then subdivided into 400 subblocks, 20 by 20, up to four times. Near the equator, those subblocks are square both in degrees and in meters. At midlatitudes, while still square in terms of degrees, in terms of ground distance the blocks are not as wide as they are tall.
After the initial division and four rounds of 20x20 subdivision (via two code characters each round), further subdivisions break each block into 20 subblocks (via one code character), 4 blocks W-E by 5 blocks S-N. That leaves the subblocks wider than they are tall in terms of degrees, but at midlatitudes, this keeps them closer to square in terms of meters. The table shows the various block sizes near the equator, where the widths are maximum (listing width x height where those differ). The block widths decrease with distance from the equator.
The full grid uses offsets from the South Pole (âÂÂ90ð) and the antimeridian (âÂÂ180ð) expressed in base 20 representation. To avoid misreading or spelling objectionable words, the encoding excludes vowels and symbols that may be easily confused with each other. The following table shows the mapping.
The code begins with up to five pairs of digits, each consisting of one digit representing latitude and one representing longitude. After eight digits, a plus sign "+" is inserted in the code as a delimiter to aid with visual parsing. After a final pair immediately following the "+" delimiter, any subblocks thereafter are coded in a single code digit as follows:
Areas larger than an 8-digit block can be specified by truncating the code after the relevant digit pairs and inserting the "padding character" 0 (zero) before the + sign, with nothing following it.
Consider, for example, zooming in on the Merlion fountain () in Singapore, which has Plus Code . It lies in the block around the equator bounded by âÂÂ10ð South and +10ð North, and between 100ð and 120ð East. It has offsets 80ð from the South Pole, and 280ð from the anti-meridian; or, 4 (=80/20) and 14 (=280/20) as the first base-20 digits, coded as "6" and "P". Thus, the code is "6P". This may be padded as .
Now, refine this block to a subblock between 1ð and 2ð N and 103ð and 104ð E. This adds 11ð and 3ð to the SW corner. So the base-20 coordinate codes added are "H" and "5". The result is padded to .
After four further refinements, one lands on Merlion Park as .
The next step requires dividing the square so far used, to refine the position into a 4-by-5 grid, and finding the cell to which the coordinates are pointing. This is the cell named "6".
Alternatively, use formula BASE(Degrees from South or West * power(20, 4) , 20) in any Spreadsheet or Calculator to compute the Plus Code. For the coordinates from the previous example:
Therefore, the resulting Plus Code is .
It is common to omit the first four characters from the code and add an approximate location, such as a city, state, or country. The above example then becomes . This is supported by the Google Maps app and the plus.codes website, and also by non-Google apps. These short forms of Plus Codes can be used in lieu of a house number in a neighborhood.
Shortened codes cannot be unambiguously encoded or decoded without context. The specification does not rely on any specific database of contextual reference location place names and their exact locations, but there are a variety of geocoding databases which map names to latitude and longitude. Disambiguation requires narrowing the possibilities to within about 40 km of the referenced location. The coordinates of the user's current location can be also used for context, if applicable.