Data / Open datasets / Storm Blackout and Restoration

Storm Blackout and Restoration

County night-light readings after FEMA-declared U.S. storms, with reported utility outages from EAGLE-I where they exist: 686 storms (672 in release 1.2), 2012 to 17 October 2026.

Published now: Version 1.0: Kaggle. Version 1.1: Kaggle (31 storms with county results in version 1.1). Version 1.2: Zenodo, Kaggle, Hugging Face (672 storms in version 1.2).

Status
Released
Version / DOI
Published 2026-10-10. Version 1.2, DOI 10.5281/zenodo.23010005.
Coverage
672 FEMA-declared storms in the states, Puerto Rico, the U.S. Virgin Islands and tribal areas: hurricanes, tropical storms, typhoons, winter and severe storms and floods.
Period
Landfall or incident dates from 2012-01-14 to 2026-08-11
Resolution
County (or county-equivalent) by day, from satellite light readings at about 500 m
Newer storms
14 storms in the live list are newer than version 1.2 and not part of it. Newest storm: Champi (17 October 2026). The published version 1.2 runs through 11 August 2026. Storms after that date are not in it. The live feed is newer data from the API. It can change and is not part of the cited version.
Storm reports
Paid products are free to every account through December 31, 2026 (midnight US Eastern). From January 1, 2027, paid plans apply only to accounts that choose one, and the free API key and free tier continue. Storm reports for storms already in the published tables, and the extras listed for those tables, are free with a free account. Licensed products are by quote.
Formats
CSV and Parquet tables
Access
Free and paid
License
CC BY 4.0, with upstream attribution below

Download the data Create a free account

Sample rows

Hurricane Milton, 15 Florida counties with the highest peak customers out (county_summary.csv)
countystatepeak_customers_outpeak_share_outhours_to_50pct_restored
HillsboroughFL5203080.715576.75
PinellasFL4493100.774062.25
LeeFL2734700.530736.25
SarasotaFL2551310.821442.50
ManateeFL2204550.841148.75
PolkFL2099760.519733.25
VolusiaFL1778340.551233.25
PascoFL1744940.548945.50
OrangeFL1581900.235228.25
CollierFL1381550.501329.50
BrevardFL1192760.34739.50
LakeFL985410.448633.25
CharlotteFL971200.686226.75
SeminoleFL903120.398519.00
Palm BeachFL789460.09762.50

Rows from the published Storm Blackout and Restoration 1.2 table (county_summary.csv). Estimates from public records and satellite night light. Not for real-time emergency response or for any decision about one address or property.

Lights-out video

Hurricane Milton, Florida, October 2024: how bright each county was at night, compared with before the storm (AL142024). Picture: night 4 after the storm, Oct 14, 2024 (UTC). One frame per night, from 7 nights before to 30 nights after the storm date (UTC) of Oct 10, 2024. Night light shows how bright each county looked from space. It is not a count of customers without power. Light returning suggests, but doesn't prove, power is back. Usual = each county's typical brightness on clear nights in the 30 nights before the storm. Line: the middle declared county. Hollow dot: fewer than 10 declared counties clear. Red line: tonight. Gray means no reading, not darkness. FEMA-declared counties: counties in the storm's disaster or emergency declarations. Nights with no satellite observation are flat gray-blue. A hatched county is one the satellite saw, but not clearly enough to measure. Dates are UTC. Provided as is, without warranty of any kind.

Estimates from public records and satellite night light. Not for real-time emergency response or for any decision about one address or property.

Try it

Milton (AL142024) on 2024-10-10. The highest peak customers out in this sample is Hillsborough County, Florida, 520308.

Milton, first 5 counties by peak customers out
StormCountyStatePeak customers outPeak share
MiltonHillsboroughFL5203080.7155
MiltonPinellasFL4493100.7740
MiltonLeeFL2734700.5307
MiltonSarasotaFL2551310.8214
MiltonManateeFL2204550.8411

Create a free account for the full result, videos and your AI assistant.

Estimates from public records and satellite night light. Not for real-time emergency response or for any decision about one address or property.

Download the data

Not in this download, free through the API: lights-out videos for most storms, storm-path videos for hurricanes and tropical storms, forecast maps and satellite loops. Get a free key.

  1. Storm Blackout and Restoration

    County power outages and restoration from utility records and satellite night light. Version 1.2, 672 storms.

    Citable copy (Zenodo) · Dataset (Kaggle) · Run the notebook (Kaggle) · Discussion (Kaggle) · Load in Python (Hugging Face)

