Off-Nadir Delta
Satellite measurement

Thermal Anomalies: Heat Sources Measured by Satellite

A refinery that flares every night is not news. One that is suddenly 5 times hotter than it has been for the last 21 days is worth a look. Off-Nadir Delta keeps the second kind, ties each one to the facility it was near, and puts it on the same map as the reporting.

Quick answer — what a thermal anomaly is here

A thermal anomaly is a heat source a satellite measured that is far above the recent level of the same spot. Off-Nadir Delta records two kinds from NASA FIRMS VIIRS 375 m data (Suomi NPP, NOAA-20, NOAA-21). Near a registered facility — a refinery, power plant, port, base, dam or bridge; airports are excluded — it is a detection of at least 10 MW within 2 km that is at least 5 times the strongest detection within 500 m of the same spot in the 21 days before. Away from any facility, it is a compact night-time source of at least 20 MW that stands out from its own past and from its surroundings. Each record states the strength, the earlier level, the time, the satellites and the facility, and never a cause. Records are events: they sit on the Watchfloor map, link to reporting that names the same facility within 3 days, and are returned by GET /api/v1/thermal-anomalies.

What is a thermal anomaly?

In satellite remote sensing, a thermal anomaly is a pixel that a sensor flagged as hotter than its surroundings. NASA FIRMS, which distributes the data, describes each detection as “the center of a pixel flagged as containing one or more fires or other thermal anomalies”, and adds that “in most cases hotspots/fires are vegetation fires, but sometimes a hotspot/fire is a volcanic eruption or the flare from a gas well” (NASA FIRMS FAQ).

That is the difficulty with a raw detection map. A dot over a refinery might be an incident, or it might be the flare stack that has burned every night for years. The detection alone does not say which.

Here the term is used in a narrower sense: a heat source that is anomalous for that spot. The comparison is with the same location’s own recent past, so a steady source is filtered out by its own history and a new or sharply stronger one is kept.

Two kinds are recorded

Near a registered facility

  • At least 10 MW of fire radiative power.
  • Within 2 km of a facility in the registry: refineries, power plants, ports, bases, dams, bridges and the like. Airports are excluded.
  • At least 5 times the strongest detection within 500 m of the same spot in the 21 days before, or nothing was detected there in that time.
  • The record gives the distance from the facility’s registered point to the heat source.

A strong isolated source at night

  • At least 20 MW, on a night-time pass.
  • No registered facility within 2 km.
  • At least 5 times its own spot’s 21-day maximum and 3 times that of the surrounding area.
  • Compact, with little burning nearby. This kind does not rule out vegetation fires.

Sensor: VIIRS 375 m active fire data on Suomi NPP, NOAA-20 and NOAA-21, distributed by NASA FIRMS (NASA Earthdata). Facility positions: OpenStreetMap contributors and Wikidata.

What a record states

  • When the satellite passed, and which satellites saw it.
  • The strength of the strongest pixel, in megawatts.
  • The strongest detection at the same spot in the weeks before, and how many times stronger this one is.
  • The facility it was near and the distance, or the nearest town for a night-time source.
  • The detection confidence NASA assigned: low, nominal or high.

What it does not state

  • A cause. An attack, an accident, a flare and a brush fire by the fence produce the same reading.
  • That it was inside the facility. A detection is the centre of a 375 m pixel, and the fire is often smaller than the pixel.
  • That nothing happened elsewhere. NASA notes that cloud cover, heavy smoke or tree canopy may completely obscure a fire.
  • A severity of its own. A record takes the severity of reporting that names the same facility; with none, it is left unscored.

Measurement and reporting, side by side

A report says a refinery was hit. A measurement says something at that refinery got much hotter that night. Neither proves the other, but together they are worth more than either alone, and they come from sources that do not depend on each other.

Each thermal anomaly is linked to reported events that name the same facility within 3 days of the detection. The link is by the facility’s name in the reporting, never by distance alone, and the two are always shown as different kinds of evidence: reporting as reporting, measurement as measurement.

Thermal anomaly API

The same records are available as data. One request returns the thermal anomalies in a bounding box and date range, and costs 3 tokens.

curl "https://offnadir-delta.com/api/v1/thermal-anomalies?bbox=40,45,50,52&start_date=2026-10-01&end_date=2026-10-06" \
  -H "Authorization: Bearer ond_..."
  • kind is facility or night_source.
  • frp_mw, baseline_max_mw and times_baseline give the strength and the earlier level.
  • facility and distance_m say what it was near.
  • linked_events lists the reporting tied to the same facility.
  • Every record carries an event_id, so the event endpoints work on it.

Also available as client.thermal_anomalies.list() in the Python SDK, and through GET /api/v1/signals?origin=thermal and the MCP tool query_signals. Full parameters are in the API reference.

