This repository is an archive of US Secretary of Agriculture disaster
designations (2012–present) and Presidential Major Disaster declarations
(2017–present). County-level disaster data are acquired weekly from the
USDA
Disaster Designation portal. The raw data are archived in the
data-raw
directory.
The fsa-disasters.R script handles all data
download and processing. The script begins by downloading all USDA
disaster designation spreadsheets from the official site, fixing broken
links and organizing them by year. It then reads these files and
combines them into one dataset, standardizing column names and formats
so the information is consistent across years. Dates are converted to
proper formats, and designation codes are normalized. The data is
cleaned to remove errors and reorganized so each disaster type and
affected county is clearly represented. Finally, the consolidated
dataset is saved in both CSV and Parquet formats for easy analysis, and
in a browser-optimized JSON mirror committed to this repository.
About USDA Secretarial Disaster Designations
USDA Secretarial Disaster Designations identify counties impacted by natural disasters such as drought, flooding, or wildfire. These designations enable producers in affected areas to access emergency loans and other assistance programs through the Farm Service Agency (FSA).
Designations are based on:
- Production losses (generally 30% or more)
- Physical losses (e.g., infrastructure damage)
- Recommendations from state and local officials
About Presidential Major Disaster Declarations
Presidential Major Disaster Declarations are issued under the Stafford Act and authorize federal assistance for communities affected by severe disasters. These declarations:
- Provide access to FEMA programs for individuals and public infrastructure
- Often complement USDA disaster programs for agricultural producers
- Are based on severity, scope, and state requests for federal aid
FEMA maintains a database of Major Disaster declarations as part of the OpenFEMA data portal. Additionally, the USDA Farm Service Agency also provides access to Presidential Major Disaster declarations.
🗂 Directory Structure
fsa-disasters.R: R script that updates secretarial and presidential disaster data based on files posted by the FSA.fsa-disasters.parquet: Consolidated disaster data in a single parquet file.fsa-disasters.csv: Consolidated disaster data in a single comma-separated values file.fsa-disasters.json: The same records restructured for browsers — dictionary-coded, declaration-normalized JSON (see below). Unlike the CSV and Parquet, committed to git as well as mirrored to S3.- data-raw/: Directory containing raw disaster data files as posted by the FSA.
README.Rmd: This README file, providing an overview and usage instructions.
📦 fsa-disasters.json
The same records as the CSV and Parquet — derived from the identical table in the same run — restructured for direct use in a browser. It is not an archive-of-record format; for analysis, use the CSV or Parquet. It differs in structure, not content:
- Column-oriented: one array per field with one entry per record, rather than one object per record.
- Declaration-normalized: the flat table repeats each declaration’s year, number, description, and three dates once per county that declaration names. Here the 3,907 distinct declaration amendments are a table of their own, and the 184,815 county rows carry an index into it. With the column orientation, that takes the file to about 4 MB raw and roughly 390 KB gzipped over the wire.
- Dictionary-coded strings: disaster years, declaration types and numbers, disaster descriptions and types, FIPS codes, and county and state names each appear once in a lookup array; the record arrays hold integer indices into them.
- Compact dates: each date is an integer count of days since
1970-01-01 rather than an ISO string, and is
nullwherever FSA reports no date — most often an end date, absent on about 104,000 rows. - Values verbatim, irregularities included: the payload mirrors the
archive rather than cleaning it.
Disaster Yearis"0"on 84 rows and"2011, 2012"on 10, and 270 approval dates are 1899-12-30 — a spreadsheet zero, which encodes here as the negative day count-25569.
The payload is self-describing via its schema field
(fsa-disasters/1), a frozen contract with its consumers: fields may be
added, but existing ones are never renamed or reordered without bumping
the schema.
📍 Quick Start: Visualize the 2025 Secretarial Disaster Designations for Drought in R
This snippet shows how to load a the parquet file from the archive and
create a thematic map using sf and ggplot2.
# Load required libraries
library(arrow)
library(sf)
library(ggplot2) # For plotting
library(tigris) # For state boundaries
library(rmapshaper) # For innerlines function
# Read the full designations archive
designations <-
"https://data.sustainable-fsa.com/fsa-disasters/fsa-disasters.parquet" |>
arrow::read_parquet()
# The most recent designation approval in the archive
latest_approval <-
max(designations$`Approval date`, na.rm = TRUE)
# Get the 2026 Secretarial disasters for drought
disasters <-
designations |>
dplyr::filter(`Designation/Declaration Type` == "Secretarial",
stringr::str_detect(`Disaster Type`, "DROUGHT"),
`Disaster Year` == 2026) |>
dplyr::arrange(`Designation Code`) %>%
dplyr::distinct(FIPS, .keep_all = TRUE)
## Load the US Census county data
counties <-
tigris::counties(cb = TRUE,
year = 2020,
resolution = "5m",
progress_bar = FALSE) |>
dplyr::filter(!(STATEFP %in% c("60", "66", "69", "78"))) |>
# transform to WGS 84
sf::st_transform("EPSG:4326") |>
sf::st_cast("POLYGON", warn = FALSE, do_split = TRUE) |>
tigris::shift_geometry() |>
dplyr::group_by(STATEFP, COUNTYFP) |>
dplyr::summarise(.groups = "drop") |>
sf::st_cast("MULTIPOLYGON") |>
dplyr::mutate(FIPS = paste0(STATEFP, COUNTYFP))
disasters_counties <-
disasters |>
dplyr::left_join(counties) |>
sf::st_as_sf()
# Plot the map
ggplot(counties) +
geom_sf(data = sf::st_union(counties),
fill = "grey80",
color = NA) +
geom_sf(data = disasters_counties,
aes(fill = `Designation Code`),
color = NA) +
geom_sf(data = rmapshaper::ms_innerlines(counties),
fill = NA,
color = "white",
linewidth = 0.1) +
geom_sf(data = counties |>
dplyr::group_by(STATEFP) |>
dplyr::summarise() |>
rmapshaper::ms_innerlines(),
fill = NA,
color = "white",
linewidth = 0.2) +
scale_fill_manual(
values = c(
"Primary" = "#DC0005",
"Contiguous" = "#FD9A09"
),
na.value = NA,
drop = FALSE,
na.translate = FALSE,
name = "Designation Code") +
labs(title = "2026 USDA Secretarial Disaster Designations for Drought",
subtitle = paste("Designations approved through",
format(latest_approval, "%B %d, %Y"))) +
theme_void()

