How to Find the Countries With the Most Erupting Volcanoes

On this page

Problem statement

Which country has the most volcanoes depends on what you count: volcanoes on the Holocene list, volcanoes that have erupted in living memory, or eruptions themselves. The Smithsonian's volcano table answers all three, with one complication: volcanoes on a border are listed under a combined name such as "Chile-Argentina", and some islands under an administering country with a claim noted, such as "Japan - administered by Russia". Grouping by the raw column puts those in countries of their own. This page splits the shared volcanoes, counts by country three ways, and finds the volcanoes that erupt most often.

Quick answer

Split the country column on the hyphen, give each country a shared volcano, and count volcanoes with a confirmed eruption since 1960:

c = eru[eru.Activity_Type == "Confirmed Eruption"]
recent = c[c.StartDateYear >= 1960].Volcano_Number.unique()
ctry = vol[["Volcano_Number", "Country"]].assign(country=vol.Country.str.split(r"\s*-\s*(?:administered by|claimed by)?\s*")).explode("country")
ctry = ctry[ctry.country.str.len() > 0]
print(ctry[ctry.Volcano_Number.isin(recent)].country.value_counts().head(8).to_string())
print(f"volcanoes with a confirmed eruption since 1960: {len(recent)}")
country
Indonesia           54
Japan               40
United States       39
Russia              27
Chile               19
Papua New Guinea    13
Ecuador             12
Iceland             10
volcanoes with a confirmed eruption since 1960: 329

Indonesia has the most volcanoes that have erupted since 1960, 54, then Japan with 40 and the United States with 39, almost all of those in Alaska, Hawaii and the Cascades. In total 329 volcanoes have had a confirmed eruption since 1960. A shared volcano counts once for each country it belongs to.

Horizontal bars of volcanoes erupting since 1960 by country: Indonesia 54, Japan 40, United States 39, Russia 27, Chile 19, Papua New Guinea 13 and Ecuador 12. Horizontal bars of volcanoes erupting since 1960 by country: Indonesia 54, Japan 40, United States 39, Russia 27, Chile 19, Papua New Guinea 13 and Ecuador 12.
Countries with the most volcanoes erupting since 1960.

Three counts by country

1. Shared volcanoes

shared = vol[vol.Country.str.contains("-")]
print(shared.Country.value_counts().head(6).to_string())
print(f"volcanoes listed under more than one country: {len(shared)}")
Country
Chile-Argentina                   18
Japan - administered by Russia    11
Chile-Bolivia                      6
Armenia-Azerbaijan                 2
Ethiopia-Eritrea                   2
France - claimed by Vanuatu        2
volcanoes listed under more than one country: 50

50 volcanoes are listed under more than one country, 18 of them on the Chile-Argentina border high in the Andes. The Kuril Islands appear as "Japan - administered by Russia", and Matthew and Hunter islands as "France - claimed by Vanuatu". The split assigns these to both names, which suits a count of volcanoes a country has to watch. For a count of territory, use the administering country only. Two other values are not countries in the usual sense. "Undersea Features" holds 16 volcanoes on mid-ocean ridges in international waters, such as Axial Seamount. "United Kingdom" holds 14 in its overseas territories, from the South Sandwich Islands to Montserrat's Soufrière Hills. Both appear in a ranking unless you leave them out.

2. Volcanoes, recent volcanoes, eruptions

eru_c = c[c.StartDateYear >= 1960].merge(ctry[["Volcano_Number", "country"]], on="Volcano_Number")
t = pd.DataFrame({"holocene_volcanoes": ctry.country.value_counts(),
                  "erupted_since_1960": ctry[ctry.Volcano_Number.isin(recent)].country.value_counts(),
                  "eruptions_since_1960": eru_c.country.value_counts()}).fillna(0).astype(int)
print(t.sort_values("erupted_since_1960", ascending=False).head(8).to_string())
                  holocene_volcanoes  erupted_since_1960  eruptions_since_1960
country                                                                       
Indonesia                        101                  54                   406
Japan                            116                  40                   230
United States                    165                  39                   227
Russia                           106                  27                   224
Chile                             90                  19                   110
Papua New Guinea                  39                  13                   107
Ecuador                           36                  12                    66
Iceland                           35                  10                    28

The three counts rank countries differently. The United States has the most Holocene volcanoes, 165, but Indonesia has the most that have erupted recently and by far the most eruptions since 1960, 406, because volcanoes such as Karangetang erupt again and again. Iceland's 35 volcanoes produced 28 eruptions in that time.

