Abstract
Togo has no postal code and, outside the former commune of Lomé, no address at the level of the door. We describe and evaluate a model that gives each of the country’s 2,768,053 compounds a code made of a place name people already use and a number of four or five digits read in pairs, such as Fréau-Jardin 10 58. The code is unique nationally on its own: all areas that share a name draw their numbers from one national range for that name, cut into frozen blocks. Numbers follow a Hilbert curve inside each of 1,379 code areas, and a Damm check digit over the name, the area and the number protects the machine form. We give every rule with its formula and a worked example on a real code, describe an open engine, registry and server, and report measured properties: every written code decodes to its own compound, 56.0 % of compounds carry four digits, and the check digit detects every single-digit error and adjacent transposition. We discuss rejected designs, benefits for citizens, logistics, emergency services and government, with stated assumptions and sensitivity ranges, and the model’s limitations.
Keywords: addressing; postal codes; Togo; Hilbert curve; check digits; building footprints; spatial data infrastructure.
1 Introduction
An address is a public good of a particular kind: it is worth little to the household that holds it and a great deal to everyone who has to find that household. Where addresses are missing, the cost is paid in small amounts by many people, in the courier’s telephone calls, the ambulance’s lost minutes and the utility’s unpaid bill, and it is rarely measured. The World Bank’s review of street addressing in African cities found that more than half of the streets in the region’s cities had no name and that addressing programmes decay when residents do not use them [1]. The Universal Postal Union has argued that an address is part of a country’s basic infrastructure, on the same footing as roads and electricity [2].
Togo is a clear case. The country has no postal code [3], [4]. Mail is delivered to post-office boxes. The former commune of Lomé has had coded streets since 1997, and the District Autonome du Grand Lomé (DAGL) is modernising them with entrance numbers that had not been published at the time of writing [5], [6]. Elsewhere, and in most of Grand Lomé, a home is found by its quartier, a landmark and a telephone call.
This paper makes four contributions.
- A model in which every compound of Togo receives a short code that people can say and remember: a place name and two pairs of digits. The code is unique in the whole country on its own, a property obtained by giving every place name one national range of numbers (Section 5).
- A complete mathematical specification: area assignment, plate names, name folding, block allocation, Hilbert-curve numbering, insertion of new compounds, decoding, the check digit and a grid for points that are not compounds, each with a worked example on a real code (Section 5).
- An open implementation: a reference engine with conformance vectors, the registry of all 2,768,053 codes, and a server that any public body can deploy to answer exactly as the issuer does (Section 6).
- An evaluation of the measured properties of the issued codes (Section 7) and of the designs we rejected (Section 8), followed by an assessment of the benefits for citizens, logistics, emergency services and government, each with explicit assumptions (Sections 9 to 12).
Section 2 reviews Togo’s existing addressing, postal and land systems and international practice; Section 3 describes the data; Section 4 states the design requirements. Sections 13 and 14 cover privacy, governance and limitations, and Section 15 concludes.
3 Data and sources
The model is computed from open data only (Table 1).
- OpenStreetMap: building footprints, walls, fences and hedges, gates, place names, the quartiers of Lomé with their official codes and Lomé’s named streets, from the Geofabrik extract of 17 October 2026 [18], [19].
- Google Open Buildings and Microsoft building footprints, through the Overture Maps buildings release, which keeps OpenStreetMap first and adds machine-detected footprints where OpenStreetMap has none [20], [21], [22].
- Canton boundaries: the 373 cantons of the HDX common operational dataset (COD-AB, valid on 7 January 2021, CC BY-IGO) [23]. No open boundaries exist for the 117 communes.
- Population: the RGPH-5 totals [7].
| Region | Compounds | Footprints | From OpenStreetMap | Median footprint |
|---|---|---|---|---|
| Plateaux | 648,943 | 831,095 | 336,199 | 30.9 m² |
| Maritime | 590,823 | 746,954 | 216,701 | 40.4 m² |
| Grand Lomé | 545,465 | 719,517 | 259,523 | 51.6 m² |
| Savanes | 348,082 | 616,305 | 342,505 | 19.1 m² |
| Kara | 336,577 | 517,963 | 224,108 | 27.6 m² |
| Centrale | 298,163 | 384,919 | 139,729 | 31.3 m² |
| Togo | 2,768,053 | 3,816,753 | 1,518,765 | 39.4 m² |
Of the 3,816,753 footprints, 1,518,765 (39.8 %) come from OpenStreetMap and 2,297,988 from the machine-detected datasets (Figure 2). OpenStreetMap is strongest in Savanes, where it supplies 56 % of footprints, and weakest in Maritime and Grand Lomé. The height attribute of the machine-detected footprints takes only 36 distinct values between 3.5 and 7 m and is not used; OpenStreetMap gives floors for 398 buildings.
4 Design requirements
We fixed the requirements before the design and ranked them, so that every conflict between two of them has an answer.
- Easy to remember and to give. A code is a place name people already say and two pairs of digits; obtaining it takes one action in the application.
- Unique nationally on its own. No préfecture, commune or position of the telephone may be needed to decode it.
- The compound and its gate. The unit is the plot or cour; buildings are sub-units; navigation ends at the gate.
- Official first, wherever an official address exists (Section 2.8).
- Never mistaken for an official code. A code starts with a name and has four or five digits, so it never looks like a Lomé street code (“165 AMT”) or a box.
- Works offline.
- Stable. A code never moves and is never reused.
- Places, never people.
- Open and transferable to the State.
5 The model
5.1 The forms of a code
A code has several forms, each for a different reader (Table 2). For an area with plate name and key , and a number of four or five digits,
where is the remembered form, the machine form, the check digit of Section 5.9, joins two strings with a space, and splits the digits into pairs from the right: is “10 58” and is “1 41 98”.
| Form | Example | Used by |
|---|---|---|
| Remembered | Fréau-Jardin 10 58 (“Fréau-Jardin, dix, cinquante-huit”) | people: said, typed, written on a parcel |
| Machine | TG-FRJ-1058-2 | applications, QR codes, partner systems; the final digit is a check, for systems only |
| Structure, entrance | TG-FRJ-1058-2.2/1 | a building of the compound; one of its gates |
| Spot | FRJ-54-4R | any point: a stall, a field, a crash on the road |
| Official, in Lomé | Rue Mission Tové, Lomé | the State’s address, shown first |
People never see, type or say the check digit. Plates and written forms show the name and the number only.
5.2 Code areas
A code area is a place people name. There are three kinds (Table 3). The quartiers of Lomé are the official ones, with their official codes as keys [10]. Outside Lomé the canton is the unit: the 117 communes have no open boundaries, and the 39 préfectures are too large for short numbers (Zio alone has about 280,000 buildings). A canton too large for four-digit numbers is split into cells around the named places inside it.
| Kind | Count | Key | Example |
|---|---|---|---|
| Quartier of the former commune of Lomé | 69 | the official quartier code | FRJ Fréau-Jardin |
| Canton kept whole | 215 | préfecture (3 letters) and 2 digits | KOZ14 |
| Named-place cell of a split canton | 1,095 | canton key and 2 digits | KOZ0615 Zongo, in Kara |
A footprint at latitude and longitude belongs to the quartier that contains it, else to its canton; if the canton is split, to the cell whose named place is nearest. Distances use the local lengths of a degree of latitude and of longitude on the WGS 84 ellipsoid,
in metres per degree, and the cell is
Of the 1,379 areas, 1,371 hold compounds. The median area holds 1,075 compounds and the largest, the canton of Sagbado in Golfe, 41,259 (Figure 3). Each area is frozen at first issue: its index, key, blocks of numbers and frame, the bounding box over which its numbers are laid out.
5.3 Plate names
A name that does not fit on a plate or in one breath is not remembered; people shorten “Gboto Koissidamé” to “Koissidamé”. Each area therefore has an official name and a plate name. Let be the string in Unicode normal form C, its words (a hyphen separates words) and de, du, des, d’, la, le, les, l’, et, sur, en, au, aux, à the set of words that do not count. Then
A name that fails Eq. (4) goes through fixed steps, and the first that succeeds is kept. The name is first cleaned: text in brackets or after a slash and generic words such as Zone, Quartier, Village, Résidence or Cité are removed (“Zone Portuaire” becomes Portuaire, “Dako/Daoude” becomes Dako). Otherwise the most distinctive run of whole words is taken when it is clearly ahead, preferring the end of the name, where the specific part usually stands (“Adjahun Fiagbe” becomes Fiagbe). A word is never cut. Some words are never dropped automatically: in Ewe and Mina, kopé, kondji and kodzi mean village and kpota the outskirts, so “Aklassou kopé” is a village of its own. A plate name may not equal a préfecture seat, a quartier of Lomé or a well-known town across the border, unless it is the area’s own.
| Plate names | Areas |
|---|---|
| Official name kept as it is | 1,253 |
| Cleaned | 17 |
| Shortened to its distinctive words | 33 |
| Provisional, offered to the commune | 76 |
| Total | 1,379 |
Of the 1,379 official names, 122 exceed the limit. Seventy-six areas carry a provisional plate name, the first of up to three candidates, which their commune may replace once: 38 join two names with a hyphen, 25 are single words longer than 12 letters, 9 would drop a qualifier such as kopé or haut, 2 would equal a known town and 2 offer no clear choice. Their 145,645 codes are issued; a later choice changes the name, never the number. A hyphenated name offers its rarer part first: “Agoè-Démakpoè” offers Démakpoè, because “Agoè” begins four area names. The official name remains an alias (95 aliases in all), so typing the full name finds the same compound.
5.4 The name key
Two spellings of one name must decode alike. The name key is the composition
whose steps are listed in Table 5.
| Step | Rule | Example |
|---|---|---|
| ewe | ɛ ɔ ŋ ƒ ʋ ɖ ɣ become e o n f v d g | Kpɔta → Kpota |
| unaccent, upper | accents and case removed; any character other than a letter or digit becomes a space | Agoè-Nyivé → AGOE NYIVE |
| drop_article, drop_parts | a leading le, la, les or l’ and trailing part numbers (1, 2, I–IV) removed | Zongo 1 → ZONGO |
| fold | spaces removed; PH → F, QU → K, DJ → J, OU → U, W → U; C before A, O, U or at the end → K; doubled letters single | Djanta Copé, Djanta kopé → JANTAKOPE |
Folding can only merge names, never split one, so an error in folding costs at most a shared range, never a lost code. The 1,379 areas carry 1,323 name keys; 50 keys are shared by 106 areas holding 240,136 compounds. Lom-Nava occurs in six places; Kamina and Tokpo in three; Zongo, Amoutivé, Akodésséwa and Sanguéra in two.
5.5 One national range per name
Every name key owns the numbers 1000–9999 and 10000–99999 nationally. An area with compounds receives a block of
numbers: twice its compounds, in whole hundreds, at least 200. The areas of a name are placed in increasing order of block size, then of area index. With the highest number already used in the relevant part of the name’s range, a block is placed at
where starts at 999 and at 9999. A four-digit block and a five-digit block are never mixed, and each name keeps at least 5,000 numbers free for future areas of the same name. No name needed a qualifier.
Worked example: Fréau-Jardin. One area, 209 compounds: , so the block is 1000–1499.
Worked example: Tokpo, three areas up to 140 km apart (Figure 4). Danyi, 30 compounds: , block 1000–1199. Zio, 373 compounds: , block 1200–1999. Lacs, 1,483 compounds: , block 2000–4999. “Tokpo 11 00” is in Danyi and “Tokpo 24 17” in Lacs; “Tokpo 54 17” lies in no block and is refused.
Worked example: Lom-Nava, the most repeated name. Four blocks fit in the four-digit part: Ogou (77 compounds, 1000–1199), the quartier of Lomé (840, 1200–2899), Moyen-Mono (1,111, 2900–5199) and Kloto (1,599, 5200–8399). The fifth, the canton in Ogou with 3,759 compounds, needs 7,600 numbers, which no longer fit below 9999; it opens the five-digit part at 10000–17599, followed by Zio (4,509, 17600–26699).
At first issue 1,251 areas have four-digit numbers and 128 have five. By compound, 1,549,299 (56.0 %) have four digits and 1,218,754 (44.0 %) five. Five digits are concentrated in Grand Lomé’s large cantons (Sagbado, Legbassito, Togblékopé, Klémé) and in inland towns mapped as a single place point (Sokodé, Tsévié, Dapaong); Figure 7 gives the shares by region. A new area of an existing name, or an area whose block is full, takes the next block above every block of its name; blocks never move, shrink or get renumbered.
5.6 Numbering inside an area: the Hilbert curve
Inside an area, compounds are numbered along a Hilbert curve [24] of order 16 laid over the area’s frozen frame , at each compound’s reference point: the centre of its main building until a gate is confirmed. The Hilbert curve preserves locality better than row-by-row or Z-order scans [25], so neighbouring compounds receive neighbouring numbers and a courier who knows one number knows roughly where the next lies. The point maps to integer grid coordinates
The Hilbert index is accumulated over the scales . With and at each scale,
where, after each term, the quadrant is rotated: if , then when , followed by . The compounds of an area with block and capacity are sorted by and receive
so that free numbers follow each compound. The top third of the block is held back as a tail reserve, starting at
Worked example: Fréau-Jardin 10 58. The compound’s reference point is , , and Fréau-Jardin’s frame is . Eq. (8) gives
and Eq. (9) gives , the 59th of the area’s 209 compounds along the curve (). With , Eq. (10) gives and ; Eq. (11) puts the tail reserve at 1333–1499. Figure 5 shows the whole area.
5.7 New compounds
A compound built after first issue lies on the curve between two issued neighbours with numbers (at or before its position) and (after it). With the set of numbers ever issued in the area, retired ones included, it takes
the lowest on ties, among numbers below the tail reserve. If no such number exists it takes the lowest free number of the tail reserve, then of the area’s later blocks; a full area takes a new block of its name by Eq. (6) and Eq. (7). In Fréau-Jardin , so a house built between two neighbours receives Fréau-Jardin 13 33, the first number of the tail reserve. Where is larger, new homes take numbers between their neighbours. A new compound joins the area of the nearest issued code within 250 m, then the area containing its point, then the nearest area, so that it shares its neighbours’ name.
5.8 Decoding without context
A text is read as a name followed by a number of four or five digits, in pairs or not, separated by spaces or dots. With the set of areas whose plate name or alias has the key of ,
Because the blocks of a name are disjoint, Eq. (13) has at most one element. A number in no block is reported as not issued, never guessed into a nearby place. A check digit, if a system sends one, must verify. A Lomé street code (one to three digits followed by a quartier code, as in “165 AMT”, “46BE” or “13.QAD”) is recognised and answered as a street, never read as an N-Ways code.
5.9 The check digit
The machine form carries a check digit computed with Damm’s algorithm [26], which uses a totally anti-symmetric quasigroup of order 10. Unlike the Luhn digit, it detects every single-digit error and every transposition of adjacent digits; Verhoeff’s earlier dihedral scheme has the same power with more complex tables [27]. Let be the digits of the name’s national identifier (four digits), the area’s index (four digits) and the number. Then
with Damm’s table
Worked example. Fréau-Jardin’s name identifier is 1352 and its area index 32, so the digit string is 1352 0032 1058. Eq. (14) passes through the states 3, 0, 9, 8, 9, 2, 6, 6, 8, 9, 3, 2, and the check digit is 2: the machine form is TG-FRJ-1058-2. Swapping the last two digits (1085) gives 3 and changing the last (1059) gives 6, so both slips are refused. Because the name and the area enter the check, a number copied onto another area, even one with the same name, also fails.
5.10 Spot codes
Every point of Togo also has a spot code, computed offline on a geographic grid of degree (about 3.4 m), framed on its quartier or canton. The grid is geographic rather than projected because Togo straddles UTM zones 30 and 31 at the zero meridian. The alphabet is 23456789CFGHJKMPRVWX: it has no vowels, so no word can form in French, Ewe or Kabiyè; no 0, O, 1, I or L; and K instead of Q, since K exists in both national languages. For a frame with box ,
and likewise , and from , and . The code is the frame key followed by the base-20 digits of and , interleaved from the north, split into two halves.
Worked example. For Fréau-Jardin 10 58, and ; and . Then , which gives the characters 4 and R, and , which gives 5 and 4. Interleaved the code is FRJ-54-4R, a cell of 3.37 m by 3.38 m (Figure 6). A quartier of Lomé gives four characters; a canton gives six or seven. A point between two quartier polygons uses its canton’s frame, so that every code decodes back to its own cell. A point in no outline at all, in a thin gap between two outlines or just over a border line, takes the frame of the nearest outline within 1,100 m whose frame holds it, the distance being measured to the outline’s edges with longitude scaled by and ties going to the lower key. If none of those frames holds it, the nearest outline whose frame lies at most 200 cells (about 675 m) away gives the point that frame’s nearest edge cell, and the registry keeps the exact entrance. Frames never move, and a code decodes in the frame it names. The 4,415 compounds whose entrance lies in no outline are at most 1,081 m from one; each takes its nearest outline’s frame, 13 of them on an edge cell at most 177 cells beyond it, so every compound has a spot code. A spot code is shared by link; it is never needed to find a home.
5.11 Compounds
The registry groups footprints into compounds before any number is given, one area at a time, after putting them in a fixed order by their stable identifier (Table 6). The distance between two footprints is the shortest distance between their outlines, zero when they touch or overlap.
| Rule | Condition | Effect |
|---|---|---|
| Enclosure | the footprint’s centre lies inside a mapped closed wall, fence or hedge of at most 6,000 m² | the enclosure is one compound |
| Annex | a footprint under 30 m² (kitchen, shower, guard’s lodge) | joins the nearest footprint of at least 30 m² within 6 m (8 m in Kara and Savanes) |
| Hut cluster | Kara and Savanes only: huts under 35 m² that belong to no house, at most 3 m apart | one compound of at most 20 huts |
| Single | any other footprint | its own compound |
Only annexes join a house, and a hut cluster never joins two houses, so groups cannot chain. The rules produce 2,768,053 compounds from 3,816,753 footprints, 1.38 footprints per compound: 2,063,440 single footprints, 649,100 houses with their annexes, 54,003 hut clusters and 1,510 mapped enclosures. By size, 2,063,915 compounds have one structure, 492,792 two, 138,808 three and 72,538 four or more. With the 2022 census population, a compound holds on average 2.9 people.
5.12 The building profile
Every structure carries a use class with its confidence and source, its size, its floors where known and a status. The classes for Togo are residential (family compound, cour commune, villa, rows of chambres-salon, immeuble, round hut, takienta), commercial, office, government, education, health, religious, industrial, hospitality, transport, agricultural, annex, under construction and ruin. Classes are inferred in a fixed order of evidence: the OpenStreetMap building type (confidence 0.85), a shop, amenity or office tag (0.75), a mapped place inside the footprint (0.65), the footprint’s size (0.3 to 0.4), and otherwise residential by default (0.45). The evidence is thin: 3,752,065 structures are residential, almost all by default, against 46,322 annexes, 9,651 commercial buildings, 1,688 schools, 1,215 religious buildings and 901 health facilities. A home never carries a name.
6 Implementation
Reference engine. The engine (engine/reference/tg_engine.py, with plate_names.py) implements every rule of Section 5 in the Python standard library: parsing, the name key, decoding, the check digit, Hilbert numbering and insertion, extension blocks, spot codes and compound grouping. The normative specification is engine/SPEC.md. Any other implementation is conformant if it reproduces the published vectors: test_vectors.json and vectors.json, which cover names, forms, 2,218 decodings, spot codes, numbering and insertion, Hilbert indices and pairs. The engine’s tests check all of them.
Registry. The registry (registry/) publishes every code: one gzip-compressed CSV file per préfecture, 40 in all, the frozen area table and a manifest with the count and SHA-256 digest of every file. Each row gives the machine, remembered and written forms, the zone, the number and check, the status (provisional or confirmed), the entrance point, the spot code, the official address where one exists and the building profile.
Server. The server/ directory contains a deployable HTTP service, also limited to the standard library. One command imports the registry into SQLite, verifying every digest and count; the service then answers a JSON API: the card of a code, search by any form, the code at a point, codes near a point, verification, spot codes, zones and areas. A deployment can export the registry back in the published format, and the export is byte-identical to the files it imported. Issuing is disabled unless keys are configured; when enabled, the server issues new codes by the rules of Section 5.7. We checked parity with the issuer on a fixture: for 20 sequential points and an area filled to its last number, the server reproduces the issuer’s numbers, forms and spot codes exactly. On the full registry, 50 randomly drawn codes agreed with the issuer’s own API on all 21 compared fields.
Issuer. Codes were issued once, on 20 October 2026, with every number checked against the reference engine before it was written. The register of areas is frozen: later runs add codes for new compounds and never renumber an issued one.
7 Evaluation
We report the properties of the 2,768,053 issued codes, measured on the published registry with the reference engine.
Uniqueness and decoding. Every written form and every machine form decodes, by Eq. (13), to its own area and number: 0 failures in 2,768,053 of each. No two areas of one name share a number, which the engine verifies when it loads the register.
Digits. 56.0 % of compounds have four-digit numbers and 44.0 % five; no compound needs more than five digits and no name needs a qualifier. The share of four-digit numbers ranges from 16 % in Grand Lomé to 84 % in Plateaux (Figure 7).
Length. The written form (“Fréau-Jardin 10 58”) has a mean of 14.5 characters and a median of 14; the longest has 22, a single long word whose commune has not yet chosen a shorter name. Of the 1,379 plate names, 1,354 satisfy Eq. (4); the 25 that do not are single words longer than 12 letters awaiting their commune’s choice.
Coverage. Every compound in the map data has a code: 100 % of the 2,768,053 compounds, against 2.6 % (71,002) that lie within 30 m of a named street of Lomé.
Error detection. We drew 200,000 codes at random and applied every single-digit substitution and every transposition of adjacent unequal digits to their numbers (Table 7). Variants that begin with a zero are not valid numbers and are refused by syntax alone; of the remaining variants, the check digit of the machine form detected all 7,790,038 substitutions and all 585,755 transpositions, as Damm’s construction guarantees. The remembered form carries no check: 75.7 % of single-digit substitutions and 71.0 % of adjacent transpositions still produce a number issued under the same name, because blocks are dense by design. A remembered code read with a slip therefore usually designates another real compound, often nearby, and the application must show the place on a map and read the code back before a journey starts. This is the price of a code without a visible check digit, and Section 8 explains why we accept it.
| Slip in the number | Variants | Issued under the same name | Refused | Leading zero |
|---|---|---|---|---|
| One digit changed | 7,990,038 | 75.7 % | 21.8 % | 2.5 % |
| Two adjacent digits swapped | 613,672 | 71.0 % | 24.5 % | 4.5 % |
| Machine form, either slip | 8,375,793 | 0 %, all detected |
Grouping. We tested the compound rules by hiding the 966 mapped walls, fences and hedges that enclose two or more buildings and re-running the rules without them. Only 9.0 % of these enclosures come out whole and 7.2 % exactly, while a further 38.5 % miss a single building. Behind a Togolese wall the main house, the rented rooms and the kitchen are often separate buildings, and without a mapped wall the rules keep them apart on purpose: merging two codes later costs nothing, whereas splitting a wrong merge would give a household a new code.
Worked examples. Table 8 lists, for well-known places, the compound nearest each.
| Near | Code | Machine form | Spot code | Shown first |
|---|---|---|---|---|
| Grand Marché, Lomé | Fréau-Jardin 10 58 | TG-FRJ-1058-2 | FRJ-54-4R | Rue Mission Tové, Lomé |
| Bè, Lomé | Souza-Nétimé 29 22 | TG-SZN-2922-8 | SZN-22J-M95 | Rue de Tone, Lomé |
| Université de Lomé | Université 12 69 | TG-UB-1269-1 | UB-22P-F5F | |
| Agoè-Nyivé | Agoè-Nyivé 1 33 31 | TG-AGN0204-13331-0 | AGN02-46K-MFG | |
| Kara | Zongo 1 41 98 | TG-KOZ0615-14198-6 | KOZ06-454-R32 | |
| Sokodé | Sokodé 1 41 08 | TG-TCH0603-14108-0 | TCH06-56G-58X | |
| Atakpamé | Gnagna 11 02 | TG-OGO0711-1102-5 | OGO07-22M-R23 | |
| Kpalimé | Fiakomé 20 28 | TG-KLO0403-2028-4 | KLO04-49G-JJ5 | |
| Tsévié | Tsévié 1 91 72 | TG-ZIO1502-19172-2 | ZIO15-46K-468 | |
| Aného | Aného 1 24 64 | TG-LAC0402-12464-5 | LAC04-322-H6C | |
| Dapaong | Dapaong 2 06 41 | TG-TON0204-20641-9 | TON02-953-WXC | |
| Bassar | Bassar 1 79 00 | TG-BAS0303-17900-5 | BAS03-322J-7739 |
The same name in two places causes no ambiguity: zongo 1500 lies in the Zongo of Kloto, whose block is 1000–2699, and zongo 14198 in that of Kara, 10000–23299. A partner system that receives TG-FRJ-1085-2, with two digits swapped, refuses it, because the check of 1085 is 3.
8 Designs considered and rejected
We compared the candidate forms on the five properties that matter on the telephone and on a parcel (Table 9).
| Form | Example | Said on the telephone | Remembered | Unique alone | Survives a reform |
|---|---|---|---|---|---|
| Préfecture and alphanumerics | ZIO 7HK2X | hard: letters read differently in French, Ewe, Kabiyè | hard | yes | no |
| National digits | 4817229 | easy | hard: no anchor | yes | yes |
| Plus Code | 6FR346JF+P9 | hard: letters and a sign | hard | yes | yes |
| Lomé street code | 165 AMT | easy | medium | the street, not the gate | yes |
| Name and number, préfecture to separate repeats | Tokpo 24 17, Lacs | easy | medium | only with the préfecture | no |
| Name and number, one national range per name | Fréau-Jardin 10 58 | easy, in pairs | easy | yes | yes |
Préfecture and alphanumerics. Zio alone has about 280,000 buildings; numbered by préfecture, it would need five base-20 characters or six digits, and the letters are read differently in the three languages.
National digits. Seven digits with no anchor are hard to remember, and a slip lands anywhere in the country.
A qualifier for repeated names. Separating the three Tokpos by their préfecture makes the code depend on a second word that people omit when they give their address and that changes when boundaries are reformed. Sharing one national range costs some areas a fifth digit; we measured the cost at 44.0 % of compounds, most of them in large cantons of Grand Lomé whose quartiers are not yet named in open data.
Full official names. “Centre de formation rurale de Tami 10 17” is too long to say with a number; Eq. (4) shortens it to Tami.
No N-Ways code where an official address exists. Giving Grand Lomé only the official address would have left most of its compounds without any address today, since the DAGL’s entrance addresses are not yet published and many households share one gate. We chose one code for every home with the official address shown first.
A visible check digit. A check character that people say would detect slips in the remembered form (Table 7), but it lengthens every code, it is the part people forget first, and it cannot be verified by a listener. We keep it in the machine form, where systems verify it, and rely on the map and read-back for people.
Why Damm’s algorithm. Detecting every single error and every adjacent swap with one decimal digit requires a quasigroup such as Damm’s or a dihedral scheme such as Verhoeff’s; the modulus-11 alternative needs an eleventh symbol. Damm’s needs one table and no permutation, and including the name and area in the check catches a number copied onto the wrong area of the same name.
Heights from machine-detected footprints. Their height attribute is a placeholder (Section 3), so floors come only from OpenStreetMap.
9 Benefits for citizens
For a family in a cour commune of Bè, in a village of Plateaux or in a new house in Agoè, a code changes four ordinary things.
Being found. Today a visitor, a motorcycle taxi or a delivery rider is guided by telephone, landmark by landmark. With a code, the household says one short phrase, “Zongo, un, quarante et un, quatre-vingt-dix-huit”, and the application leads to the gate.
Proving where one lives. Banks, mobile-money agents, schools and employers ask for an address, and almost nobody can give one that anyone can check. Before the codes were issued, 71,002 compounds (2.6 %) lay within 30 m of a named street of Lomé; all 2,768,053 now have a code.
Receiving goods and services. Relatives abroad, shops and water and electricity services can send to a code instead of a description, and a household can ask for a connection or a repair at the right gate.
No cost to the household. Every compound already mapped had its code from the day of issue; it is free, needs no document and holds no personal data. It is not a land title.
Who benefits most. Those with least today: villages far from the national road, the hut compounds of the north, tenants who share a gate, and people who do not read French well, for whom a known place and two pairs of digits are easier than a street name. We did not find a published estimate of the time Togolese households spend guiding visitors; Section 14 proposes a measurement.
10 Logistics and commerce
Delivery in Togo runs on the telephone and the motorcycle taxi. In Africa a single last-mile delivery attempt costs on average about US$2.70, and first-attempt success can be as low as 60 % [28]; a logistics software vendor uses a failed-delivery rate of 5 % in its cost benchmarks for the Middle East and Africa [29]. Let be the rate of failed first attempts without a code, the rate with a code, the share of the difference due to locating the customer, and the cost of an attempt. The saving per 1,000 deliveries is
We take and from the sources above and treat and as uncertain (Table 10). The central case, and , gives US$203 per 1,000 deliveries; the range is US$34 to US$945. These are not measurements in Togo, and Section 14 proposes how to make them.
| 34 | 101 | 236 | |
| 68 | 203 | 473 | |
| 135 | 405 | 945 |
For a logistics business the code is also a stable customer key, it resolves to the gate (or the main building until the gate is confirmed), and the machine form’s check digit catches a mistyped code at once. The registry and the engine are open, so any firm can resolve codes in its own systems, offline. The port of Lomé serves the whole corridor to the north: importers, transit agents and the traders of the Grand Marché and Hédzranawoé can send goods and payments to a compound by code, and a cooperative in Plateaux can list its members by code rather than by village. The SPT’s carriers and its PostMap application can deliver to a gate instead of a box.
11 Emergency services
An ambulance, a fire crew or a police patrol faces the courier’s problem with more at stake. A qualitative study of emergency medical services in Kigali found that crews and dispatchers lost time locating patients because they relied on local knowledge and needed several calls to pass on the location [30]. Togo’s emergency numbers are 117 and 161 for the police, 172 for the gendarmerie and 118 for the fire service [31]. We found no published measurement of locating times in Togo.
A code helps a dispatcher in four steps. The caller says one phrase (“Tokpo, vingt-quatre, dix-sept”), and the registry returns one compound, in Lacs, not one of the two other Tokpos. The dispatcher reads it back while the map shows the place, its préfecture and the gate, which also guards against the slips of Table 7. The crew drives to the gate, and a spot code marks any point without a compound, such as a crash on the N1. All of this works offline.
For out-of-hospital cardiac arrest, Larsen and colleagues modelled survival as 67 % less 2.3 percentage points per minute before cardiopulmonary resuscitation, 1.1 per minute before defibrillation and 2.1 per minute before advanced care [32]; we write these per-minute decrements as , and . If a single crew brings all three and the code saves minutes in finding the gate, the gain is
percentage points; if only defibrillation is delayed, it is . For between 1 and 5 minutes the gain lies between 1.1 and 27.5 points. The model was estimated in King County, Washington, where bystander resuscitation is common, so these figures indicate an order of magnitude for Togo, not a prediction.
12 Government coordination and planning
A code is a shared key. When ministries, communes, utilities and INSEED refer to a compound by the same code, their records can be joined without matching names and descriptions.
One reference for all services. An address register gives a list of premises more complete than a tax roll and shows who is missing from it [1]. In Grand Lomé, the N-Ways registry and the DAGL’s addresses can be compared gate by gate once they are shared, and every DAGL address attached to a compound makes both more complete.
A code that outlives reforms. Communes and préfectures are attributes looked up from a compound’s position. When a commune is created or its boundary moves, every code keeps working and shows its new commune; the area in the machine form never moves.
The census. A table of codes against the census enumeration areas would give the next census a frame of 2,768,053 compounds to sample from and return to, and give the registry household counts, without storing any name.
Planning with real counts. The registry counts compounds by region, préfecture, area, grouping rule and building class, and every count can be recomputed from the open files. Table 11 gives an example: straight-line distances from a random sample of 20,000 compounds to the nearest mapped facility. These figures describe the map as much as the country, because village health posts and gendarmeries are thinly mapped; a ministry can replace the facility list with its own and recompute them in minutes.
| Facility | Mapped facilities | Within 2 km | Within 5 km | Median distance |
|---|---|---|---|---|
| Health facility | 789 | 51.3 % | 74.4 % | 1.9 km |
| School | 2,873 | 67.8 % | 85.9 % | 0.9 km |
| Police | 130 | 25.5 % | 44.7 % | 6.6 km |
| Pharmacy | 310 | 32.4 % | 46.8 % | 6.1 km |
What a door-numbering survey would have cost. At the World Bank’s average of US$5.7 per doorway at 2005 prices [1], numbering compounds on the ground at a unit cost would cost
or 7.9 to 23.7 million if the unit cost is taken to vary by half either way. This is a reference figure, not a saving: plates, signs and the confirmation of gates still have a cost, and the codes complement rather than replace the DAGL’s street addressing.
13 Privacy, safety and governance
Places, not people. Codes describe places. Homes carry no names and no occupant data; business and public buildings carry their public names. The registry publishes every compound’s code, entrance point and building profile and nothing about the people who live there. No identity number is collected and nothing links a code to the national identification number. Law no. 2019-014 on the protection of personal data applies, with the IPDCP, in operation since March 2025, as the authority [33]; the prior declaration the law requires covers the personal data the application processes (telephone numbers and photographs). What the application holds about people is disclosed only on a court order, and such disclosures are reported publicly.
Not a title, not a list. An address is neither a land title nor an eviction list. The application states that a code is an address, not a title, and the land code itself denies the cadastre any power to confer property [13].
Confirmation. Every code starts as provisional. It becomes confirmed when at least two independent signals agree and none disagrees: journeys or deliveries that end at the gate, the household confirming on two different days, a partner’s record, or new imagery showing the buildings. A neighbour’s objection keeps the code provisional until the signals settle it. No code waits in a queue for manual review, and no confirmation changes a number.
Governance. N-WAYS LIMITED maintains the model and is the single issuer. Areas, blocks and frames are frozen and codes never move; regrouping never changes an issued code. A commune may rename an area (the old name remains an alias), choose a provisional plate name once, or add areas. The DAGL’s addresses and Lomé’s street codes belong to the State: they are shown as written, never edited, and mismatches seen on the ground are reported to the DAGL. A deployment of the server issues codes only if the State or N-WAYS LIMITED has designated it, because two issuers would give the same number twice. The repository, the registry and the rules can be transferred to the State or a body it designates under their open licences, without forking the engine.
14 Limitations and future work
- The areas depend on open data. OpenStreetMap place points are uneven; names and spellings need confirmation by residents and communes, and towns mapped as a single point, such as Sokodé and Tsévié, form large areas with five-digit numbers. INSEED’s locality lists would allow later areas to be cut smaller without changing any issued code.
- Seventy-six plate names are provisional, 25 of them still over the limit, until the communes choose.
- Compounds are inferred. Few walls are mapped; most compounds are a single building or a house and its annexes (Section 7).
- Uses are mostly a default, and floors are almost always unknown.
- Gates are not yet known. All 2,768,053 entrance points are the centre of the main building; gates will be confirmed by residents and couriers.
- The remembered form has no check. Three slips in four produce another issued number of the same name (Table 7); read-back and the map are the safeguard.
- The DAGL’s data are not open. Until they are shared, Lomé shows its street, and the DAGL address only where residents confirm it.
- The canton boundaries of the HDX dataset are not an official gazette; they are frozen for stability, not for authority. Thinned, they leave thin gaps and stop at the border line: 4,415 compounds stand outside every outline. They keep their area, and their spot code comes from the nearest outline’s frame (Section 5.10).
- The impact estimates are transferred, not measured in Togo.
We propose five measurements to replace the transferred figures (Table 12).
| Measure | Method | Target |
|---|---|---|
| Recall of one’s own code after one week | residents asked without the application, in French, Ewe and Kabiyè | at least 80 % exact |
| Digit errors when dictating a code by telephone | recorded calls with partner couriers | under 5 % |
| First-attempt delivery success | partner couriers, with and without a code | at least 20 points higher |
| Time from arrival in the quartier to the gate | courier application timestamps | halved |
| Gates confirmed and DAGL addresses attached | residents and couriers | 50,000 |
15 Conclusion
We have described a national addressing model for Togo in which every compound has a code made of a place name and two pairs of digits, unique nationally on its own, numbered along a Hilbert curve and protected in its machine form by a Damm check digit. Codes have been issued for all 2,768,053 compounds; every one of them decodes to its own compound, and 56 % have four digits. The model puts the State’s addresses first wherever they exist and leaves room for the DAGL’s work in Grand Lomé. Its specification, engine, registry and server are open, so that any public body can verify every number and serve the same answers.
Data and code availability
The specification, reference engine, conformance vectors, registry, server and the sources of this paper and its figures are published at https://github.com/n-ways/open-addresses-togo [34]. Code is licensed under the Apache License 2.0, data under the Open Database Licence 1.0 and documents under CC BY 4.0. Every use should credit: “N-Ways Addressing for Togo, © N-WAYS LIMITED (nways.ng)”. The figures are computed from the published files by tools/paper-figures.py.
Acknowledgements
The model is built on the work of the OpenStreetMap contributors in Togo, the Google Open Buildings and Microsoft building-footprint teams, the Overture Maps Foundation, OCHA’s Humanitarian Data Exchange and INSEED. We thank the authors of the sources listed below.