Latest designation approval date: June 08, 2026
📝 Citation
If you use this data in published work, please cite:
USDA Farm Service Agency. Secretarial Disaster Designations (2012–present) and Presidential Major Disaster Declarations (2017–present). Curated and archived by R. Kyle Bocinsky, Montana Climate Office, University of Montana. Sustainable FSA project. Accessed YYYY-MM-DD. https://sustainable-fsa.com/fsa-disasters/
Machine-readable metadata are in CITATION.cff;
GitHub’s Cite this repository button (top right of the repo page)
renders it as APA or BibTeX.
Acknowledgment: This work is part of the Enhancing Sustainable Disaster Relief in FSA Programs project, supported by the USDA Office of the Chief Economist, Office of Energy and Environmental Policy, and the USDA Climate Hubs.
📄 License
- Raw data: Public Domain (17 USC § 105)
- Processed data & scripts: © R. Kyle Bocinsky, released under CC0 and MIT License as applicable
⚠️ Disclaimer
This dataset is archived for research and educational use only.
👏 Acknowledgment
This project is part of:
Enhancing Sustainable Disaster Relief in FSA
Programs
Supported by USDA OCE/OEEP and USDA Climate Hubs
Prepared by the Montana Climate Office
📬 Contact
R. Kyle Bocinsky
Director of Climate Extension
Montana Climate Office
📧 kyle.bocinsky@umontana.edu
🌐 https://climate.umt.edu