Behind
the map.
A view of neighbourhoods,
through classified online signals.
We present IndoEuroMap data as our source of truth. We are biased and we may be wrong. IndoEuroMap data describes classified online signals. It does not establish anyone's ethnicity, culture, nationality, or residence.
See how it worksWhat does 20% mean?
20 in every 100 classified records fall in the selected category.
Not a share of residents.
Three steps. One area view.
- 01
Select places
Our algorithm selects public places in each city, such as shops and restaurants.
- 02
Classify signals
Our algorithm assigns broad categories from name patterns and other signals. Unresolved records stay out of the shares.
- 03
Build the map
Combine counts by area. Publish a breakdown where enough data is available.
The location is the selected place. Records can belong to residents or visitors, and the same name can appear more than once.
Higher share.
Warmer colour.
The main view shows non-European categories. Gray areas have no displayed data.
How much data
sits behind a place?
record density.
Coverage compares records per resident with Barcelona. It measures data volume, not accuracy.
The detail, when you need it.
Explore the rules, sources, and limits behind the figures.
Collection and selectionWhich places and records enter the map
- Select cities and areas. Saved city plans and boundary files define the places shown. Coverage is incomplete. Areas can be districts or whole municipalities.
- Select places. Our algorithm selects public businesses such as restaurants, grocery shops, and hairdressers. Places need coordinates, a usable map link, and enough public content. The sampler removes duplicate place IDs and places outside the chosen areas. It samples across place categories.
- Collect records. The collector requests the newest public content at each place. Saved runs can use different limits. A record belongs to the area of the selected place, not the author's home.
- Classify signals. Our algorithm analyses public online data and combines classified signals by area. It uses model labels, writing rules, and reference datasets. Unresolved records do not enter the published category shares.
- Count and publish. The same normalized name counts at most three times per area. An area needs at least 200 classified records. Small counts are pooled. The website receives aggregate profiles and map boundaries.
Percentages and missing valuesWhat is counted, grouped, or withheld
Non-European categories is the site's short label for selected algorithm categories. It combines Latin American, Middle Eastern, African, Indian, East Asian, and Southeast Asian labels. The Middle Eastern category includes North African labels. These are broad model categories, not counted populations.
Local means the host-country category. Other European combines the remaining Western and Eastern European categories. Anglo labels, including US labels, enter the Western category. These rules do not determine where a person was born.
| Number | Denominator |
|---|---|
| Area group share | Classified records retained in that area after the repeat limit and initial small-count pooling. |
| City share | The sum of published group counts in its areas. Low-data areas have no group counts to add. |
| Country or region share | Published group counts from covered cities only. It is not a national or regional population estimate. |
| Unknown or ambiguous percentage | All processed records in that area after the repeat limit, including unresolved records. |
City shares weight areas by their published counts. They are not an average of area percentages. Most shares use one decimal place. Headlines use whole percentages. Rounding and hidden groups can prevent visible rows from adding to 100%.
The main map colour runs from blue at low non-European category shares through teal, ochre, and red. It reaches dark red at 30% or more. The scale is not linear. A colour does not show certainty. Category views use colours for the selected category.
In the home page's enlarged bar view, coloured sections have extra visual space. Use the number or the breakdown to read the share. Light gray marks missing data. A low-data area is not a measured zero.
Unknown, ambiguous, pooled, and low data
- Unknown: no usable name score was saved. This can include missing names or a failed lookup.
- Ambiguous: a saved label is unresolved, or no region reaches the decision threshold. A small pooled remainder can also enter this category.
- Other: a retained pool of small or unassigned group counts. It remains in the share denominator. It is distinct from unknown input records.
- Suppressed: a small count is withheld or pooled. Current pipeline output usually pools small groups into Other. The display can also hide rows marked suppressed. A missing group does not prove that its count is zero.
- Low data: fewer than 200 classified records. The area has no published breakdown. Missing profiles have no published value.
One rule applies at every level: area, city, region, country, and the Europe overview. The non-European headline excludes Other. Other stays in the denominator. Small Other pools may be hidden from the visible rows.
The coverage calculationHow the Barcelona reference works
Data coverage compares the number of classified records per resident with the same ratio for Barcelona. Barcelona is the reference at 100%. A score of 50% means half its record density. Scores can exceed 100%.
Coverage = 100 × (classified records ÷ saved population) ÷ (Barcelona classified records ÷ Barcelona saved population).
Coverage counts include low-data areas in mapped cities. Country and region coverage use their full saved population totals. City coverage uses the saved city population. The site does not use a city population for an area within that city. Missing inputs hide the score.
Coverage is not accuracy, a confidence score, or the percentage of residents studied. Visitors and repeated names can raise it. Every score can change when the Barcelona reference changes.
What the data can tell youSampling, identity, and known limits
- Categories cannot establish a person's ethnicity, nationality, residence, or culture.
- Selected places and their records are not a random sample of residents. Business type, tourism, language, and public activity can affect the mix. The size of these effects is unknown.
- Shared names, aliases, writing systems, and model errors can move records between categories. The repeat limit does not identify unique people.
- Some detailed categories use a city-wide split or a fallback split. An area can show a subgroup without enough direct subgroup evidence from that area.
- Saved data was collected and classified at different times. The exact model version behind every saved label is not always provable.
- The current exported shares have no established classification error rate. Historical comparisons with official statistics measured different quantities and rules. They do not validate the current shares.
Export checks verify data shape, boundaries, counts, and file hashes. They do not verify identity labels or population accuracy. User perception votes are feedback, not ground truth.
Country differencesOne shared process, with a few local rules
The counting limits and coverage formula are shared. Three differences matter when you compare countries.
- Spain: an extra name reference.
Saved name-frequency tables help separate some Spanish and Latin American name patterns. Shared names can remain in the local category. This rule does not use population shares.
- Local categories can cross borders.
Belgium includes French and Dutch name categories. Switzerland includes German, French, and Italian categories. Estonia, Latvia, and Lithuania share a broad Baltic category. These rules cannot establish a person's nationality.
- Map areas come from different sources.
Most city boundaries use OpenStreetMap. The Netherlands uses CBS districts, with municipal sources for Amsterdam and The Hague. Saved city boundaries can differ from these defaults. Area sizes also vary.
Country map pages show their available sample. Different sample sizes and area boundaries limit comparisons. No current country classification error rate has been established.
Technical notes and sourcesClassification, thresholds, and data handling
Collection and classification
The default place budget is one place per 1,000 residents, limited to 150 to 3,000 per city. It is divided over the areas, with a quota of 20 to 150 per area. Saved quotas and extensions can differ. The sampler cycles through place categories. There is no residence check on record authors.
Classification runs as a cascade: confident cached labels first, then broader model and writing-system rules, then reference datasets. The first non-empty result wins. The pipeline does not call a live language model for each record. Its exact thresholds have no measured classification error rate.
Country rule detail
The name lookup has no local-country mapping for Bosnia & Herzegovina, Latvia, North Macedonia, Romania, and Slovakia. Earlier classification steps can still assign a local label. Malta has no local category in the saved label cache. A configured mapping does not guarantee evidence for every name.
Spain uses saved name-frequency tables as an extra reference. A name needs complete first-name and surname parses, and every plausible parse must contain distinct regional evidence. The frequency ratio must reach a fixed threshold against Spain, Portugal, Italy, France, and the United States. A competing regional score above a fixed threshold prevents the adjustment. Only an existing local score can move to Latin America. Unknown and ambiguous records remain unresolved. The reference does not cover every name, and these thresholds have no measured classification error rate.
Counts and category splits
The active rules select a category only when its decision score clears a fixed threshold. This is a decision score, not a probability that a label is correct. The repeat key ignores case and repeated spaces. It does not merge all spelling variants.
Initial counts from one to four are pooled. If the pool reaches five, it enters Other. Otherwise, it enters ambiguous under the active rule. Unknown and ambiguous records are then excluded from category-share denominators.
Asia and the combined Middle East and Africa category are split into display categories. A parent category needs 60 saved observations in the area to use its own split. Otherwise it uses the city pool when that reaches 60. The next fallback uses country evidence from reference datasets. With no evidence, the split is equal. Integer counts use largest remainders. Final display counts from one to four are pooled into Other.
Sources and privacy
Records come from selected public places. The private pipeline stores limited record fields. Public pages receive area aggregates. They do not receive individual records or individual labels.
Classification uses reference datasets and saved model label caches. Boundaries mainly come from OpenStreetMap, with Dutch sources described under country differences. Coverage uses saved city populations, World Bank country totals for 2024, and Eurostat region totals for 1 January 2024. These population figures do not set category shares.
No single collection date or open licence for all input records has been established. Source coverage and dates vary. See data sources and updates for source links.
Explore the places behind the numbers.
Open the map