Every wildfire in the world large enough to throw thermal-IR energy at a polar-orbiting satellite shows up in NASA FIRMS within hours. For utilities, oil-and-gas operators, telecoms with above-ground infrastructure, and field crews working in remote terrain, FIRMS is the cheapest defensible wildfire monitoring layer available.
This post is about the practical pipeline: which FIRMS products to consume, how to filter, and how to wire them into an operations Slack channel without spam-firing on every prescribed burn.
What FIRMS actually publishes
FIRMS (Fire Information for Resource Management System) is NASA's near-real-time active-fire product. Two sensor sources:
MODIS (Aqua + Terra)
Two satellites in polar orbit since 2002. 1km thermal resolution. Each satellite passes over a given point ~twice per day. Combined, MODIS gives you 4 overpasses per 24 hours.
VIIRS (Suomi NPP + NOAA-20)
Newer instrument since 2011. 375m thermal resolution — finer than MODIS, catches smaller fires. Also two overpasses per satellite per day. Combined VIIRS gives ~4 more overpasses.
Total combined coverage: ~8 overpasses per 24 hours. Latency from fire-start to FIRMS publication is typically 1-3 hours (sensor pass + downlink + processing).
Consumption modes
Two ways to consume FIRMS data:
Area-CSV API
https://firms.modaps.eosdis.nasa.gov/api/area/csv/MAP_KEY/VIIRS_SNPP_NRT/BBOX/DAYS
Returns a CSV of active-fire pixels for the bounding box over the requested days. Free map-key on registration. Refresh hourly is fine.
Country-CSV API
Same as area but pre-filtered by ISO 3166-1 country code:
https://firms.modaps.eosdis.nasa.gov/api/country/csv/MAP_KEY/VIIRS_SNPP_NRT/USA/1
Useful if your monitoring scope is country-level.
WMS tile layer
For map UIs (Leaflet, Mapbox), FIRMS also publishes WMS tiles. Use as a visualisation overlay on your operations map.
Per-pixel fields
Each FIRMS row includes:
latitude,longitudebright_ti4/bright_ti5— thermal brightness in two IR bandsscan,track— pixel size (varies with viewing angle)confidence— low / nominal / high (VIIRS) or 0-100 % (MODIS)frp— Fire Radiative Power in megawatts (energy released)daynight— D or Nacq_date,acq_time— when the satellite scanned
The valuable fields for severity scoring are confidence and frp.
Severity scoring for fires
Convert FRP + confidence into a 0-100 score:
function fireSeverity(p: FirmsPixel): number {
const conf = p.confidence === "h" ? 1 : p.confidence === "n" ? 0.7 : 0.4;
const frpScore = Math.min(60, Math.log10(Math.max(1, p.frp)) * 25);
const base = conf * 30 + frpScore;
return Math.round(Math.min(100, base));
}
- A single low-confidence ~5 MW pixel scores ~25 (probably a small prescribed burn or false positive)
- A high-confidence ~500 MW pixel scores ~80 (real wildfire, large)
- A high-confidence ~5000 MW pixel scores 100 (megafire — Camp Fire, Black Saturday, Maui)
Geofencing patterns
Three patterns for infrastructure protection from wildfire:
1. Long thin corridor polygons for linear infrastructure
For pipelines, power lines, fibre cables — define a 5-10km buffer polygon along the asset path. Set severity threshold to ≥40. Catches every fire in striking distance.
2. Asset-radius circles for facilities
For refineries, substations, telecom huts, agricultural operations — define a 25km circle. Set severity threshold to ≥50. Filters out distant fires that don't affect operations.
3. Country-level polygons for portfolio awareness
For reinsurers tracking exposure across whole countries during fire seasons — country polygon + severity ≥70 catches every megafire.
False-positive filters that work
FIRMS has known false-positive sources you can filter out:
- Industrial heat signatures — flares, steel mills, power plants show up as persistent "fires." Maintain a known-source mask (lat/lon list) and subtract these.
- Gas flares — natural-gas flaring in oil-producing regions (Nigeria, Iraq, North Dakota) generates persistent FIRMS pixels. Use a flaring-source database (or just exclude known oil-producing lat/lon buffers).
- Sun glint over water — VIIRS occasionally false-positives over water at low sun angles. Filter pixels where
daynight=DAND lat/lon falls in water (use OSM water-polygon mask). - Low-confidence single pixels — drop
confidence=lpixels unless multiple are clustered.
Aggregating per fire
A single wildfire produces dozens of FIRMS pixels per satellite pass. Cluster nearby pixels (DBSCAN with eps=2km, minPts=3) into one "fire" before firing the alert. Otherwise the same fire generates 50 alerts on one pass.
Latency budget
End-to-end "fire starts → alert in your Slack":
- Satellite overpass timing: 0-6 hours (until the next overpass)
- FIRMS processing: 1-2 hours
- Your hourly poll: 0-60 minutes
- Dispatcher matching: under 1 second
- Slack delivery: 1-3 seconds
Median: 3-8 hours. Worst case: 12 hours. Not real-time, but for asset-protection workflows it's enough.
For sub-hour wildfire detection you need:
- GOES-R / Himawari geostationary thermal data (5-minute refresh)
- Aircraft AFIRS data (US Forest Service, partner-only)
- Ground-based sensors (commercial: Pano AI, ALERT California)
Free starter stack
Minimum viable wildfire monitoring this week:
- Register a free FIRMS map-key
- Wire VIIRS + MODIS area CSV polls hourly for your operating regions
- Cluster pixels into fires (DBSCAN)
- Define corridor / radius zones for your top 20 assets
- Score each fire on 0-100 via FRP + confidence
- Slack channel
#ops-fires, route via incoming webhook
Augur's NASA FIRMS ingest wraps the cluster + dedupe + geofencing layer + known-source masking. The pixels are free; the pipeline is the work.
What this looks like in production
Western US utility: 200km of transmission line + FIRMS corridor zones + severity ≥50 threshold drives the fire-restoration crew dispatch decision. Replaced a manual analyst review process.
California-based reinsurer: state-wide FIRMS coverage + cluster-into-fire aggregation drives the daily portfolio-exposure dashboard during fire season. 30-minute pipeline replaces an old offline batch process.
West-Australian mining operator: 25km circle around each pit + FIRMS + severity ≥60 protects haul-road infrastructure during summer.
The data is public. The geofencing makes it useful.