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.

Horizontal bars of the ten heaviest meteorites, from Hoba at 60 t through Cape York, Campo del Cielo and Canyon Diablo to Bacubirito at 22 t, with Sikhote-Alin the only witnessed fall. Horizontal bars of the ten heaviest meteorites, from Hoba at 60 t through Cape York, Campo del Cielo and Canyon Diablo to Bacubirito at 22 t, with Sikhote-Alin the only witnessed fall.
The ten heaviest meteorites.

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.

Bars on a log scale of meteorites by mass class, peaking at 16,390 between 10 and 100 g and falling to 54 above a tonne. Bars on a log scale of meteorites by mass class, peaking at 16,390 between 10 and 100 g and falling to 54 above a tonne.
Recorded masses in factors of ten.

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.

Horizontal bars of the iron share among the largest meteorites: 100% of the largest 10, 72% of the largest 100, 40.5% of the largest 1,000 and 2.3% of all. Horizontal bars of the iron share among the largest meteorites: 100% of the largest 10, 72% of the largest 100, 40.5% of the largest 1,000 and 2.3% of all.
The share of iron among the heaviest meteorites.

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.