Skip to content
← Back to Remote Sensing
remote-sensingIntermediate· 12 min read

Spectral Indices: NDVI, NDWI, MNDWI, NDBI and NBR Explained

How a spectral index turns bands into one number per pixel, the formulas and band numbers for Sentinel-2 and Landsat 8, how to read the values, and where each index goes wrong.

What is a spectral index?

A spectral index combines the values of two or more bands into one number per pixel. The bands are chosen so that the index is high for one kind of surface and low for others. The result is a raster that shows vegetation, water, built-up land or burned ground at a glance.

Indices work because of spectral signatures. Healthy vegetation reflects strongly in the near-infrared and absorbs red, water absorbs infrared, and bare or built surfaces are fairly flat across the spectrum. An index puts those differences into a single value.

Why a normalised difference?

Most indices have the form of a normalised difference:

index = (A - B) / (A + B)

Here A is the band where the target reflects strongly and B is a band where it does not. The result runs from minus 1 to plus 1. Dividing by the sum has a useful effect. If a hillside in shadow is darker in every band by the same factor, the factor cancels. Two pixels of the same vegetation, one in sun and one in partial shade, get closer index values than raw band values.

The cancelling works only for a multiplier. An additive error, such as haze or an offset left in the data, does not cancel. This is why indices should be calculated from surface reflectance, and why the scale factor and offset need checking first.

The common indices

IndexFormulaHighlightsReflected (A, nm)Absorbed or low (B, nm)Reading the values
NDVI(NIR − Red)
/ (NIR + Red)
Green vegetationNIR, 842 nm: the leaf structure scatters itRed, 665 nm: chlorophyll absorbs itBelow 0: water or cloud. 0 to 0.1: bare. 0.1 to 0.3: sparse. 0.3 to 0.6: moderate. Above 0.6: dense
NDWI(Green − NIR)
/ (Green + NIR)
Open waterGreen, 560 nm: water reflects a littleNIR, 842 nm: water absorbs itAbove 0: water. Below 0: land
MNDWI(Green − SWIR1)
/ (Green + SWIR1)
Open water, with less confusion from built-up landGreen, 560 nm: water reflects a littleSWIR1, 1610 nm: water absorbs it almost completelyAbove 0: water. Below 0: land
NDBI(SWIR1 − NIR)
/ (SWIR1 + NIR)
Built-up and bare surfacesSWIR1, 1610 nm: built-up and dry bare surfaces reflect more of itNIR, 842 nm: lower on built-up land, high on vegetationAbove 0: built-up or bare. Below 0: vegetation or water
NDMI(NIR − SWIR1)
/ (NIR + SWIR1)
Moisture in vegetationNIR, 842 nm: the leaf structure scatters itSWIR1, 1610 nm: water in the leaves absorbs itAbove 0.4: moist canopy. 0 to 0.4: moderate. Below 0: dry
NBR(NIR − SWIR2)
/ (NIR + SWIR2)
Burned areas and vegetation healthNIR, 842 nm: a healthy canopy reflects itSWIR2, 2190 nm: low over a moist canopy, higher after burningAbove 0.4: healthy. Near 0: bare or sparse. Below 0: burned

Read the last three columns together with the formula: band A is the one before the minus sign, band B the one after it. The index is high where band A is bright and band B is dark.

The number with "nm" is the wavelength of the light in that band. nm stands for nanometre, one billionth of a metre. Blue, green and red light fall roughly between 400 and 700 nm, near-infrared (NIR) starts just beyond red at about 700 to 1,000 nm, and shortwave infrared (SWIR) covers about 1,400 to 3,000 nm. Each band covers a range of wavelengths, so the figure given is the centre of the band for Sentinel-2 and is approximate. Landsat bands are close but not identical.

The value ranges are rough guides, not fixed rules. They change with the sensor, the season, the soil and the scene, and a threshold of 0 is only a starting point for the water and built-up indices. Check any cut-off against the imagery. Some surfaces fool the indices: built-up land can come out positive in NDWI, and bare soil also comes out positive in NDBI. NBR is meant for land, so mask water first. Burn severity uses the change, dNBR = NBR before − NBR after. A commonly used USGS scale runs from about 0.1 to 0.27 for low severity, 0.27 to 0.66 for moderate severity and above 0.66 for high severity, with values between about −0.1 and 0.1 treated as unburned.

The bands differ by sensor.

BandSentinel-2Landsat 8 and 9LISS-IV
BlueB2B2not available
GreenB3B3B2
RedB4B4B3
NIRB8B5B4
SWIR1B11B6not available
SWIR2B12B7not available

The number of the near-infrared band is the most common source of error. It is B8 on Sentinel-2, B5 on Landsat 8 and B4 on LISS-IV. Check the band table before you type a formula.

LISS-IV, the high-resolution camera on the Indian satellites Resourcesat-2 and 2A, has only three multispectral bands: green, red and near-infrared, at about 5.8 m. It has no blue and no shortwave infrared band. NDVI and the green and NIR version of NDWI work on it. MNDWI, NDBI, NDMI and NBR need a SWIR band, so they cannot be calculated from LISS-IV alone. LISS-III on the same satellites does have a SWIR band, but at a coarser pixel size.

The name NDWI is used for two different indices. McFeeters defined it with green and near-infrared, as in the table above. Gao defined a moisture index with near-infrared and shortwave infrared, which is listed here as NDMI. Papers use both names, so always check the formula in the source.

Reading the values

NDVI values give a rough guide to the surface. The ranges change with the sensor, the season and the scene, so treat them as a starting point and look at the imagery.

