How to Rank the Largest Meteorites by Mass
On this page
Problem statement
The largest meteorite on Earth, Hoba in Namibia, weighs about 60 tonnes and has never been moved. NASA's Meteorite Landings table records it among 45,716 meteorites whose median mass is a few tens of grams. Ranking them looks like a one-line sort, but the recorded mass is the total collected, which for a shower is hundreds or thousands of stones, and the largest are almost all iron. This page ranks the meteorites by mass, measures how much of the recorded mass a few of them hold, and shows what the mass column does and doesn't measure.
Quick answer
Sort by mass_g and convert to tonnes:
top = met.nlargest(10, "mass_g").assign(tonnes=lambda d: d.mass_g / 1e6)
print(top[["name", "recclass", "fall", "year", "tonnes"]].round(1).to_string(index=False))
name recclass fall year tonnes
Hoba Iron, IVB Found 1920.0 60.0
Cape York Iron, IIIAB Found 1818.0 58.2
Campo del Cielo Iron, IAB-MG Found 1575.0 50.0
Canyon Diablo Iron, IAB-MG Found 1891.0 30.0
Armanty Iron, IIIE Found 1898.0 28.0
Gibeon Iron, IVA Found 1836.0 26.0
Chupaderos Iron, IIIAB Found 1852.0 24.3
Mundrabilla Iron, IAB-ung Found 1911.0 24.0
Sikhote-Alin Iron, IIAB Fell 1947.0 23.0
Bacubirito Iron, ungrouped Found 1863.0 22.0
All ten are iron. Hoba, at 60 t, leads Cape York, 58.2 t of iron masses found in Greenland, and Campo del Cielo in Argentina at 50 t. Canyon Diablo, the meteorite of Arizona's Meteor Crater, is fourth at 30 t. Only one of the ten was seen to fall, Sikhote-Alin, which came down in eastern Russia in 1947 and left 23 t of fragments.
Mass, from grams to tonnes
1. How concentrated the mass is
m = met.mass_g.dropna().sort_values(ascending=False)
print(f"total recorded mass: {m.sum() / 1e6:,.0f} t; largest 10: {m.head(10).sum() / m.sum():.1%}; largest 100: {m.head(100).sum() / m.sum():.1%}")
print(f"meteorites over 1 t: {(m >= 1e6).sum()}; under 100 g: {(m < 100).mean():.1%}")
total recorded mass: 605 t; largest 10: 57.1%; largest 100: 86.2%
meteorites over 1 t: 54; under 100 g: 66.2%
The table holds 605 t of meteorites in total, and the largest ten hold 57.1% of it, the largest hundred 86.2%. Only 54 weigh a tonne or more, while 66.2% weigh under 100 g. A sum of mass over any subset of meteorites is a sum over its largest few.
2. The spread on a log scale
bins = [0, 1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e8]
print(pd.cut(met.mass_g, bins, right=False, labels=["<1 g", "1-10 g", "10-100 g", "100 g-1 kg", "1-10 kg", "10-100 kg", "100 kg-1 t", ">1 t"]).value_counts(sort=False).to_string())
mass_g
<1 g 1956
1-10 g 11814
10-100 g 16390
100 g-1 kg 10554
1-10 kg 3483
10-100 kg 1083
100 kg-1 t 251
>1 t 54
Binned by factors of ten, the masses form a hump: 16,390 meteorites between 10 and 100 g, 11,814 between 1 and 10 g and 10,554 between 100 g and 1 kg, then a steady fall of a factor of three to five per bin, to 251 between 100 kg and a tonne and 54 above. 1,956 weigh under a gram, most of them small Antarctic stones from Grove Mountains, Yamato and MacAlpine Hills. A linear histogram of this column is a single bar at zero.
3. The largest falls
print(met[met.fall == "Fell"].nlargest(6, "mass_g").assign(tonnes=lambda d: (d.mass_g / 1e6).round(2))[["name", "recclass", "year", "tonnes"]].to_string(index=False))
name recclass year tonnes
Sikhote-Alin Iron, IIAB 1947.0 23.0
Jilin H5 1976.0 4.0
Allende CV3 1969.0 2.0
Kunya-Urgench H5 1998.0 1.1
Norton County Aubrite 1948.0 1.1
Jianshi Iron, IIIAB 1890.0 0.6
Among witnessed falls the ranking changes character. After Sikhote-Alin come stones: Jilin, an H5 chondrite that fell in China in 1976 with 4 t collected, Allende, the carbonaceous chondrite that fell on Mexico in 1969, at 2 t, and Kunya-Urgench and Norton County at 1.1 t each. A stony meteorite of that size breaks up in the air and arrives as a shower, so its tonnes were gathered from a strewn field of many stones.
Iron against stone, and what a mass means
The data used on this page
NASA's Meteorite Landings table from The Meteoritical Society's records (last updated May 2013), saved on this site on 28 October 2026. Masses are in grams as recorded, the total known mass of each meteorite.
from pathlib import Path
import json
import zipfile
import geopandas as gpd
import numpy as np
import pandas as pd
import requests
Path("data").mkdir(exist_ok=True)
# NASA's Meteorite Landings table (The Meteoritical Society's records as NASA last updated them, May 2013), every
# fireball in NASA/JPL's Fireball Data API, and Natural Earth's countries and land. Saved 28 October 2026.
# Live: https://data.nasa.gov/docs/legacy/meteorite_landings/Meteorite_Landings.csv
# https://ssd-api.jpl.nasa.gov/fireball.api?vel-comp=true
ARCHIVE = "nasa-meteorites-2026-10-28.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}")
met = pd.read_csv(Z.open("Meteorite_Landings.csv")).rename(columns={"mass (g)": "mass_g"})
for f in ["ne_110m_admin_0_countries.zip", "ne_50m_land.zip"]:
Path(f"data/{f}").write_bytes(Z.read(f))
print(f"Meteorite Landings: {len(met):,} meteorites")
Meteorite Landings: 45,716 meteorites
Example 1: iron against stone among the largest
big = met.nlargest(100, "mass_g")
print(big.recclass.str.startswith("Iron").map({True: "iron", False: "not iron"}).value_counts().to_string())
print(f"irons among all meteorites: {met.recclass.str.startswith('Iron').mean():.1%}")
recclass
iron 72
not iron 28
irons among all meteorites: 2.3%
72 of the 100 largest meteorites are irons, while irons are 2.3% of all meteorites. Iron is strong enough to reach the ground in one piece and resists weathering for tens of thousands of years, so iron masses of many tonnes survive where a stony body would have broken up in the air or crumbled in the soil.
Example 2: a recorded mass is what was collected
print(met[met.name.isin(["Allende", "Sikhote-Alin", "Canyon Diablo", "Chelyabinsk", "Murchison"])][["name", "fall", "year", "mass_g"]].to_string(index=False))
name fall year mass_g
Allende Fell 1969.0 2000000.0
Chelyabinsk Fell 2013.0 100000.0
Murchison Fell 1969.0 100000.0
Sikhote-Alin Fell 1947.0 23000000.0
Canyon Diablo Found 1891.0 30000000.0
The mass column is a running total of what has been recovered, and some entries are rounded estimates. Chelyabinsk, the 2013 fall over Russia, is recorded at 100 kg, a figure from the first weeks; the main mass, more than half a tonne, was raised from Lake Chebarkul eight months later. Allende's 2 t and Murchison's 100 kg are round numbers for showers collected by many people. Canyon Diablo's 30 t is the iron gathered around Meteor Crater, a small remnant of the impactor, most of which vaporised. Treat the column as known mass, with the precision of its zeros.
Internal links
- Meteorite classes β why irons hold 85% of the mass
- Witnessed falls by country β the falls on their own
- Fireball energy explained β Chelyabinsk seen from orbit