r/OsmAnd • u/vshcherb • 1h ago
Search was your #1 complaint about OsmAnd. Here is why we rebuilt it from scratch in 5.5.
Hi, Victor here, founder of OsmAnd.
Search has been the thing you complained about most. It came up in every language of our 2026 survey, and it comes up here all the time. Some of you told us you search in another app and copy the coordinates into OsmAnd. So this year we did not patch search once more. We wrote a new search engine, and it ships to everyone with OsmAnd 5.5. You can try it today in the nightly builds.
The whole story is in a 23-minute video. Here is the short version.
What changes for you
- Addresses typed your way.
Unter den Linden 10or10 Unter den Linden.23 South 2nd Street, Saint ClairorSaint Clair, South 2nd Street 23. A postcode or a state instead of a town. - Spelling variants.
S Mountain Blvdfinds South Mountain Boulevard,Hemauerstraßefinds Hemauer Straße,Mcdonaldsfinds McDonald's. - Typos corrected.
leopoldstrase 10offers Leopoldstraße 10,mnucoffers München. - Suggestions as you type. Start a word and search offers the most common words that continue it.
- Public services by the name people use.
DMVfinds motor vehicle offices andNHSfinds NHS clinics, even when the map lists them only by operator. - Categories in more words and languages. With the app in English, both
schoolandSchulefind schools in Germany. - Places next to places.
Fuel McDonald'sfinds gas stations with a McDonald's nearby.Shellon a named street. Two streets that cross. - Faster. The search itself is about 5x faster.

Why is this so hard offline?
Google can afford to be clever: every query goes to a server that has learned from billions of searches. OsmAnd has no search server. Everything happens on your phone, inside the maps you downloaded, so the phone itself has to work out what you meant.
And addresses have no grammar. Every country writes them its own way, and people mix the parts in any order. The same line can mean different places:
5 Ave New Yorkis Fifth Avenue in New York City, or house 5 on New York Avenue.New Philadelphiais a town in Ohio, or New Street in Philadelphia.Pennsylvania Avenue, Utahis a street named after one state, in another.Calle 20 301, Mérida: the first number is the street, the second is the house.Rue du 8 Mai 1945: two numbers, and neither is a house.14-54 31st Road, Queens: one house number with a dash.

First, measure
For years every release fixed some search bugs, and every year 50 to 90 new ones came in. We could not reproduce most of them. So in 2025 we stopped guessing and built a test bench: take thousands of real addresses from the map, type each one the way a person would, and count how many are found.
The first honest number was about 80%. From then on every user report with a real address became another test.

The old way: a librarian
The old search worked like a librarian. Find the town, walk along its shelf of streets, open the street, find the house. That works in a small town. It works much worse when the town is London, one shelf with 56,266 streets, or when there is no town in the query at all.
Every address that broke got its own patch: townships, word order, abbreviations. Each patch fixed one address and broke another. One user with eighty maps installed waited more than two minutes for the right result.
https://reddit.com/link/1xhpu6b/video/i1vkxp3uy7yh1/player
The new idea: put the words on the map
We are searching a map, after all. The new engine lights up every word of the query on the map and looks for places where the lights meet. A street and its town meet because their areas overlap. A McDonald's and a gas station meet because they stand next to each other. Since June 2026 every street and town in OsmAnd maps carries its own area for this.
The zipper
Comparing every object of one word with every object of another would take more than half a minute per search. So the world is cut into tiles, like on every web map, and each word becomes a sorted list of tile numbers. Two words are joined by walking both lists at once, like a zipper. Pairs that can't meet are never looked at. Half a minute became about 50 milliseconds.
https://reddit.com/link/1xhpu6b/video/hradi0ovy7yh1/player
Tetris with words
Long queries, like a crossing of two streets, add one more twist. Each object covers only some of the words, and the answer must cover every word exactly once and also meet on the map. The engine plays it like Tetris: pieces dock into a row, every docking is checked on the map, and a row that drops to zero disappears.
https://reddit.com/link/1xhpu6b/video/ohwle37xy7yh1/player
Where we are now
The new engine had its first test run in July 2026 and beat the old search two days later. Today 99.5% of 137,000 test searches in 28 test sets are found. In Pennsylvania, where we started, the addresses we could not find went from 206 to 40 to 7. The last seven are broken in OpenStreetMap itself.
Not everything is solved. In Havana, Calle L between 23 and 25 has no house number, only the two streets around it, and we still can't find it. Ranking, typos and common words each deserve a story of their own.

Help us make it better
- Tell us what you typed. If search can't find something, reply here with the exact text and the place you meant (a link to osm.org is perfect). Every miss becomes a test.
- Help the map. A street without a name can't be found, and streets in a town without a boundary may be missed. Names and boundaries in OpenStreetMap help everyone.
The video has subtitles in 7 languages and dubbed audio in German, French, Italian and Spanish. The blog post has interactive versions of these animations that you can step through.