Three panels of bars for eight countries: Holocene volcanoes, led by the United States with 165; volcanoes erupted since 1960, led by Indonesia with 54; and eruptions since 1960, led by Indonesia with 406. Three panels of bars for eight countries: Holocene volcanoes, led by the United States with 165; volcanoes erupted since 1960, led by Indonesia with 54; and eruptions since 1960, led by Indonesia with 406.
Three counts give three rankings.

3. The rankings disagree

print(t.rank(ascending=False, method="min").astype(int).loc[["United States", "Indonesia", "Japan", "Russia", "Chile", "Iceland"]].to_string())
               holocene_volcanoes  erupted_since_1960  eruptions_since_1960
country                                                                    
United States                   1                   3                     3
Indonesia                       4                   1                     1
Japan                           2                   2                     2
Russia                          3                   4                     4
Chile                           5                   5                     5
Iceland                         9                   8                    15

The United States is first by Holocene volcanoes and third by recent ones. Indonesia is fourth by volcanoes and first by everything else, and Iceland falls from eighth to fifteenth when eruptions are counted. Say which count a ranking uses.

The busiest volcanoes

The data used on this page

The Smithsonian Institution Global Volcanism Program's Volcanoes of the World database (version 5.3 is cited as doi:10.5479/si.GVP.VOTW5-2025.5.3): its Holocene volcano and eruption tables, read from the program's WFS service on 19 October 2026 and saved on this site, because the database is edited as eruptions are reported.

from pathlib import Path
import zipfile

import geopandas as gpd
import numpy as np
import pandas as pd
import requests

Path("data").mkdir(exist_ok=True)
# Smithsonian Global Volcanism Program, Volcanoes of the World: Holocene volcanoes, Holocene eruptions and Pleistocene
# volcanoes as GeoJSON from its WFS service, with Natural Earth's populated places and 1:110m countries.
# Saved 19 October 2026, because the database is edited as eruptions are reported.
# Live: https://webservices.volcano.si.edu/geoserver/GVP-VOTW/ows?service=WFS&version=2.0.0&request=GetFeature
#       &outputFormat=json&typeName=GVP-VOTW:Smithsonian_VOTW_Holocene_Volcanoes (and ..._Holocene_Eruptions)
ARCHIVE = "gvp-votw-2026-10-19.zip"
if not Path(f"data/{ARCHIVE}").exists():
    Path(f"data/{ARCHIVE}").write_bytes(requests.get(f"https://data.spatialworkflow.io/{ARCHIVE}", timeout=600).content)
Z = zipfile.ZipFile(f"data/{ARCHIVE}")
vol = gpd.read_file(Z.open("Smithsonian_VOTW_Holocene_Volcanoes.json"))
eru = gpd.read_file(Z.open("Smithsonian_VOTW_Holocene_Eruptions.json"))
print(f"Volcanoes of the World: {len(vol):,} Holocene volcanoes, {len(eru):,} eruptions")
Volcanoes of the World: 1,214 Holocene volcanoes, 11,089 eruptions

Example 1: most eruptions since 1960

busy = c[c.StartDateYear >= 1960].groupby(["Volcano_Name"]).size().nlargest(8)
print(busy.to_string())
Volcano_Name
Fournaise, Piton de la    55
Bezymianny                50
Klyuchevskoy              44
Ulawun                    38
Poas                      35
Ruapehu                   35
Karangetang               32
San Cristobal             31

The busiest volcano since 1960 is Piton de la Fournaise on RΓ©union, with 55 eruptions, then Bezymianny and Klyuchevskoy in Kamchatka with 50 and 44. Volcanoes with frequent short eruptions dominate this list. Stromboli, erupting continuously since 1934, counts as a single eruption.

Horizontal bars of eruptions since 1960 per volcano: Piton de la Fournaise 55, Bezymianny 50, Klyuchevskoy 44, Ulawun 38, PoΓ‘s and Ruapehu 35. Horizontal bars of eruptions since 1960 per volcano: Piton de la Fournaise 55, Bezymianny 50, Klyuchevskoy 44, Ulawun 38, PoΓ‘s and Ruapehu 35.
The volcanoes that erupt most often.

Example 2: erupting in 2025 and 2026

now = eru[(eru.Activity_Type == "Confirmed Eruption") & ((eru.StartDateYear >= 2025) | (eru.EndDateYear >= 2025))]
print(f"volcanoes with eruptive activity in 2025 or 2026: {now.Volcano_Number.nunique()}")
print(now.merge(ctry, on="Volcano_Number").country.value_counts().head(5).to_string())
volcanoes with eruptive activity in 2025 or 2026: 66
country
Indonesia           12
Japan                7
Russia               5
United States        5
Papua New Guinea     4

66 volcanoes had eruptive activity in 2025 or 2026, counting both eruptions that started then and older ones still going: 12 in Indonesia, 7 in Japan and 5 each in Russia and the United States.