A Critical Analysis of the What3Words Geocoding Algorithm
arxiv.org
arxiv.org
What3Words – The Algorithm https://cybergibbons.com/security-2/what3words-the-algorithm...
Why What3Words is not suitable for safety critical applications https://cybergibbons.com/security-2/why-what3words-is-not-su...
Someone came up with a clever idea, and clearly they had some math/cipher skills. But w3w clearly had no linguists on staff. Even Wordle did a better job filtering their word list.
Though with some of the words being so lengthy and linguistically complex, they would have been better moving to a four word system and assuring simpler words that was better filtered.
Edit: it looks like the list itself is not even available, they would have had to reverse-engineer the app, so using a synthetic list makes more sense.
https://cybergibbons.com/security-2/why-what3words-is-not-su...
https://techcrunch.com/2021/04/30/what3words-legal-threat-wh...
Edit: initially I said “sued”, which was inaccurate. And the repo included the proprietary word list, not just code.
A book is just a list of words.
If you compile a word list yourself, you've created something that doesn't describe the factual state of the world; you've created something new.
FWIW, before the debacle, even the (apparent) author of it appears to have admitted that it flaunted copyright:
> FWIW, I have reverse-engineered the what3words address decoding algorithm. If anyone else with the luxury of flaunting patents and copyrights is curious, check out the demo at https://cardinalhood.github.io/what3words/. It’s written in JS, and runs in browsers and Node.js.
https://blog.ldodds.com/2016/06/14/what-3-words-jog-on-mate/
(W3W is very aggressive about pursuing possibly spurious IP claims to remove any trace of What Free Words. In the past, even mentioning it in a comment like this is enough to attract a DMCA complaint.)
For me, it’s just already damn hard to make sure you can hear numbers correctly over the radio. In marginal conditions, it’s a hell of a lot easier to use numbers (and requires less time due to not having to repeat or ask for clarification).
Do I really want to be trying to say “arrows.midst.senses” over a handheld radio?
Really, there's all the research done (since the invention of early radio?) on what makes a phonetic alphabet or phonetic code usable in noisy conditions, and instead W3W effectively plants a field of rakes in front of blindfolded people.
besides the greater public awareness of w3w amongst certain demographics compared to coordinates, they may be harder to hear, but it's much easier to read out three words correctly than it is 16-18 numbers
the thing with words is that they're easy to hear in context, but take them out of context and they're often indecipherable
perhaps a system that gives each square a coherent-sounding sentence could be tried, although I'm sure that would have its difficulties too
Ten numbers doesn’t sound much more difficult than three words to me.
Earth is about 2^49 square meters. If you want precision of ~8 square meters, you're going to need to convey 46 bits of information (or use an optimization that gives less resolution over oceans, etc, but that's only going to be a small win-- a bit or two).
46/3.3 = 14 digits, but the latitude/longitude coding is a little less efficient because it's not uniform. A plus code does it in 11 characters (not including the plus) worth each 4.32 bits =~ 47.5 bits.
Yes-- that's why I said it was 46 bits for an 8 square meter area (because this is about the size of area you care about for this problem-- W3W is 9 square meters).
> for 8m do log_10(2^47)
No, because 2^3 = 8, so one does log_10(2^(49-3)) and gets 13.8. 46 / 3.3 =~ 13.9 works because 1/log_10(2) =~ 3.3.
"arrows.midst.senses"
Will become "Alpha, romeo, romeo, oscar, whiskey, sierra. Mike, india, delta, sierra, tango. Sierra, echo, november, sierra, echo, sierra".
I hold exactly the same opinion as you, however what is very telling us that the police and fire services love it. I think that's because of the accessibility of the system rather than the underlying algorithm or communication.
I am also coming to see w3w locations written more and more as a more accessible alternative to coordinates, especially in land sales and forestry situations.
I do particularly hate that government services and agencies are becoming reliant on a commercially licensed pattern. It does not tick the sustainability tickbox for me.
I hate it as much as I love it.
I think the issue is that other less emergency numbers can't (like 101). That's why they tell you to hang up and call 999 rather than transferring you.
But I don't know why they just don't add more numbers to the "allowed to geolocate you" list. Or even build in a "send my location" button in phone calls. You wouldn't even need to modify the phone system - it could send DTFM tones.
But the W3W app identifies your position by GPS, meaning it is subject to the same general reliability problem via inheritance. Yes, it displays a map as well, so you can identify that you need to quote a different square, but in an emergency situation I'd posit that people are more likely to just read off the words and not really take in the displayed map. And the same solution works for GPS alone anyway – if you are reading your position using a phone app it is likely displaying an approximate map also.
You will need reporter to describe location.
https://www.mirror.co.uk/tech/google-now-automatically-provi...
The whole project has then no real purpose if you have to spell unknown words.
It has? It is?
I've known about it for many years and even seen billboards by them, yet never seen it used in practice.
1. first verify that the position reading is accurate at all
2. adjust the reading appropriately
3. note any further navigation issues that could be important to people trying to head towards them (even with a 100% accurate position that could be a problem).
The selling point of W3W is neither accuracy nor precision, but the claim that it reduces transcription errors that might send rescuers off in the wrong direction – for instance the difference between OSMAP references 680287 and 680278 putting you on the wrong side of the river with a few mile trip in either direction to get to the other side due to where crossing points are (there are no doubt better examples than this, I arbitrarily picked an example close by where I often run). This claim is disputed by a number of people some of whom make a good case (for instance https://www.bbc.co.uk/news/technology-56901363) and the fact that W3W has often chosen to respond to criticism with legal slaps instead of technical explanations suggests to me that the criticism is right.
Don't you need GPS to get the coordinates to translate them to three words?
You will need reporter to describe location.
I thought I'd seen adverts from official emergency bodies mentioning W3W, but a quick search finds nothing mentioning the fact that call-centres have the facility available that isn't directly from W3W, a straight copy from one of their press releases, or a discussion about the system's deficiencies (i.e. https://www.bbc.co.uk/news/technology-56901363), so that might be me having not been cynical enough to identify an astroturf campaign!
It was great for the supervisor to just tell everyone 3 words to remember instead of UTC or LATLONG coordinates which I for one probably would not have remembered in an emergency
You can kind of shop around for an easy set to remember too if you get a weird set of words you can most likely just take the grid box next to you
I’m sure it’s not perfect but it was very convenient for our particular use case
Preferably with an error correcting code built in. Homophones shouldn't really matter, if you mess it up, the ECC could just fix it.
Go with 4 words instead of 3.
Take Diceware, treat the words as a base 7775 number, convert to binary, you get 50 bits.
You could do some fancy reshuffling, reorder the words by similarity(Start with the first, then repeatedly pick the one with the smallest edit distance), and do the conversion to an integer such that any one word swapped to a close neighbor only produces a small change.
My math knowledge is too limited to do this myself unless there's something to copy and paste or a brute force hack, but couldn't you do that by treating each word as a digit in 7775-ary gray code?
Any one word being off to a nearby word, would then just give you an error in the low order bits of the latitude.
Then you protect those bits with a hamming code, and have an overall 2 or 3 but checksum for everything, so at least some of the easy to make mistakes will be corrected, and most will probably be detected.
Reliability could probably be better than reading off coordinates, still faster, with only one extra word.
Plus the words themselves already have redundancy in them, if you make a typo, autocorrect can fix it, and if it gets the wrong one, the correction will likely catch it or flag the issue.
I concluded something similar to you and went to 4 words. I spent the most time on the wordlist. I used the Google s2 library to split the world into a hierarchy of points.
I even did an emoji checksum too although these days I'd probably do that differently. I really like the idea of an ECC actually, I might have a look at doing that, although it would remove the hierarchical nature that I like with the current system. Because it's hierarchical, people who know the context can skip initial words. Like two people in the 'decorate' region https://wherewords.id/decorate could just use the last three of the four words, or to indicate a number of locations near each other, you could just provide one location and then the other positions with just one or two words.
The heirarchal thing is really cool.
I think ECC probably wouldn't get you much unless you reordered words by similarity and did the grey code thing, otherwise, most words would change a lot of bits at once if you mixed them up.
But with grey code reordering you might not need any ECC because single words changing to similar words might just put you off by a few meters, degrading gracefully in a way that doesn't matter most of the time. Or at the very least you might only need to protect the last few bits.
Maybe there is an ordering that puts words likely to be mixed up next to each other, but still feels like it has variety, enough to where you'd notice the difference between adjacent locations most of the time?
Or maybe word confusion isn't actually the type of error that's most relevant? Accidentally using data meant for a a different region might be a bigger problem.
The problem with error correcting codes is that they typically need quite a lot more bits transmitted, and I'm trying to keep the number of words manageable without needing a huge wordlist. Of course if I could get a 65k wordlist I was happy with that'd be fine, but that seems very unlikely given how hard it was to get a good 4096 word wordlist.
Since my word list is 4096 words, each word represents 12 bits. This means that if I use a 3 bit crc, each word can check 4 other words.
{ words: [ 'beg', 'notably', 'renew', 'curious' ], crc: [ 'joy' ] }
{ words: [ 'beg', 'notably', 'able', 'curious' ], crc: [ 'joy' ] }
[ '100', '000', '011', '000' ] 100000010000
[ true, true, false, true ]
You can see it correctly identified that the third word is wrong. I will probably integrate something like this next time I update wherewords.id, although that might be a while....Wikipedia says geocoding is:
the process of taking a text-based description of a location, such as an address or the name of a place, and returning geographic coordinates, frequently latitude/longitude pair, to identify a location on the Earth's surface.
In my opinion the 3 words are already geographic codes and not something like an address. It sounds like nit-pick but it shows the big problem of how they advertise that their service is a solution to vagueness of an address. Because if you have a phone with GPS available (or a similar device) you don't need "geocoding" because you already have the precise latitude/longitude pair. And if you do not have a device with GPS you'll also have a problem getting the 3 words.
If you have a position using a CRS you’ve got lots of information about where it is relative to other positions in the same CRS. If you have a street address, you have hierarchical information of that location, and yea you can geocode it if you want to exchange topology for position.
If you have a W3W you’ve got a memorable hash that tells you nothing at all until you geocode it. Making a W3W really feels like the opposite of geocoding.
Or consider it like this:
A coordinate pair tells you in some unit (degrees, metres, etc) where something is relative to other coordinates (or the datum).
An address tells you where things are topologically: “it’s inside this city. Along this street. Beside these other addresses.” (Usually…)
What does a W3W tell you?
And let me guess… to get any information out of a W3W you must use their proprietary system. If that’s the case, what an absolutely moronic system to use.
I'll bite. Using it as intended, both as a service and a physical coordinator (via 3 text chars), reveals a location with 3mx3m bounded precision. No other options exist that provide a solution to "where's the thing" without losing this key precision boundary.
The words we had were pretty good ones something like banana-sink-trampoline I don’t remember now but using UTC or lat-long would definitely have been harder to memorize
If you get a bad set of three words it’s not so hard to choose a neighbouring set if I remember the grid was pretty fine grained I think our foreman “shopped around” for a nice easy set somewhere on the nearby logging road reasonably close to us
This basically replaces “okay so this is evacuation point Alfa” with “okay so this is evacuation point carrots-bacon-ovens”
In either case you still must consult an additional source if you need it translated to a coordinate system. And if you mix up “oven” with “ovens” you might end up evacuating to the other side of the planet.
And you can avoid the ovens vs oven problem by just picking a coordinate with good simple words the helicopter is fine to find you within a few hundred meters of your camp
This system has been used extensively in remote resource extraction because humans in the pressure of an emergency can recall words and phrases better than numbers
It works pretty well for this use case
https://plus.codes seems much better, but sadly it uses random characters instead of words, which is much harder for humans to remember ( https://xkcd.com/936/ ), so I don't think it will ever catch on.
That's pretty sad in my opinion, is the whole concept of using words to encode a location now owned by w3w? The implementation seems trivial
Do we really need to remember them, instead of just writing them down?
It was explicitly designed in that way [1]. It does make harder to remember, but I think the memorizability constrains other goals too much.
[1] https://github.com/google/open-location-code/wiki/Evaluation...
Plus codes are an open standard, osmand at least also supports them.
Essentially, yes. There are patents involved, and W3W are rather litigious so if you have a competing idea/implementation that doesn't infringe be prepared to expensively defend that position.
That hasn't stopped some good parody versions existing though, perhaps the best known being https://www.fourkingmaps.co.uk/ [reporting in from hoes.abortion.cumshot.dope!]
This is the use case I’ve seen 3words applied most often
You're missing the point. The w3w coordinate system is designed to be readable by humans. The massive increasing adoption of this system should be a large hint that it is useful.
Streets are already transforming 2D information on a 1D line, a bit like a hilbert curve.
GPS has a military use because the military go off-road, but citizens really don't (99.999% of the time).
So yeah, it's another one of those case where software engineers are trying to solve a problem where there was no problem in the first place, because they don't like dealing with standard addresses.
If you want to share a GPS coordinate, just use geohash, and use NATO alphabet if you need to share it orally.
As for gps coordinates, they are rather long and enunciating long sequences of characters can be quite tedious as anyone who has ever had to deal with game cd keys could tell.
That, and most people don’t know NATO alphabet.
So I’d, on the contrary, say a geohash-ish approache relying on a dictionary of carefully chosen hard to confuse and easy to enunciate words has its merits.
But the optimal solution to me would be "press here to send your exact location".
> GPS has a military use because the military go off-road, but citizens really don't (99.999% of the time)
This is true for most of the world but not true for a lot of Africa - which does not have a real address system and relies on describing where a person lives and then doing a pin drop (websites will just accept pin drop).
I’m not a fan of W3W, but it’s pitch is generally to fill in the gaps where addresses don’t work, not to replace addresses entirely.
Lots of people do go off-road as a hobby. It's still probably something like 90% or more, but alternatives to addresses do have some utility. W3W happens to be an extremely bad solution to somewhat legitimate problem.
Roads that have consecutive numbers are also useful.
These w3w words can be useful for logistics but they seem to be useless for human beings.
It's definitely possible to reverse engineer the word list and other aspects of the w3w system. However I also want to make my anysis code public and I don't want to deal with w3w's lawyers.
w3w make the basic claim that 1. similar addresses are far away from each other and 2. this makes mistakes obvious.
1 isn't true because they use a very naive randomization method. This was described before in an excellent blog post https://cybergibbons.com/security-2/what3words-the-algorithm... I added some equations in my work. In the worst case you end up with a run of addresses like
twice.over.x word.again.y repeat.phrase.z ...
And maybe 10km away another run like
twice.over.a word.again.b repeat.phrase.c ...
Only one word is different, which obviously makes it much easier to confuse addresses.
The other point is that around 25% of addresses (probably more) could be confused with 4 or more others. In that case, the AutoSuggest feature may not suggest the address you meant, and if it doesn't, there's not much you can do, since this is the only form of error correction available in w3w.
w3w is quite popular here in the UK and I can see the appeal, it is more fun to shout out green.apple.regret than some alphanumeric string. But given the above problems (which i am sure w3w know about) that doesn't seem like a good enough reason to trust an app like this with matters of life and death.
Some apps make this easier than others, with Google Maps still a mystery. In an emergency, or if I really needed a try location, I'd feel more comfortable with the dirt-simple nature of w3w then remembering how to find the lat/long and copying or saying all the digits (there are a lot of them!)
Apple Maps surprised me by being the easiest. It shows lat/long under the "My Location" pane which appears when I tap the blue dot. They make it easy to copy /paste.
Google Maps on iOS replaces that with a "Plus code". I can't find where my lat/long is in this thing, and gave up. (Hints and Spoilers welcome!)
Over the years, I have tried other map apps which I pulled up to see how they handled lat/long:
* Maps.me acts similarly to Apple Maps, tap the blue dot.
* Here We Go maps makes you drop a pin at your location, but then displays lat/long. Magic Earth has same problem/approach. Who would remember how to do that in a rush?
* Organic Maps over engineered this one: tap the blue arrow and lat/long appears, but when you tap it to copy, it changes to a new format each time (no commas, an alph-numeric I don't know, a url, a UTM, an MGRS, and then back to lat/long). Turns out you can press and hold to get a copy menu.
* Google Earth displays the lat/long right on the screen... But it's not copyable.
W3w may have implementation problems, but it does a great start on simplifying the answer to a verbal "where are you?". The rest of these, esp Google Maps, just aren't quite there yet.
https://maps.google.com/pluscodes/
But normal co-ords also appear for me when I long tap anywhere
- have a fixed pattern, e.g. adjective.adjective.noun.
- create groups of words and put them in hierarchies. E.g. noun->animal->predator
- cover the world with a one-dimensional Hilbert curve
- Increment the noun along the curve. When all nouns are exhausted, start with the first noun again and increment the adjective in the middle, a.s.o. (analog to how incrementing a number with several digits works).
With this approach, the location purple.flying.tiger would be next to purple.flying.lion.
The 3 words idea is patented and the basic idea is to have a drm protected database that is needed to find the actual location. The play the long game. Ultimately selling access to the database will make them money.
Large conceptual distance between close physical locations is a feature not a bug.
For my POC, I also used a simple 1D hilbert curve. Running a simulation and plotting the words, you actually get pretty decent resolution, and it's even alphabetical by distance. Output from simple demo w/ BIP39 (math might not be correct): https://ibb.co/MnmcRFk but you can see that the word order actually make sense (although "winner" and "winter" are too phonetically similar, but still, gets the point across).
[1] https://www.eff.org/deeplinks/2016/07/new-wordlists-random-p...
Can someone come up with something convincing?
The problem is that it's useless without a phone but if you have access to a phone then a gps location is better, unless you have to remember it or put it in by hand
Or spell it out while in distress.
But it seems w3w fits best in the "interesting but ultimately bad idea" bin.
For everyone else: No.
In any case, do people really need to write down coordinates these days. It's probably all copy-paste or just click a link.
I have just noticed that the Google Maps app now gives you the Plus Code of any location.
https://longair.net/blog/2021/08/23/open-data-gb-postcode-un...
https://www.bbc.com/news/uk-england-49319760
But if you need internet access anyway I'm sure that GPS would be a better thing to use, and there are also stories about the use being questioned for accuracy reasons:
https://www.bbc.com/news/technology-57156797
Really though I think it's a cute hack to use such a small number of words to define points - but as a closed source, and sue-happy company, there's really nothign to recommend it. Sure the average Joe might not be familiar with reading/writing GPS coordinates, but over a phone I'm sure an emergency dispatcher could walk them through it.
So if you see an advertisement for a restaurant at giant.purple.monkey, you can get there. Or maybe you're coordinating plans on a non-smartphone call. Or you could put the location on flyers (a QR code could work, but lots of people hate those). Or you're dictating a location to a smart assistant (Mercedes-Benz did a partnership, and AFAIK the in-car assistant accepts W3W locations; I don't know for sure though, I use android auto in mine; disclaimer: I work at MB).
In practice there are problems with plurals, homophones, and other similar pronunciations (did he say heavy.monkey.dress (near SF) or heavy.monkeys.dress (near LA)). I think realistically W3W is almost never the best option, but I do quite like the idea. Maybe if they did a better job filtering words to avoid collisions, and made it 4 words? I imagine it could actually be a pretty memorable way to describe a location if it were something like adjective.noun.adjective.noun, and with fewer near-collisions in the library (heavy/heady).
[0] https://www.sltrib.com/news/2019/10/06/some-native-americans...
The only major thing W3W has going for it is a very, very good marketing department.
Your link has ambiguous answers to "open source" and "free".
That said, if someone else were to pick the idea up and move it forward on their own in the OSS space, then we'd (very likely) support that.
I really don't like patents.
But that doesn’t stop companies (especially those with a weak technical moat) from abusing the system.
IMO, if we are to have patents at all, the patent offices should be robust, well-funded systems which make sure that no patent that's not genuinely a novel implementation of an idea gets granted. In reality, it seems like patent offices more or less accept anything that's written in dense enough lawyerese, and it's up to the legal system to slowly invalidate the bad patents after they've done a ton of harm.
The fault here doesn't lie with the companies, but with the whole patent system where governments are way too quick to give out a state-backed monopoly of an idea. I find the whole practice despicable.
Here's the What3Words patent: https://patents.google.com/patent/CA2909524A1/en
The first claim of the patent is:
> 1. A computer implemented method of producing a location identifier comprising:
> receiving at a processor geographical coordinates of a location;
> at said processor performing the steps of:
> converting the geographical coordinates into a single unique value n;
> converting the single unique value n into a unique group of a plurality of
> values; and converting the plurality of values into an equal plurality of
> respective words; and making the plurality of words available as a location
> identifier.
It's hard to imagine anything remotely based around the idea to "convert a location to a set of words" which doesn't infringe on that claim.Patents as currently implemented are a problem. Too many are granted for too-vague ideas; patent trolls buy those vague ideas and then milk them for rent; companies game the system to get far more than the specified twenty years of exclusivity.
So, it's a mixed bag.
£31m loss in FY22.
Cybergibbons has also done a very good critique on how unsafe it is. See here: https://cybergibbons.com/security-2/why-what3words-is-not-su...
They are also very litigious towards people that call them out.
That's the plan all along. The end-game is to become the ultimate rent-seeker on the whole concept of addresses, so that any device capable of looking up or resolving an address is obligated to pay rent to them.
Sounds like it's been a great "success" for the people who did the burning.
"The algorithm is patented in several countries, preventing anyone from implementing a compatible algorithm or developing anything like it as a competing standard. Notably the patent is not restricted to schemes which use three words, so a hypothetical "what4words" would potentially also violate the patent.
The wordlist necessary for encoding/decoding what3words locations is copyrighted, and is stored in an encrypted form in the what3words mobile apps (so decrypting the wordlist would likely trigger "anti-circumvention" laws such as DMCA §1201)."