Urban population growth (annual %)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 0.742 +47.2% 153
Afghanistan Afghanistan 4.06 +22.4% 23
Angola Angola 3.9 -1.62% 26
Albania Albania 0.0472 -54.6% 192
Andorra Andorra 1.3 -6.77% 120
United Arab Emirates United Arab Emirates 3.94 -7.15% 25
Argentina Argentina 0.471 +14.2% 168
Armenia Armenia 2.61 +2,626% 62
American Samoa American Samoa -1.55 -7.13% 211
Antigua & Barbuda Antigua & Barbuda 0.51 +12.1% 167
Australia Australia 2.2 -14.4% 75
Austria Austria 0.995 -31.4% 140
Azerbaijan Azerbaijan 1.21 +45.5% 127
Burundi Burundi 5.1 -2.78% 6
Belgium Belgium 0.791 -16.7% 149
Benin Benin 3.59 -1.85% 30
Burkina Faso Burkina Faso 4.21 -1.26% 19
Bangladesh Bangladesh 3.07 -1.75% 44
Bulgaria Bulgaria 0.402 +160% 178
Bahrain Bahrain 0.878 -75% 146
Bahamas Bahamas 0.626 -1.61% 160
Bosnia & Herzegovina Bosnia & Herzegovina 0.214 -10% 182
Belarus Belarus -0.000108 -99.7% 195
Belize Belize 1.93 -23.1% 85
Bermuda Bermuda -0.0959 +21.7% 198
Bolivia Bolivia 1.88 +0.022% 93
Brazil Brazil 0.665 +0.477% 155
Barbados Barbados 0.437 +33.2% 172
Brunei Brunei 1.18 +2.39% 131
Bhutan Bhutan 2.11 -4.55% 77
Botswana Botswana 2.49 -1.58% 64
Central African Republic Central African Republic 4.58 +108% 13
Canada Canada 3.11 +2.21% 42
Switzerland Switzerland 1.8 +27.9% 98
Chile Chile 0.656 +0.338% 157
China China 1.37 -6.7% 114
Côte d’Ivoire Côte d’Ivoire 3.36 -1.84% 35
Cameroon Cameroon 3.58 -1.32% 31
Congo - Kinshasa Congo - Kinshasa 4.52 -0.552% 15
Congo - Brazzaville Congo - Brazzaville 3.05 -0.912% 46
Colombia Colombia 1.44 -3.69% 110
Comoros Comoros 2.84 +0.696% 54
Cape Verde Cape Verde 1.12 -2.2% 135
Costa Rica Costa Rica 1.13 -3.16% 133
Cuba Cuba -0.192 -5.66% 202
Curaçao Curaçao 0.075 -98% 190
Cayman Islands Cayman Islands 1.92 -3.84% 87
Cyprus Cyprus 1.13 -0.36% 134
Czechia Czechia 0.416 -79.4% 177
Germany Germany -0.3 -209% 203
Djibouti Djibouti 1.59 -0.954% 104
Dominica Dominica -0.0355 -26.1% 196
Denmark Denmark 0.652 -26.4% 158
Dominican Republic Dominican Republic 1.51 -5.54% 105
Algeria Algeria 2.03 -5.84% 80
Ecuador Ecuador 1.23 +0.822% 125
Egypt Egypt 2.1 +5.09% 78
Eritrea Eritrea 3.34 +2.22% 36
Spain Spain 1.25 -15.1% 122
Estonia Estonia 0.423 -77.3% 175
Ethiopia Ethiopia 4.74 -0.675% 10
Finland Finland 1.07 +75.7% 137
Fiji Fiji 1.31 -2% 119
France France 0.661 +0.991% 156
Faroe Islands Faroe Islands 1.02 -28.8% 139
Micronesia (Federated States of) Micronesia (Federated States of) 1.22 +5.69% 126
Gabon Gabon 2.46 -2.42% 66
United Kingdom United Kingdom 1.35 -15.2% 117
Georgia Georgia -0.413 -152% 205
Ghana Ghana 2.91 -1.9% 52
Gibraltar Gibraltar 2.21 -2.66% 74
Guinea Guinea 3.52 -1.1% 32
Gambia Gambia 3.22 -1.58% 38
Guinea-Bissau Guinea-Bissau 3.14 -1.4% 41
Equatorial Guinea Equatorial Guinea 2.98 -0.843% 48
Greece Greece 0.223 +142% 181
Grenada Grenada 0.668 +1.07% 154
Greenland Greenland 0.186 -69.1% 183
Guatemala Guatemala 2.37 +0.731% 69
Guam Guam 0.838 -4.57% 147
Guyana Guyana 1.14 +4.39% 132
Hong Kong SAR China Hong Kong SAR China -0.159 -106% 199
Honduras Honduras 2.69 -1.84% 60
Croatia Croatia 0.801 +12.1% 148
Haiti Haiti 2.51 -2.12% 63
Hungary Hungary 0.119 -59.5% 187
Indonesia Indonesia 1.89 -2.62% 91
Isle of Man Isle of Man 0.417 -4% 176
India India 2.26 +0.844% 72
Ireland Ireland 1.81 -19% 96
Iran Iran 1.62 -9.29% 103
Iraq Iraq 2.48 -4.45% 65
Iceland Iceland 2.88 -3.42% 53
Israel Israel 1.36 -56% 116
Italy Italy 0.43 +5.87% 174
Jamaica Jamaica 0.646 -3.59% 159
Jordan Jordan 1.19 -34.7% 130
Japan Japan -0.337 -14% 204
Kazakhstan Kazakhstan 1.64 -8.38% 102
Kenya Kenya 3.73 -0.523% 29
Kyrgyzstan Kyrgyzstan 2.7 +1.17% 58
Cambodia Cambodia 3.03 -1.77% 47
Kiribati Kiribati 2.67 -4.45% 61
St. Kitts & Nevis St. Kitts & Nevis 0.583 +32.1% 163
South Korea South Korea 0.126 +11.3% 185
Kuwait Kuwait 2.45 -56.1% 67
Laos Laos 3.07 -1.7% 45
Lebanon Lebanon 0.752 +8.35% 152
Liberia Liberia 3.1 -1.29% 43
Libya Libya 1.39 -7.03% 112
St. Lucia St. Lucia 0.95 +3.16% 141
Liechtenstein Liechtenstein 1.48 +2.06% 108
Sri Lanka Sri Lanka 0.511 +61.5% 166
Lesotho Lesotho 2.69 +0.809% 59
Lithuania Lithuania 0.924 -46.8% 144
Luxembourg Luxembourg 1.88 -15.7% 92
Latvia Latvia -0.593 -776% 207
Macao SAR China Macao SAR China 1.2 +443% 129
Morocco Morocco 1.77 -3.29% 101
Monaco Monaco -0.838 -1,405% 209
Moldova Moldova -2.31 -3.08% 213
Madagascar Madagascar 4.09 -1.26% 22
Maldives Maldives 1.38 -1.8% 113
Mexico Mexico 1.2 -1.26% 128
Marshall Islands Marshall Islands -2.92 +7.12% 214
North Macedonia North Macedonia -1.32 -433% 210
Mali Mali 4.54 -1.61% 14
Malta Malta 3.9 -3.96% 27
Myanmar (Burma) Myanmar (Burma) 1.78 +0.939% 99
Montenegro Montenegro 0.541 +11.5% 165
Mongolia Mongolia 1.5 -6.49% 107
Northern Mariana Islands Northern Mariana Islands -1.83 -5.94% 212
Mozambique Mozambique 4.39 -0.84% 16
Mauritania Mauritania 4.19 -3% 20
Mauritius Mauritius 0.0665 +201% 191
Malawi Malawi 4.3 +1.77% 18
Malaysia Malaysia 1.83 -2.08% 95
Namibia Namibia 3.88 -8.03% 28
New Caledonia New Caledonia 1.48 -0.942% 109
Niger Niger 4.32 +1.93% 17
Nigeria Nigeria 3.45 -1.78% 34
Nicaragua Nicaragua 1.86 -0.3% 94
Netherlands Netherlands 0.947 -27.5% 142
Norway Norway 1.33 -13% 118
Nepal Nepal 1.95 -3.48% 83
Nauru Nauru 0.604 -3.3% 162
New Zealand New Zealand 1.89 -26.9% 90
Oman Oman 5.17 -28.8% 5
Pakistan Pakistan 2.36 -0.173% 70
Panama Panama 1.81 -2.09% 97
Peru Peru 1.37 -0.212% 115
Philippines Philippines 1.5 +3.19% 106
Palau Palau 0.342 -5.99% 179
Papua New Guinea Papua New Guinea 2.92 +2.68% 51
Poland Poland -0.176 -22% 200
Puerto Rico Puerto Rico 0.0165 -103% 194
North Korea North Korea 0.778 -1.98% 151
Portugal Portugal 1.92 -10.6% 88
Paraguay Paraguay 1.77 +0.888% 100
Palestinian Territories Palestinian Territories 2.74 -1.06% 56
French Polynesia French Polynesia 0.456 +0.677% 169
Qatar Qatar 7.36 -57,875% 1
Romania Romania 0.431 +9.82% 173
Russia Russia 0.0842 -762% 188
Rwanda Rwanda 3.19 +1.07% 40
Saudi Arabia Saudi Arabia 4.89 -0.157% 8
Sudan Sudan 1.93 -19.4% 86
Senegal Senegal 3.33 -1.79% 37
Singapore Singapore 1.99 -58.9% 82
Solomon Islands Solomon Islands 4.09 -1.51% 21
Sierra Leone Sierra Leone 3.2 -1.89% 39
El Salvador El Salvador 1.25 -3.92% 123
San Marino San Marino 0.443 +6.06% 171
Somalia Somalia 4.72 +9.09% 11
Serbia Serbia -0.094 -53% 197
South Sudan South Sudan 5.64 -2.31% 3
São Tomé & Príncipe São Tomé & Príncipe 2.8 -1.66% 55
Suriname Suriname 1.06 -0.86% 138
Slovakia Slovakia 0.182 +44% 184
Slovenia Slovenia 0.898 -10.1% 145
Sweden Sweden 0.581 -22.5% 164
Eswatini Eswatini 1.89 +4.33% 89
Sint Maarten Sint Maarten 1.4 -2.86% 111
Seychelles Seychelles 2.03 +219% 81
Syria Syria 5.57 -7.81% 4
Turks & Caicos Islands Turks & Caicos Islands 0.924 -5.17% 143
Chad Chad 6.27 +7.69% 2
Togo Togo 3.52 -2.69% 33
Thailand Thailand 1.27 -2.53% 121
Tajikistan Tajikistan 2.94 -0.979% 49
Turkmenistan Turkmenistan 2.71 -2.72% 57
Timor-Leste Timor-Leste 2.36 +3.69% 71
Tonga Tonga -0.19 -30.1% 201
Trinidad & Tobago Trinidad & Tobago 0.29 -6.51% 180
Tunisia Tunisia 1.1 -3% 136
Turkey Turkey 0.779 -20.3% 150
Tuvalu Tuvalu -0.71 +2.94% 208
Tanzania Tanzania 4.8 -1.36% 9
Uganda Uganda 5.04 -1.52% 7
Ukraine Ukraine 0.606 -107% 161
Uruguay Uruguay 0.0405 +1,187% 193
United States United States 1.24 +13.6% 124
Uzbekistan Uzbekistan 2.16 +0.216% 76
St. Vincent & Grenadines St. Vincent & Grenadines 0.0818 +12.4% 189
Venezuela Venezuela 0.445 +17.5% 170
British Virgin Islands British Virgin Islands 2.09 -18.6% 79
U.S. Virgin Islands U.S. Virgin Islands -0.425 +12.5% 206
Vietnam Vietnam 2.43 -2.82% 68
Vanuatu Vanuatu 2.93 -0.398% 50
Samoa Samoa 0.121 +254% 186
Yemen Yemen 4.59 -1% 12
South Africa South Africa 1.94 -4.46% 84
Zambia Zambia 4.05 +0.323% 24
Zimbabwe Zimbabwe 2.25 +9.59% 73