What the data shows

5 findings from the published version.

  1. 8,867,374 Finding

    Irma has the largest sum of county outage peaks among these 672 storm events: 8.9 million.

    Among these 672 storm events, Irma (AL112017) has the largest sum of county peak customers out: 8,867,374 across 329 counties with a numeric peak. Each county contributes its own peak. Those peaks are not one simultaneous count of customers out.

    Read the finding

    Breakdown

    Summing numeric peak_customers_out for event_id AL112017 gives 8,867,374 across 329 counties. That sum is the largest among the 672 storm events. Each county contributes its own peak. Those peaks are not one simultaneous count of customers out. The next sums are Helene 5,911,300, DR-4586 5,214,663, Ian 3,981,026, and Milton 3,736,269.

  2. 3,736,269 Finding

    Milton's sum of county outage peaks ranks fifth: 3.7 million.

    Milton (AL142024) sums to 3,736,269 peak customers across 51 counties (5th largest sum). Each county contributes its own peak.

    Read the finding

    Breakdown

    For AL142024, the sum of numeric peak_customers_out is 3,736,269 across 51 counties. That ranks 5th, behind Irma, Helene, DR-4586, and Ian. Each county contributes its own peak. Those peaks are not one simultaneous count of customers out.

  3. 121 days Finding

    After Maria, night-light brightness took 121 days to return to the usual range in the typical county.

    For Maria (AL152017), the median of days_to_normal is 121 days across 46 counties with a value. This column is satellite night-light brightness.

    Read the finding

    Breakdown

    In the county summary table for AL152017, the median of days_to_normal is 121 across 46 counties with a value. days_to_normal counts days of satellite night-light brightness. It is separate from utility hours_to_90pct_restored.

  4. 52.9 hours Finding

    After Irma, the typical county reached 90% of customers restored in 53 hours.

    For Irma, the median county hours to 90 percent restored is 52.9 hours (280 counties with a numeric value).

    Read the finding

    Breakdown

    For AL112017, the median of numeric hours_to_90pct_restored is 52.9 hours across 280 counties. Blank and non-numeric cells are left out. A row with reporting_drop true stays in the median when the hour cell is numeric.

  5. 672 storm events Finding

    44 of 672 storm events are tropical cyclones or typhoons.

    These 672 storm events include 36 with kind tropical and 8 with kind typhoon (44 together). Kind tropical includes hurricanes. Other counts: severe storms 347, floods 186, tornadoes 24, ice storms 21, winter storms 21, snowstorms 20, straight-line wind 6, coastal storms 3.

    Read the finding

    Breakdown

    Counting kind on storms.csv yields the mix above. The three largest summed county peaks are Irma, Helene, and DR-4586. Kind tropical includes hurricanes.

All findings

What it is for

Intended use
Research on how county night light changed after U.S. storms, read next to the reported utility outages, for resilience, insurance and emergency-management studies.
Not intended for
Judging a single address or neighborhood, or real-time response. Night light is related to electricity service. It does not show when power went off or came back. See the limits below.

Every storm in the release

