Specifiche di ricerca
Exactly what each search box does, and why a player you know exists can still be missing from a name search.
Tag search always hits the live API
Searching by tag does not touch the local index at all. The box normalises what you typed and sends you straight to the profile route, which asks the official Brawl Stars API for that account. Any tag that exists in the game resolves, whether or not this site has ever seen it before — and the profile is written into the local index as a side effect, which is how name search gets a corpus.
Normalisation, in order:
- Surrounding whitespace is trimmed and the whole tag is upper-cased, so tag search is case-insensitive.
- A leading
#is stripped. Obecomes the digit0andIbecomes the digit1— those letters do not exist in Supercell tags, so typing them is treated as the obvious mistake rather than as an error.- Anything that is not a digit or a letter is removed.
The result must then be 3 to 14 characters long and use only the tag alphabet 0289PYLQGRJCUV. Anything else is rejected in the form before a request is made. Club tag search works identically.
A tag the API answers with 404 shows a not-found page, and the background refresh queue drops that tag from the local index the next time it comes up — so a deleted account stops appearing in name search and stops consuming refresh budget.
Name search only covers the local index
The official API has no name lookup of any kind. Name search therefore runs entirely against this instance’s own SQLite index of players and clubs it has already seen. If nobody has ever opened a given player here and that player has never appeared on one of the leaderboards this instance bootstrapped from, a name search cannot find them.
I giocatori mai visualizzati qui non sono indicizzati per la ricerca per nome. Cercali una volta per tag e diventeranno ricercabili.
How a player search query is matched:
- The query is trimmed and lower-cased, and compared against a lower-cased copy of the name. Matching is therefore case-insensitive; it is not accent- or width-insensitive, so
éandeare different characters. - An empty query returns nothing — it is not treated as “list everyone”.
- By default the match is a substring match anywhere in the name, so
fangfindsToxicFangandFangirl. %,_and\in your query are escaped before the query runs, so they match themselves instead of acting as wildcards. There is no wildcard syntax exposed to the user.- Results are ordered by current trophies, highest first, then cut to the result limit.
Club name search uses the same rules — trimmed, lower-cased, substring match, escaped wildcards, ordered by club trophies descending. Clubs have no exact-match or previous-names option. If what you typed is itself a valid tag, both search pages also offer a direct link to that tag.
The two options that require login
Both checkboxes under the player name box are disabled when you are signed out, and the search page checks the session again on the server before applying them — so they cannot be switched on by editing the URL.
Switches the substring match to a whole-name equality match. Still case-insensitive: toxicfang matches a player called ToxicFang, but fang no longer matches anything unless someone is named exactly that. Useful when a common word buries the account you want.
Also searches the name-history table — every name this instance has observed an account using — and adds any account whose old name matches and that is not already in the results. The list of current-name matches is built first, the history matches are appended after it, and the whole list is then cut to the limit, so a query with many current-name matches may leave no room for history matches. Where a hit came from an old name, the search results show that old name next to the account.
Name history only goes back as far as this instance does. It is built by noticing that a tag we already had is now reporting a different name, so a rename that happened before the account was first indexed here is invisible.
How the index gets populated
There are exactly three ways a player or club enters the local index.
- Page views. Opening a player or club page fetches the profile and indexes it: the account row itself, a name-history row, a club-history row, an hourly progression snapshot, the equipped skins, and any ranked tier label the profile carries. This is the main way the corpus grows, and it means a tag becomes name-searchable the first time anyone looks it up here.
- The leaderboard bootstrap. On the first start with an API token configured, the app walks the official player and club leaderboards for global, TW, JP, KR, US, BR, DE and MX and writes what those rows carry — tag, name, trophies, icon, club name — so that a brand new instance is not returning nothing for every query. These rows are deliberately stored as summaries with an empty profile payload and a back-dated update time: they are searchable by name immediately, and the background refresh queue fills in the full profile later. The bootstrap runs once; the flag that records it lives in the local database.
- The refresh queue. Once a tag is indexed it is re-polled on a schedule, which is how a renamed account’s new name and its name history stay current without anyone visiting the page.
With no API token configured the site runs in demo mode and seeds the index with deterministic synthetic players and clubs so the search boxes do something. Those rows are recorded as synthetic and are deleted in full the moment a real token appears, so they can never leak into live results.
Limits
| Setting | Value |
|---|---|
| Player name search, default result limit | 50 |
| Player name search, hard cap | 200 |
| Requested by the player search page | 100 |
| Club name search, default result limit | 50 |
| Club name search, hard cap | 200 |
| Requested by the club search page | 100 |
| Tag length accepted | 3–14 |
| Player profile reused from cache for | 3 min |
| Club profile reused from cache for | 10 min |
There is no pagination on name search: results beyond the limit are simply not returned. Narrow the query, or use the exact-match option, to reach an account that a broad query buries.
Tecnologia covers the refresh queue and the rest of the pipeline in more detail.