How Many Active Volcanoes Are There? What the Smithsonian Database Counts
On this page
Problem statement
Ask how many active volcanoes the world has and the answer may be about 330, about 520, about 1,200 or more than 2,600, all from the same source. The Smithsonian's Volcanoes of the World database doesn't use the word active. It lists volcanoes with evidence of an eruption in the Holocene, the last 11,700 years, and that evidence ranges from eruptions people watched to deposits dated in a laboratory to signs that are merely credible. Its eruptions are confirmed or uncertain, and dated by anything from a written report to radiocarbon. A count of active volcanoes is a choice among these, and this page makes each choice explicit from the database's own fields.
Quick answer
Pick a definition and say it: confirmed eruptions since a year, or a place on the Holocene list:
c = eru[eru.Activity_Type == "Confirmed Eruption"]
for label, since in [("erupted since 1960", 1960), ("since 1800", 1800), ("since 10,000 BCE", -10000)]:
print(f"{label:>18}: {c[c.StartDateYear >= since].Volcano_Number.nunique():,} volcanoes")
print(f"on the Holocene list at all: {len(vol):,}")
erupted since 1960: 329 volcanoes
since 1800: 521 volcanoes
since 10,000 BCE: 850 volcanoes
on the Holocene list at all: 1,214
"Active" has no single definition. 329 volcanoes have had a confirmed eruption since 1960, 521 since 1800 and 850 since 10,000 BCE, and 1,214 are on the Holocene list. A headline count of active volcanoes needs one of these definitions stated beside it.
What each volcano is listed on
1. The evidence category
ev = vol.groupby("Evidence_Category").agg(volcanoes=("Volcano_Number", "size"), with_last_eruption=("Last_Eruption_Year", lambda s: s.notna().sum()))
print(ev.sort_values("volcanoes", ascending=False).to_string())
volcanoes with_last_eruption
Evidence_Category
Eruption Observed 551 548
Eruption Dated 293 292
Evidence Credible 242 6
Evidence Uncertain 88 2
Unrest / Holocene 40 0
551 volcanoes are listed because people saw them erupt and 293 because an eruption was dated from its deposits. Almost all of these have a last eruption year. The other 370 rest on weaker evidence: 242 on credible signs of Holocene activity, such as young-looking lava flows, 88 on uncertain signs, and 40 on unrest, like ground swelling or gas emissions, or Holocene features without a dated eruption. Only eight of them have a last eruption year.
2. Confirmed and uncertain eruptions
print(eru.Activity_Type.value_counts().to_string())
print(f"volcanoes with at least one confirmed eruption: {eru[eru.Activity_Type == 'Confirmed Eruption'].Volcano_Number.nunique()}")
Activity_Type
Confirmed Eruption 9916
Uncertain Eruption 1173
volcanoes with at least one confirmed eruption: 853
An uncertain eruption is one the program cannot confirm happened, often a historical report that might describe something else, such as a forest fire, a cloud or activity at a neighbouring vent. There are 1,173 of them. A volcano can be on the list with only uncertain eruptions: 853 volcanoes have at least one confirmed eruption.
3. How each eruption was dated
method = eru.StartEvidenceMethod.fillna("none recorded").str.split(":").str[0]
print(method.value_counts().to_string())
print(eru.StartEvidenceMethod.value_counts().head(6).to_string())
StartEvidenceMethod
Observations 6603
Isotopic 1968
Correlation 1139
none recorded 1101
Sidereal 243
Radiogenic 14
Chem/Bio 13
Uncertain 8
StartEvidenceMethod
Observations: Reported 6468
Correlation: Tephrochronology 1043
Isotopic: 14C (uncalibrated) 984
Isotopic: 14C (calibrated) 869
Sidereal: Varve Count 187
Observations: Hydrophonic 72
6,603 eruptions are dated by observation, almost all from written reports, and 72 from underwater sound recorded by hydrophones. The rest are dated from what they left: 1,968 by isotopes (mostly radiocarbon, calibrated or not), 1,139 by correlation, mostly matching layers of ash (tephrochronology), and 243 by counting annual layers in lake sediments (varves), ice cores or tree rings. 1,101 eruptions have no dating method recorded.
The second list, and volcanoes on thin evidence
The data used on this page
Volcanoes of the World from the Smithsonian's Global Volcanism Program, cited for version 5.3 as doi:10.5479/si.GVP.VOTW5-2025.5.3. The counts here come from the copy of its web service saved on 19 October 2026, and they will drift as the program adds eruptions.
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: the Pleistocene list
pleist = gpd.read_file(Z.open("Smithsonian_VOTW_Pleistocene_Volcanoes.json"))
print(f"Holocene volcanoes: {len(vol):,}; Pleistocene volcanoes: {len(pleist):,}; numbers in both: {vol.Volcano_Number.isin(pleist.Volcano_Number).sum()}")
print(f"Holocene volcanoes below sea level: {(vol.Elevation < 0).sum()}")
Holocene volcanoes: 1,214; Pleistocene volcanoes: 1,452; numbers in both: 0
Holocene volcanoes below sea level: 112
The Holocene and Pleistocene lists don't overlap: a volcano is on one or the other. The Pleistocene list holds 1,452 volcanoes with no confirmed Holocene activity, so "volcanoes in the database" can mean 1,214 or 2,666. 112 Holocene volcanoes have their summit below sea level.
Example 2: volcanoes with no confirmed eruption
conf = set(c.Volcano_Number)
thin = vol[~vol.Volcano_Number.isin(conf)]
print(f"Holocene volcanoes without a confirmed eruption: {len(thin)}; with only uncertain eruptions: {thin.Volcano_Number.isin(eru.Volcano_Number).sum()}")
print(thin.Evidence_Category.value_counts().to_string())
Holocene volcanoes without a confirmed eruption: 366; with only uncertain eruptions: 43
Evidence_Category
Evidence Credible 236
Evidence Uncertain 86
Unrest / Holocene 40
Eruption Observed 3
Eruption Dated 1
366 volcanoes on the Holocene list have no confirmed eruption at all, 43 of them only uncertain ones. Nearly all of them are listed on credible or uncertain evidence or on unrest. They are why the Holocene list is a list of volcanoes that may erupt, not of volcanoes known to have erupted, and why a count from it should say so.
Getting the volcano data without code
- Look first: every volcano has its own page on volcano.si.edu, with its eruption history, photographs and a geological summary. The Weekly Volcanic Activity Report, which the program writes with the US Geological Survey, lists what erupted in the past week.
- Spreadsheets: the volcano and eruption searches on the website can be exported to a spreadsheet, filtered by country, region or date.
- GIS: the program publishes its lists as a WFS service. In QGIS, paste that address under Layer β Add Layer β Add WFS Layer and choose the Holocene volcanoes, Holocene eruptions or Pleistocene volcanoes.
- Versions: the database changes as eruptions are reported, and numbered releases get a DOI, so cite the version and the date you looked.
- Credit: Global Volcanism Program, Smithsonian Institution, Volcanoes of the World, with the version, its DOI and your access date, as the program's citation guidance asks. The copy behind these pages is on data.spatialworkflow.io.
Internal links
- Reading the database β the two tables and their key
- Countries with erupting volcanoes β the same definitions by country
- Negative years and radiocarbon β the dating methods in practice
- An eruption record filling in β why older centuries look quiet