Counts and headline numbers use the counties FEMA declared for each storm; the files also include the other counties in the same states, marked as not declared, for comparison. 14 storms in the live list are newer than version 1.2 and not part of it. Newest storm: Champi (17 October 2026). The published version 1.2 runs through 11 August 2026. Storms after that date are not in it.

    Named storms sit at their strongest US landfall on the NOAA HURDAT2 track; other events at the average of their declared counties' Census interior points. Select a dot to find the event in the table.
    672 storms in the published table (release 1.2). 658 have night-light numbers and 477 have an outage run. 14 newer storms are in the live list and not in this table yet.
    Storm Dates Location States Counties Status Type Year Access Scope Ends What the data shows Details Get it

    Status: what the published table holds for each storm. Night light and outage run: night-light numbers and a county outage run from utility records. Night light only: night-light numbers and no outage run. Storm row only: a row in storms.csv with a reason code and no numbers. Every row is free to download.

    Columns in each table

    These are some of the columns. datapackage.json in the download lists every table and column.

    Columns from county_daily.csv (one row per storm, county and night) and county_summary.csv (one row per storm and county)
    FieldTableTypeUnitDescription
    event_idcounty_dailystringnoneNHC storm identifier (for example AL092022) or FEMA disaster number (DR-4901)
    geoidcounty_dailystringnoneCounty FIPS code, 5 digits. Read as text to keep the leading zero
    datecounty_dailydatenoneNight of observation (the UTC date of the product file)
    days_from_landfallcounty_dailyintegerdaysDays since storms.landfall (negative before). Stored nights reach back about 400 days where a prior-year baseline was read
    radiance_nw_cm2_srcounty_dailynumbernW/cm²/srMean radiance over the valid pixels that night: the sum of radiance over valid pixels divided by their number
    valid_pixel_sharecounty_dailynumbernonevalid_pixels as a share of all pixels in the area
    light_ratiocounty_dailynumbernoneradiance_nw_cm2_sr divided by baseline_radiance of the summary row
    declaredcounty_summarybooleannoneTrue when FEMA declared the county for this storm
    baseline_nightscounty_summaryintegernoneClear nights in the baseline
    baseline_sourcecounty_summarystringnoneevent_window: baseline nights before the storm. prior_year: the same season a year earlier, used when the nights before the storm were too few. insufficient: no baseline
    statuscounty_summarystringnoneWhat the night-light series did. It is not a detected power outage. light_drop: smoothed light fell below the county's normal range soon after impact. no_measurable_outage: observed, no such fall (the name keeps an old use of the word outage for a night-light state). cloud_obscured: not observed until late and normal by then. low_signal: too noisy to judge. insufficient_data: too few nights
    days_to_50county_summaryintegerdaysDays from impact until smoothed light was back at or above 50% of baseline
    days_to_normalcounty_summaryintegerdaysDays from impact until smoothed light was back in the county's normal range
    peak_customers_outcounty_summarynumbernonePeak customers out reported in EAGLE-I, taken after readings that hold more than one collection snapshot are replaced (see flagged_readings). A replaced reading is an interpolated value that was not measured
    hours_to_90pct_restoredcounty_summarynumberhoursHours from the peak until customers out stayed at or below 10% of the peak for 6 hours

    Ten real rows

    Hurricane Maria, the first ten Puerto Rico municipios in alphabetical order (county_summary.csv)
    event_id geoid county state baseline_nights post_obs_nights status outage_min_ratio days_to_50 (days) days_to_normal (days)
    AL15201772001AdjuntasPR18150low_signalnonenonenone
    AL15201772003AguadaPR19138light_drop0.30263126
    AL15201772005AguadillaPR17141light_drop0.32962120
    AL15201772007Aguas BuenasPR19146light_drop0.076126none
    AL15201772009AibonitoPR17143no_measurable_outage0.191nonenone
    AL15201772011AñascoPR19145light_drop0.0506394
    AL15201772013AreciboPR16148light_drop0.11563126
    AL15201772015ArroyoPR18149light_drop0.11294none
    AL15201772017BarcelonetaPR16142light_drop0.24563none
    AL15201772019BarranquitasPR18145light_drop0.063121179

    Rows from the published Storm Blackout and Restoration 1.2 table (county_summary.csv). Numbers rounded to three decimals for display; the files carry full precision. none means the value is empty.

    Example calls

    Each call returns real rows. A free account gives you the key; the same key works in AI assistants through the MCP server.

    1. List every storm in the catalog

      curl https://api.heimdallresearch.com/v1/storms \
        -H "Authorization: Bearer $HEIMDALL_API_KEY"
    2. One storm, with every county's summary

      curl https://api.heimdallresearch.com/v1/storms/AL152017 \
        -H "Authorization: Bearer $HEIMDALL_API_KEY"
    3. One county after one storm

      curl https://api.heimdallresearch.com/v1/storms/AL152017/counties/72001 \
        -H "Authorization: Bearer $HEIMDALL_API_KEY"

      Response, trimmed

      {
        "dataset_version": "1.2",
        "doi": "10.5281/zenodo.23010005",
        "event_id": "AL152017",
        "county": {
          "geoid": "72001",
          "county": "Adjuntas",
          "state": "PR",
          "baseline_nights": 18,
          "post_obs_nights": 150,
          "status": "low_signal",
          "outage_min_ratio": null,
          "days_to_50": null,
          "days_to_normal": null
        }
      }
    4. Ask an AI assistant

      Ask: “Show the county night-light reading for Adjuntas, Puerto Rico after Hurricane Maria (AL152017).” The assistant calls get_storm.

    Sources and required attribution

    Every input, its role, and its terms
    InputRoleLicense or termsAttribution
    NASA Black Marble daily nighttime lights, VIIRS on Suomi NPP (VNP46A2, version 2)Measured, 2012 to 2 November 2026NASA open data; acknowledge and citeProduct citation with DOI 10.5067/VIIRS/VNP46A2.002
    NASA Black Marble daily nighttime lights, VIIRS on NOAA-20 (VJ146A2, version 2)Measured, 2018 onward. Used for current readings since Suomi NPP deliveries ended on 2 November 2026NASA open data; acknowledge and citeProduct citation with DOI
    NOAA National Hurricane Center best tracks (HURDAT2), operational tracks and wind radiiStorm timing, landfall and wind extentPublic domainNational Hurricane Center
    FEMA disaster declarations (OpenFEMA)Which storms, counties and tribal areas are included, incident begin dates, and the declaration typePublic domainFEMA
    U.S. Census Bureau county housing unit estimatesSplits state customer counts across countiesPublic domainU.S. Census Bureau
    U.S. Census Bureau cartographic boundary filesCounty boundariesPublic domainU.S. Census Bureau
    EAGLE-I county outage records (Oak Ridge National Laboratory)Reported utility outages by county, where records exist; validationCC BY 4.0Cited in the release
    EIA-861 utility customer countsCustomers per countyPublic domainU.S. Energy Information Administration

    How values are produced

    For each storm, every county in the affected states is compared night by night with its own normal light. The baseline is the median of clear, snow-free nights before the storm, leaving out nights affected by any earlier storm; if too few remain, the same weeks one year earlier are used, and the row says so. After landfall, each clear night is compared with that baseline. days_to_50 counts days from impact until smoothed light was back at or above 50 percent of baseline. days_to_normal counts days until smoothed light was back in the county's normal range. window_end_reason records why each county's window ended. Pixels flagged for cloud, poor quality, or snow are excluded, and the count of usable nights travels with every value. Each storm is measured with one satellite product, named in the product column. Radiance from different products should not be compared between storms; this release gives no conversion between them.

    How it is checked

    Outage records
    Night light was compared with EAGLE-I outage records. County mean darkness (dark_county_mean) does not separate counties with large outages from counties with small ones: pooled AUC 0.515 over 418 storms and 5,841 counties, 95% interval 0.482 to 0.547 from resampling storms. The interval includes 0.5, which is chance. Lit-pixel radiance drop (dark_lit_ratio) separates counties with large outages from counties with small ones: pooled AUC 0.559 over 287 storms and 3,611 counties, 95% interval 0.511 to 0.605 from resampling storms. Change in the share of unlit lit-mask pixels (dark_lit_share) separates counties with large outages from counties with small ones: pooled AUC 0.566 over 287 storms and 3,611 counties, 95% interval 0.513 to 0.615 from resampling storms. An AUC of 0.5 is a coin flip.
    Recomputed values
    Night light for 20 storms was derived again from the night-light table, and the outage columns of 5 counties were computed again from the published EAGLE-I file. Both equal the published tables.
    Known limits
    Clouds and snow hide the ground, moonlight and seasonal lighting shift readings, and some light returns before power does (generators) or stays low after it returns (damaged buildings, displacement). Every value carries its observation count, and results are by county or by tribal area.

    How it compares with existing products

    NASA publishes before-and-after light maps for single disasters. This dataset puts county night-light readings and EAGLE-I outage records for U.S. storms in one set of tables, with the method and limits published next to them.

    Free and paid access

    Free
    The published package is on Zenodo, Hugging Face and Kaggle, with no sign-up, and the API and MCP server with a free key.
    Paid
    Reports for one storm and one area. Paid products are free to every account through December 31, 2026 (midnight US Eastern). From January 1, 2027, paid plans apply only to accounts that choose one, and the free API key and free tier continue. See plans and prices.

    How to cite

    Heimdall Research (2026). Storm Blackout and Restoration (Version 1.2) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.23010005 Concept DOI https://doi.org/10.5281/zenodo.23010004.

    Please also cite the NASA Black Marble products.

    Versions and corrections
    Version 1.0 is on Kaggle and has no Zenodo DOI. Version 1.1 (31 storms with county results) is on Kaggle and has no Zenodo DOI. Version 1.2 (672 storms) has DOI https://doi.org/10.5281/zenodo.23010005 and began the Zenodo and Hugging Face copies. DOI https://doi.org/10.5281/zenodo.23010004 covers all versions. The changelog in the download records changes. Report problems through the collaboration form.
    Download
    Zenodo (CSV and Parquet, DOI) · Hugging Face (same files; loads with the datasets library) · Kaggle (notebook, discussion) · API and MCP with a free account. Downloads need no account.
    Use notice
    Estimates from public records and satellite night light. Not for real-time emergency response or for any decision about one address or property.

    ← All datasets

    All open datasets