The indicator 'Urban population growth (annual %)' is a vital measure that captures the dynamics of urbanization across the globe. This statistic represents the percentage increase in the urban population of a given area over a year. Understanding urban population growth is crucial for policymakers, urban planners, and researchers, as it reflects migration patterns, economic opportunities, and the health of urban infrastructure.

As of 2023, the median urban population growth rate worldwide is 1.6%, marking a slight increase from the previous year. The significance of this growth lies in its broad implications for social, economic, and environmental factors. Rapid urbanization can contribute to economic growth, but it also presents challenges such as increased demand for housing, transportation, and public services. In urban areas where growth is unsustainable, issues like overcrowding, pollution, and inadequate access to essential services can arise.

Examining the top five areas experiencing the highest urban population growth, we find Oman at 7.27%, Syria at 6.04%, Chad at 5.83%, South Sudan at 5.77%, and Kuwait at 5.59%. These rates are indicative of various socio-economic factors at play. For instance, Oman’s growth can be attributed to a combination of economic development and a relatively stable environment conducive to internal migration. In contrast, the high growth rates in conflict-affected areas like Syria and South Sudan highlight the effects of displacement, where people migrate to urban centers in search of safety and resources.

On the other hand, the bottom five areas reflect negative urban population growth: Ukraine at -8.17%, the Marshall Islands at -2.73%, Bulgaria at -2.56%, Moldova at -2.38%, and the Northern Mariana Islands at -1.95%. These declining rates reveal the complexities of urbanization. In the case of Ukraine, the negative growth can be largely attributed to the ongoing conflict, which leads to population displacement and emigration. For Bulgaria and other Eastern European nations, aging populations and low birth rates contribute to a shrinking urban populace as younger generations move abroad for better opportunities.

