This site has moved to
Please visit the new site and update any bookmarks you have. 


How is the percentage of cloud cover calculated in a Landsat scene?


The C Function of Mask (CFMask) algorithm is used in Landsat Collection 1 Level-1 data processing. This algorithm provides a full-image “Scene Cloud Cover” estimation of the percentage of cloud cover calculated over an entire Landsat scene.  

Also included is Land Cloud Cover, which is determined by calculating the percentage of clouds over only the land pixels in a scene. A mask used to discriminate land from water is derived from the NOAA World Vector Shoreline Dataset.

Both cloud cover percentages are listed in the EarthExplorer metadata, as well as in the Landsat Collection 1 Level-1 metadata (MTL.txt) file. 

This 2017 paper describes the comparison of the various cloud detection algorithms used for Landsat data products, and provides important information about CFMask: Foga, S., Scaramuzza, P.L., Guo, S., Zhu, Z., Dilley, R.D., Beckmann, T., Schmidt, G.L., Dwyer, J.L., Hughes, M.J., Laue, B. (2017). Cloud detection algorithm comparison and validation for operational Landsat data products. Remote Sensing of Environment, 194, 379-390. doi: 10.1016/j.rse.2017.03.026.

Landsat cloud cover assessment (CCA) Validation data can be accessed from the Landsat Cloud Cover Assessment Validation Datasets web page.


Historical Cloud Cover Algorithms

Before Collection 1 Level-1 processing, there were several cloud cover algorithms used.
The information below is for historical purposes only. 

Landsat 1-5 MSS

In late 2013, a scene-based automated CCA was implemented for Landsat 1-5 MSS data. The CCA is determined using the output of a trained Cubist model. A 0-100 bit-mask is created using the model output (0=fill, 1=non-cloud, 100=cloud; 2-99=likelihood of the pixel being a cloud based on the model prediction). A cut value is applied to the model results to help refine the final score where the cutoff defaults to 10. The scene cloud score is created by taking the number of pixels in the scene that have a cloud value exceeding the cut value, and dividing the result by the total number of scene pixels. The final cloud score is stored in the “Cloud Cover” field within the metadata (MTL) file.

Landsat 4-5 TM/Landsat 7 ETM+

The percentage of cloud cover for Landsat 4-5 TM and Landsat 7 ETM+ data is calculated using the Landsat 7 Automatic Cloud Cover Assessment (ACCA) algorithm. The L7 ACCA algorithm is described in these Landsat Science Team Meeting slides as well as the original L7 ACCA publication. This algorithm uses a number of spectral tests and is based on the premise that clouds are brighter and colder than most of the Earth’s surface. The ACCA, however, does not perform as well over snow and ice due to their similar spectral response in multiple Landsat bands. ACCA works well in most cases, but occasionally, temperature inversions occur and invalid cloud cover assessments may result. While there are also intermittent problems with the ACCA detection of popcorn clouds and haze, the ACCA algorithm maintains a higher degree of overall accuracy relative to the previous methods employed for past Landsat processing systems.

Landsat 8 OLI/TIRS

The Landsat 8 CCA system uses multiple algorithms to detect clouds in scene data. Each algorithm creates its own pixel mask; the masks are then merged to create the final Level-1 Quality Assessment (QA) Band. Landsat 8 CCA system algorithms include:

  • ACCA

The Landsat 8 ACCA algorithm used in Landsat 8 is the same algorithm used in TM/ETM+ cloud assessment, but it creates a full mask instead of a scene-wide score, and is used to detect land cover types as well as clouds. ACCA is responsible for filling the water and snow/ice bits in the Landsat 8 band. The L8 ACCA algorithm is described in these Landsat Science Team Meeting slides as wells as the original L8 ACCA publication.

  • See-5 CCA

The See-5 CCA algorithm is a large decision tree that runs 244 threshold tests using inputs from OLI bands 2-7. See-5 CCA generates a confidence score that is used to label the pixel as low, medium, or high confidence cloud. See-5 is responsible for filling the cloud and cloud confidence bits in the Landsat 8 QA band.

  • Cirrus CCA

Landsat 8 OLI contains a cirrus detection band (Band 9) centered on shortwave infrared light at 1.38 µm. Light at this wavelength is strongly absorbed by water vapor in the Earth’s atmosphere and therefore cannot reflect back to the satellite. Cirrus clouds consist of ice crystals and are high in the atmosphere and thus above most of the water vapor, so they are strong reflectors of this 1.38 µm radiation. The Cirrus CCA algorithm fills the cirrus bit in the Landsat QA band using information from OLI Band 9.  


The Artificial Thermal (AT) variant of the ACCA algorithm is intended for use only when thermal data from the TIRS instrument are not available. It creates the AT band by using reflectance from Bands 2-7 and a statistical model to approximate the brightness temperature of the missing thermal band. Once the AT band is created, a modified ACCA algorithm uses it as a replacement for brightness temperature. AT-ACCA is used to fill water and snow/ice bits in the Landsat 8 QA band only when TIRS data are not available.

Note: ACCA and AT-ACCA are never used together. If a thermal band exists, only ACCA was utilized.