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.

Horizontal bars of five counts of active volcanoes: 329 erupted since 1960, 521 since 1800, 850 since 10,000 BCE, 1,214 on the Holocene list and 2,666 on both lists. Horizontal bars of five counts of active volcanoes: 329 erupted since 1960, 521 since 1800, 850 since 10,000 BCE, 1,214 on the Holocene list and 2,666 on both lists.
Five answers to how many volcanoes are active.

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.

Horizontal bars of volcanoes by evidence category: 551 eruption observed and 293 eruption dated, nearly all with a last eruption year, then 242 evidence credible, 88 uncertain and 40 unrest, almost none with one. Horizontal bars of volcanoes by evidence category: 551 eruption observed and 293 eruption dated, nearly all with a last eruption year, then 242 evidence credible, 88 uncertain and 40 unrest, almost none with one.
The evidence each volcano is listed on.

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.

Horizontal bars of eruptions by dating method: 6,603 by observation, 1,968 isotopic, 1,139 by correlation, 1,101 none recorded and 243 sidereal. Horizontal bars of eruptions by dating method: 6,603 by observation, 1,968 isotopic, 1,139 by correlation, 1,101 none recorded and 243 sidereal.
How each eruption's start was dated.

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.