Yearly data analysis shows fluctuations in the urban population growth through the decades. Back in 1961, the global average stood at 2.83%, witnessing a gradual decline to around 1.67% in 2023. This downward trend over the years reflects broader global changes, including economic cycles, migration trends, and urban planning strategies that have either encouraged or stymied growth. The post-World War II baby boom initially fueled urban populations, but later economic downturns, such as the oil crises in the 1970s and shifting employment patterns in the 1980s and beyond, likely influenced urban growth dynamics.

Urban population growth is intricately linked to several other indicators, including GDP growth, employment rates, and infrastructure development. A positive correlation often exists between robust economic growth and increasing urban populations, as individuals move to cities seeking better job prospects. However, this relationship can be tempered by factors such as urban sprawl or insufficient infrastructure, which can lead to increased poverty levels within urban settings. Population density in cities can both stimulate economic activity and strain resources, showcasing the dual-edged nature of urban growth.

Several factors affect urban population growth, including economic opportunities, social stability, and environmental conditions. Economic development can drive urbanization, as cities often provide better access to jobs, education, and healthcare. On the contrary, political instability and conflict can spur unwanted urban growth as people flee rural areas or war-torn regions. Environmental factors, such as natural disasters or climate change, also play critical roles, pushing populations to urban centers that are perceived to offer more stability and resources.

To manage urban population growth effectively, cities and governments can adopt various strategies and solutions. Sustainable urban planning that emphasizes public transportation, green spaces, and affordable housing is vital to accommodate increasing populations without sacrificing quality of life. Policies directing investments towards infrastructure are essential to avert challenges caused by unexpected population surges. Moreover, community engagement can be instrumental in ensuring that urban development meets the needs of both current and future residents.

However, relying solely on these strategies may reveal some flaws. Rapid urban growth can outpace planning efforts, leading to informal settlements and increased inequality. Additionally, public services may struggle to keep up with population demands, potentially widening socio-economic gaps within urban areas. Without careful, proactive management, these challenges can exacerbate the difficulties faced by cities during periods of significant growth.

In conclusion, the urban population growth indicator serves as a key analytical tool for understanding shifting demographics and their ramifications. The increase or decrease in urban populations not only illustrates immediate human migration patterns but also signals potential long-term trends that could alter economic and social landscapes. By comprehensively analyzing these trends, stakeholders can better address the challenges and opportunities that arise in our increasingly urban world.

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'SP.URB.GROW'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'SP.URB.GROW'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))