What each plan sees

On every plan, the Watchfloor map shows that a heat source was measured, when, and where. The flame marks are there without paying.

The measurement itself — which facility or place it was near, how strong it was, how it compares with the weeks before, and the reporting linked to it — is part of the full account of each event, in the app and over the API. Pricing shows which plan opens it.

How It Works

1

Open the Watchfloor

Thermal anomalies are on the map next to reported events. The Layers panel has “Thermal anomalies”, on by default.

2

Find the flame marks

Each flame is one heat source a satellite measured. Turn the Signals layer off to see only these.

3

Open one

Read what was measured: the strength, the earlier level at the same spot, the satellites, and the facility it was near.

4

Check it against reporting and imagery

Reporting that names the same facility is listed with it, and the active-fire layer shows the detections the record was made from.

Frequently Asked Questions

What is a thermal anomaly?▼
In satellite remote sensing, a thermal anomaly is a pixel a sensor flagged as hotter than its surroundings. NASA FIRMS describes each detection as “the center of a pixel flagged as containing one or more fires or other thermal anomalies”, and notes that most are vegetation fires but some are volcanic eruptions or gas flares. On Off-Nadir Delta the term is narrower: a heat source that is far above the recent level of the same spot, so a flare that burns every night does not count.
How is this different from an active fire map?▼
An active fire map draws every detection. Most of them are vegetation fires and steady industrial sources. A thermal anomaly here is a detection that passed two tests: it is strong (at least 10 MW of fire radiative power) and it is at least 5 times the strongest detection at the same spot in the 21 days before. Each one is kept as a record with its facility, its earlier level and the reporting linked to it, instead of a dot that is gone the next day.
How is this different from NASA’s Static Thermal Anomalies layer?▼
They answer different questions. NASA FIRMS has an experimental Static Thermal Anomalies layer: a mask of 400 m grid cells that produced 5 or more VIIRS detections during 2023, filtered with industrial and power plant locations, which FIRMS says is for reference only and not available for distribution. It marks where heat is routine. A thermal anomaly here marks when a heat source stops being routine: the comparison is with the same spot’s own previous 21 days, so a flare that suddenly grows is kept even at a site that is always hot.
Which satellites and sensor are used?▼
The VIIRS 375 m active fire data distributed by NASA FIRMS, from the three satellites that carry VIIRS: Suomi NPP, NOAA-20 and NOAA-21. Strength is fire radiative power in megawatts, which NASA defines as the rate of radiative energy emitted by all fires within a pixel.
Does a thermal anomaly mean an attack, an explosion or an accident?▼
No. A record states what was measured and never a cause. The same reading is produced by an attack, an accident, a maintenance flare, a process upset or a vegetation fire next to the fence. The heat source may also be outside the facility: a detection marks the centre of a 375 m pixel, and facilities up to 2 km away are matched. Cause comes from reporting and imagery, which is why linked reporting is listed with each record.
How quickly does a thermal anomaly appear?▼
NASA FIRMS states that its near-real-time data are available within 3 hours of a satellite observation, on a best-effort basis. Off-Nadir Delta reads that data several times a day, so a record follows the satellite pass by hours, not minutes.
What can it miss?▼
Anything the sensor could not see. NASA FIRMS notes that cloud cover, heavy smoke or tree canopy may completely obscure a fire. The comparison with the earlier level uses the strongest detection that was visible, so a cloudy three weeks makes a spot look quieter than it was. Small or short-lived heat sources between satellite passes are also not recorded.
Are heat sources away from any facility included?▼
Yes, as a separate kind. A night-time heat source of at least 20 MW with no registered facility within 2 km is recorded when it is far above its own spot’s recent level and at least 3 times that of its surroundings, and is compact with little burning nearby. Only night-time passes are used for this kind, and it does not rule out vegetation fires.
Is there a thermal anomaly API?▼
Yes. GET /api/v1/thermal-anomalies returns the records for a bounding box and date range, each with its kind, time, position, strength, earlier level, satellites, facility and distance. A request costs 3 tokens. The same records are events, so they also come back from GET /api/v1/signals with origin=thermal, and the Python SDK has client.thermal_anomalies.
What does each plan see?▼
Every plan sees that a heat source was measured, when, and where on the map. Which facility or place it was near, how strong it was, how it compares with the weeks before and the reporting linked to it are part of the full account of each event, which not every plan includes. The Pricing page shows which plan opens it.

See Thermal Anomalies on the Map

The flame marks are on the Watchfloor for every account. The measurement detail and the API are plan-dependent; see Pricing.

From headline to satellite evidence

One connected intelligence workflow across four surfaces — free to start, no GIS software or remote-sensing background required.