NDVITypical surface
Below 0Water, snow or cloud
0 to 0.1Bare rock, sand and many built surfaces
0.1 to 0.3Sparse vegetation, dry grass and some crops
0.3 to 0.6Moderate vegetation
Above 0.6Dense, healthy vegetation

For the water indices, positive values suggest water. For NDBI, positive values suggest built-up or bare land. A threshold such as zero is only a start, and you should check it against the image.

Why variants exist

Soil in the pixel

In sparse vegetation, the bare soil between plants affects NDVI. The Soil Adjusted Vegetation Index adds a correction factor L:

SAVI = ((NIR - Red) / (NIR + Red + L)) × (1 + L)

A common value of L is 0.5. SAVI suits dry areas with sparse cover.

Atmosphere and dense canopies

NDVI also saturates in dense vegetation, so a very green forest and a moderately green one can have almost the same value. The Enhanced Vegetation Index uses the blue band to reduce atmospheric effects and responds better over dense canopy:

EVI = 2.5 × (NIR − Red) / (NIR + 6 × Red − 7.5 × Blue + 1)

EVI is written for reflectance between 0 and 1, so convert the values first.

Water, built-up land and burns

MNDWI replaces the near-infrared in NDWI with a shortwave infrared band. Built-up surfaces reflect near-infrared well, and with NDWI they can be mistaken for water. Replacing the band reduces that confusion.

NDBI is positive when shortwave infrared reflectance is higher than near-infrared, which is typical of built surfaces and some bare soil. Its values are small and it separates built land from bare soil poorly.

NBR is used for fire. Burned ground drops in near-infrared and rises in shortwave infrared. The difference between NBR before and after a fire, called dNBR, is used as a measure of burn severity.

Example: four places in Bengaluru

The table gives index values from the Sentinel-2 scene of 15 March 2025, at the four sites used in the note on spectral signatures. Each is the mean of a 3 by 3 pixel window.

SiteNDVINDWIMNDWINDBINBR
Cubbon Park, tree cover0.80−0.71−0.54−0.280.56
Ulsoor Lake, open water−0.110.360.74−0.510.55
Railway station area, built-up0.17−0.21−0.260.060.00
Airport, runway and apron0.21−0.28−0.23−0.050.11

The values show how each index behaves.

  • NDVI is high only for the tree cover. The built-up site and the airport, at 0.17 and 0.21, are close to each other and to sparse vegetation.
  • MNDWI is strongly positive only for the lake, at 0.74.
  • NDBI is positive only at the railway station, and only just. A difference of about 0.1 between built-up and airport land is small.
  • NBR is about 0.55 for both the lake and the trees. It is built to detect fire, and it cannot separate water from vegetation. Using an index for a question it was not designed for gives answers that look reasonable and are wrong.

Over the whole 24 by 16 kilometre window of the QGIS series, the mean NDVI is about 0.28, and about 18 percent of the cells have an NDVI of 0.5 or more.

A workflow you can trust

  1. Choose the index for the question, and write down its formula and the band numbers for your sensor.
  2. Use surface reflectance. Apply the scale factor, and an offset only if your files have one. A dark target such as a clear lake in the shortwave infrared should read close to zero.
  3. Mask clouds, cloud shadow and, where needed, water.
  4. Calculate the index and check the range. Values outside minus 1 to plus 1 point to a mistake.
  5. Display it with a sensible colour ramp and compare it with the true colour image.
  6. If you classify it, choose thresholds from the histogram and from the image.
  7. When you compare dates, use the same season and the same sensor.

In QGIS the same calculation is one expression in the Raster Calculator. With the Sentinel-2 files used in this series, whose values need only division by 10,000, NDVI is:

("S2_B08@1" - "S2_B04@1") / ("S2_B08@1" + "S2_B04@1")

The division by 10,000 cancels in a normalised difference, so it matters only for indices with constants in them, such as EVI and SAVI. If a cell has zero in both bands, the result is empty, which is the right outcome.

Common mistakes

  • Using the wrong near-infrared band number for the sensor.
  • Mixing up the two indices called NDWI.
  • Calculating from digital numbers that carry an offset.
  • Comparing values from different seasons or sensors.
  • Applying one threshold to every scene.
  • Using an index for a question it was not built for.
  • Forgetting to mask cloud, shadow and water.

Glossary

TermMeaning
Spectral indexA formula that combines bands into one value per pixel
Normalised differenceThe difference of two bands divided by their sum
NDVIAn index of green vegetation
MNDWIA water index using green and shortwave infrared
SaturationThe loss of response at high values, as NDVI shows over dense canopy
dNBRThe change in NBR between two dates, used for burn severity

Practise it

The tutorial Band combinations and spectral indices calculates NDVI, NDWI, MNDWI, NDBI and NBR in the Raster Calculator. The tutorial Raster analysis reclassifies NDVI, and the capstone uses NDVI to find change.

Test yourself

1. Why do normalised differences help in uneven lighting?

A factor that darkens every band equally, such as shadow, cancels when you divide by the sum, so index values stay closer than the raw bands.

2. Which band is near-infrared on Sentinel-2 and on Landsat 8?

B8 on Sentinel-2 and B5 on Landsat 8.

3. Why does MNDWI often work better than NDWI in a city?

NDWI uses the near-infrared, where built surfaces reflect well, so some can look like water. MNDWI uses the shortwave infrared, which separates them better.

Quick quiz

1. What range does a normalised difference index have?
2. Which index is built to detect burned areas?
3. Why can an offset left in the data spoil an index?
0 of 3 answered

Key takeaways