By Andy May
Albedo (or Earth’s global reflectivity) in this post is defined as the amount of solar shortwave (SW) radiation that the Earth reflects into space, as measured at the top of the atmosphere or TOA, divided by the total solar radiation reaching Earth also measured at the TOA. In the CERES EBAF satellite context (Loeb et al., 2009, 2018, 2021), and using their variable names, this is toa_sw_all_mon divided by solar_mon, where “mon” means monthly and “sw” means shortwave radiation. In this post we compute yearly global latitude-area-weighted means from the monthly values for most of the illustrations to avoid seasonal effects, which are very large. As seen in figure 1, there is a distinct albedo peak that falls roughly between 2004 and 2007 and afterward the albedo falls until 2025, with a second smaller, but still dramatic peak in 2020.

Nearly all CERES EBAF variables show an anomaly during the 2004-2007 albedo peak, which falls in the middle of the famous pause in global warming. Notable exceptions are the cloud radiative effect (CRE) variables. The albedo peak anomaly, at least according to CERES EBAF, does not appear to be a cloud feature, but a surface feature.
I need to mention here that CERES EBAF variables have been adjusted, at the TOA, so that the Earth Energy Imbalance (EEI) equals that calculated from changes in ocean heat content. This is explained further in another post. Thus, the measurements in this post are not raw satellite measurements but are from a model.
It is interesting that the emitted longwave radiation at the TOA (lower left, figure 1) is also anomalous during this peak. LW (longwave) downwelling radiation is high in this period, but shows no distinct anomaly, as would be expected if cloud cover caused the albedo anomaly. All the trends given in the figures are ordinary least squares (OLS) linear trends.
Solar incoming SW

The increasing solar SW in the Southern Hemisphere in figure 2 is due to changing orbital precession, as explained in figure 4 in this post. Figure 2 is intended to show how small the solar cycle signal is in comparison to seasonal effects. The cycle is extracted by creating 2001-2025 monthly insolation means and then subtracting them from each respective monthly mean. The lower left graph shows the calendar year average solar SW at the TOA. The solar cycles are barely visible in this graph, but it shows the increasing insolation trend from around 2004 to the solar cycle 25 peak. Clearly over small time periods it is not a good idea to conflate solar cycles with insolation.
Comparing figures 1 and 2, we can see that reflected SW is a function of changing albedo and not incoming radiation changes. However, absorbed SW (lower right figure 1) at the surface does track the changing annual insolation (lower left, figure 2), as expected. I was a bit surprised that outgoing LW increased during the albedo peak. One of my earlier posts explains that the net TOA radiation (positive inward, toa_net_all) which is equal to the inward solar radiation in (figure 2) minus the toa_sw_all minus toa_lw_all (both from figure 1) can be used to compute an estimate of ECS. Computing ECS (equilibrium climate sensitivity to CO2) from observations necessarily assumes all other factors do not change over the measurement period. This is clearly not true over this 25-year measurement period. Thus, albedo changes (regardless of the reason) affect any ECS estimate made.
Clouds
The short-term change in albedo seen in figure 1 could be assumed to be due to changing cloud cover and cloud characteristics. The CERES EBAF variables related to clouds are summarized in figures 3 and 4.

Figure 3 shows the global cloud area, cloud top pressure and temperature, and a map of global mean cloud area per grid cell. The remaining variable is the cloud optical depth or tau (τ), which is shown in figure 4.

As the graph in figure 4 shows, the long-term trend in τ is zero, although there is an unremarkable peak within the albedo peak period. Oddly, while the albedo peak shows distinctly in most CERES EBAF variables, it is high but unremarkable in the cloud-specific variables. It coincides with a longwave toa-out anomaly as shown in figure 1, as well as a matching surface upwelling longwave anomaly that is not shown (see the PowerPoints slides linked at the end of this post for details). It also falls in a surface downwelling SW anomaly.
It is important to mention that the lack of a cloud anomaly in the albedo anomaly period does not necessarily mean one does not exist. The CERES cloud variables rely heavily on MODIS and are not computed solely in the general CERES EBAF inversion. The MODIS data has had problems with cross talk and drift as explained in Moeller and Frey, 2017 (see their figure 1). So, we cannot exclude the possibility that the CRE variables during the albedo anomaly period have data or processing problems that do not affect the other variables.
Surface
The remaining set of CERES EBAF variables are the surface or “sfc” variables. I do not think any of the CERES EBAF surface variables are measured, they are all modeled, especially the upwelling and downwelling SW variables. Two surface SW variables, the SW reflected by the surface under clear skies and all skies, are shown in figure 5. The albedo anomaly shows up prominently in these graphs, unlike in the cloud graphs.

Within the CERES-EBAF framework, the albedo anomaly appears in surface-related variables rather than cloud variables. Whether this reflects a physical surface change or a data processing artifact remains unclear. The variable sfc_net_sw is the net downward SW flux and it should reflect the albedo anomaly as a dip, which it does as shown in figure 6.

The variable graphed in figure 6 has two components and is equal to: sfc_sw_down_all – sfc_sw_up_all. The means of these two variables are shown in figure 7.

Both the surface incoming and reflected SW graphs show anomalies in the albedo peak period, but they are offset with the incoming anomaly occurring earlier. The incoming anomaly coincides with a yearly mean solar minimum and the trend in the incoming SW graph in figure 7 is unsurprisingly similar to the incoming solar radiation shown in figure 2. The upper reflected SW graph is similar in magnitude (~0.3 W/m2) and shape to the albedo peak shown in figure 1. Thus, just as Earth approached the solar cycle 23/24 minimum, the surface albedo increased anomalously. I cannot explain this but find it very interesting.
Without this information, one would think that the albedo peak between 2004 and 2007 was due to a change in cloud cover, but we see no cloud cover anomaly at that time. The most visible anomaly is the surface albedo anomaly, and it shows up in the SW data and in LW data. The next obvious suspect is a change in sea ice, but the NSIDC data shows no anomaly at that time as shown in figure 8.

In fact, the albedo peak from 2004-2007 shows a reduction in global sea ice area, which is the opposite of what we expect. Albedo anomalies can arise from snow cover, vegetation changes, or regionally. Figure 8 shows just one of many possible surface variables that could have caused the anomaly.
CERES-EBAF Computation Anomalies
Most of the CERES-EBAF variables match the descriptions in the documentation, but there are some exceptions. Two are highlighted in figure 9.

The difference between the total supplied surface cloud radiative effect (CRE) and the value computed from summing the net lw and sw at the surface is large, 1.47 W/m2. Although the variable sfc_cre_net_sw is part of the definition of sfc_cre_net_tot, the difference between net_sw_all (skies) – net_sw_clr_t (clear sky for the total cell area) and sfc_cre_net_sw is different and smaller than the first difference.
Another odd documentation problem is the definition of toa_cre_sw. It is defined as “all-sky flux minus clear-sky (for total region) flux.” Using CERES EBAF variable names, that is, toa_sw_all – toa_sw_clr_t, yet the value in the EBAF file is the negative of the value defined. Toa_sw_all (outgoing all-sky SW) is always larger than toa_sw_clr_t, thus the definition defines a positive number, not the negative sw_cre_sw we see in the EBAF dataset. Incoming SW (solar_mon in figure 2) at the TOA is the solar flux coming in, the values whose name begins with “toa_sw” are all supposed to be positive outgoing flux. Thus, toa_sw_all will always be larger than toa_sw_clr_t and toa_cre_sw should be positive using the definition, but what we get is a negative number. This is OK, but the documentation should be fixed.
All these problems were reported to the CERES EBAF team on May 18. I received an acknowledgement that they received my email and their opinion on the smaller sfc_cre_net_sw discrepancy. I asked about the larger problems by email, but was told the critical person needed to answer my questions was on vacation. If I get a reply on these issues, I will update this post and put up a separate post letting all of you know what the CERES team says. I don’t think I need to wait, as I have investigated all this in every way I can imagine at this point.
They think the smaller sfc_cre_net_sw problem might be due to computational differences in how the area-weighted global means are calculated. Perhaps, but as you can see in the supplementary information to this post (link below), all other computational cross checks of the 41 CERES EBAF variables match to two or more decimal places. One can reasonably ask, why do these two exceptions exist?
As a further check, I ran a program against the data to look for missing grid cell values, thinking that if some of the variables had missing values in some cells and others did not, that could cause the discrepancy. I only found one variable that had any missing cell values: sfc_cre_net_tot_mon, which is the surface CRE net total (downward) radiation flux variable. It had 10 missing values in the 25 years examined and it was the only variable with any missing values. Each year of each grid has 64,800 grid cells, so one in 64,800 is nothing. The ten over 25 years are not enough to explain the 1.5 W/m2 difference between the variable and its computational equivalent, but it might signal another problem. The cloud radiative effect variables come from a model and not direct measurements. In any case, I notified the CERES team of the problem, we’ll see what they find out. This sort of problem is how science advances.
Discussion
The albedo peak from 2004-2007 is very apparent in the CERES EBAF surface radiation data. In the period studied, 2001-2025, it contains the maximum albedo and the maximum surface reflected SW. This is also the period with the minimum SW absorbed by the surface, both under clear skies and all sky conditions. This would normally suggest more snow and ice than normal, but we do not observe a sea-ice anomaly in that period.
Oddly, it is also the time when all sky longwave radiation up from the surface was maximal, both under clear and all skies. Downward SW is low during this period but corresponds to low input from the Sun and it is a time when solar output is declining. Longwave flux down to the surface is high, but not unusually so.
The calculation discrepancies observed appear to be in the CRE variables alone and probably do not affect the other variables, at least as far as I can tell. The cloud effect (CRE) variables do not show an anomaly during this period, but do show one afterward, around 2008-2012 or so. I do not understand these discrepancies; they could be real or computational problems but wanted to document them. This essay is just a brief look at the more interesting things I noticed going through all the CERES EBAF data.
If you are interested in more of the details I uncovered in my study, you can download my PowerPoint slide notes on the 41 CERES EBAF variables here.
Works Cited
Loeb, N. G., Doelling, D., Wang, H., Su, W., Nguyen, C., Corbett, J., & Liang, L. (2018). Clouds and the Earth’s Radiant Energy System (CERES) Energy Balanced and Filled (EBAF) Top-of-Atmosphere (TOA) Edition-4.0 Data Product. Journal of Climate, 31(2). Retrieved from https://journals.ametsoc.org/view/journals/clim/31/2/jcli-d-17-0208.1.xml
Loeb, N. G., Johnson, G. C., Thorsen, T. J., Lyman, J. M., Rose, F. G., & Kato, S. (2021). Satellite and Ocean Data Reveal Marked Increase in Earth’s Heating Rate. Geophysical Research Letters, 48(13). https://doi.org/10.1029/2021GL093047
Loeb, N. G., Wielicki, B. A., Doelling, D. R., Smith, G. L., Keyes, D. F., Kato, S., . . . T. Wong, 2. (2009). Toward Optimal Closure of the Earth’s Top-of-Atmosphere Radiation Budget. J. Climate, 22, 748-766. https://doi.org/10.1175/2008JCLI2637.1
Earth’s albedo is so complicated, one needs to reflect on it.
That’s a shining example of an enlightening comment.
https://www.youtube.com/watch?v=rZGK7UeatMQ
I still have this LP (purchased in 1976).
One certainly needs to integrate the reflection into the discussion. Lambert would be disappointed if it wasn’t.
The CERES team suggested a potential difference in my latitude weighted global mean calculation and theirs might account for the differences and they sent me a link to their Fortran latitude weight calculation function. I used their algorithm (after translating it into R) to compare their weights to mine. They are identical as you can see in the attached table. Although we use a different computation method, it turns out we compute the same thing, use the same ellipsoid, and we both use WGS-84. I use the true ellipsoidal surface area, and they use a geodetic latitude transform, but we get the same weights in the end.
FYI, this table is only readable (but still not copyable) if you right-click (Windows) and “open image in new tab”. Then you can click to expand to full size. Not sure how usable this really is.
Sorry, here is a link to the original spreadsheet:
https://andymaypetrophysicist.com/wp-content/uploads/2026/05/CERES_latitude_weight_comparison.xlsx
It has the weight for every latitude.
Those area weighting COS(Latitude * pi()/180), when applied to 6371^2 to every 10th latitude sums to less of the earth area (467 million km2) after all areas are summed. When each 10th latitude average temperature is converted to energy density (watts per square meter), multiplied to the weighted area then summed / divided by all areas summed. Leads to an exaggerated global mean temperature by 1 degree C (15.58 degrees C) May 22nd. Weighting COS(RADIANS(Latitude) * 180/189) =0.0830 for 89.5 latitude (for all 10th latitudes sums up to 489 million km2). This gives global mean temperature as normal 14.8 degrees C (non area weighted 5.75 degrees C (normal 7C (max on June 21st 7.6C)). For 510 million km COS(Latitude * pi()/197.7) based on observed temperature data, leads to a colder temperature 13.54 degrees C (with May 22nd observations). What you have presented is from models(opinion written in a program). Incoming solar for average (week 21 2025 til week 20 2026) 340.54 (107.45 is reflected solar minus 105.20 stratospheric thermal heat) + 233.10 (troposphere thermal heat) + (105.20 stratospheric thermal heat). 340.54 In 342.79 out. This is year observations non model calculations. In symmetry with solar input. Jan 1408/earth 1317 and July sun 1317/earth 1408 (all in watts per square meter).
OK, this is a difficult concept to understand. Area weighting matters and must be done.
The correct geometric weight for a regular lat-long grid is proportional to the cosine, the absolute sum (467 vs 510 million sq. km) doesn’t matter, it just reflects how you approximate the spheroid.
If you want the exact Earth area for any spheroid, sum the latitude-weighted areas for each latitude band, don’t sum the weights. Changing the cosine argument isn’t correct, it is just a fudge factor.
The weights are not areas; they are just coefficients for cell (or band) area.
Forgot to say look on my X account @LindsayyuleS. You’ll see my chat with Grok about this. Grok gave me the COS(RADIANS(Latitude) * 180/189) version after our discussion.
I can appreciate the amount of effort that Andy May put into the above report and its wealth of details.
However, the first thing that jumped out to me was the upper right graph of his Figure 1, which shows the variation of albedo, as a percentage, from 2001 to 2025 that ranges from a high of about 31.45 % to a low of about 31.23 %, with a stated computed trend of -0.0038 %/yr.
Then I subsequently read this disclaimer (good for you, Andy!):
“I need to mention here that CERES EBAF variables have been adjusted, at the TOA, so that the Earth Energy Imbalance (EEI) equals that calculated from changes in ocean heat content. . . . Thus, the measurements in this post are not raw satellite measurements but are from a model.” (my bold emphasis added)
FWIW, Google’s AI bot states the following:
“The Clouds and the Earth’s Radiant Energy System (CERES) instrument measures shortwave reflected sunlight to determine Earth’s albedo. It features an absolute radiometric accuracy ~1% (at a 1-sigma confidence level) for shortwave measurements and a decadal calibration stability of better than ~ 0.2%.”
Hence it appears the reporting of albedo percentage values to two decimal places in the above article is the sole result of the stated modeling and is not representative of the actual accuracy of the CERES satellite instrumentation and its direct data reduction.
Oh well.
at a 1-sigma confidence level
======
not very confident.
The trend is in the data. The adjustment made to match the ocean heat content is a one-time adjustment as I understand it. Thus, it affects the absolute value of the number plotted and the computed albedo, but I don’t think the adjustment affects the trends. However, your point that we are dealing with numbers that are below the total error in the measurements is well taken and true.
Also, my comparisons to ERSST SST are not quite valid since SST and the CERES-EBAF are both related to ocean heat content, thus they are not independent.
One of my goals in writing these posts on CERES is to point out that CERES is not a collection of satellite measurements, the variables in the dataset are model output. Too many ignore this and think of the variables as measurements.
Well said!
The adjustments were based on alignment ahead of AR6 and used a decade of ARGO data from 2005 to 2015.
The emerging problem for AR7 is that the Net radiation over the Southern Hemisphere is now exceeding the Ocean Heat Content by a large margin.
image-98-720×403.png (720×403)
The gap is now 140E21 joules so a big deal. The bigger deal is that Ocean Heat Content in the SH is decelerating and could be declining as early as 2030. At that point, the CO2 fairy tale collapses because Global Warming™ becomes just NH warming.
When I see a table with numbers expressed with 5 significant digits, my reflex reaction asks what the plausible measurement uncertainty is. Geoff S
The point was not to show significant digits, in the sense of uncertainty. The point was to show that the difference in two different calculations using the same model output was too large. The issue was precision, not uncertainty.
Excellent work Andy…just a thought on the missing albedo anomaly…maybe Northern Hemisphere snow cover ? Or duration of snow cover ?
There are a lot of variables that affect surface albedo, certainly snow cover is one important one.
Thanks, Andy. I tried to replicate your findings, but what I get is totally different. Here’s the monthly and annual TOA albedo when I calculate them.
To determine which is more likely correct, I noted that your mean albedo value is ~0.31, while mine is a bit less than ~ 0.29. A search online reveals the following:
Source
I also find the following, from Prof. Eliot Jacobson
His looks like mine, and has an average of ~ 0.29.
One possiblity is that you are not using the correct data. About a month ago, CERES announced errors in some of their datasets, and requested that all users download the corrected datasets.
In any case, one of us is using incorrect data, and I don’t think it’s me.
My best to you and yours,
w.
You guys are way off. Vangelis had it at 0.39 😉
Leafing through the CRC Handbook of Chemistry and Physics provides one with a range of estimates for the albedo, which is rarely defined precisely. Inasmuch as the term albedo was originally developed for quantifying the apparent brightness of celestial bodies, without liquid water, as observed by astronomers on Earth, albedo doesn’t capture even diffuse reflections that don’t have ray paths that bring reflections back to the observing telescope.
CRC Handbook! Mine is only 12 feet away from me. But, hasn’t been opened in at least 30 years. Its an object d’art.
Hi Willis,
I’ll look deeper into it, but I suspect it is the different ways we are calculating it. Remember, I am using calendar year means. I don’t know how you are computing it, but Jacobson is using a 36-month running mean which will give a different answer. Attached are the exact numbers I am using.
Using calendar years has some advantages. They preserve the units and the actual values, as opposed to moving averages and/or monthly anomalies. Within a few milliseconds, they each capture all the seasons for a year. Not sure what you used. See if you can reproduce my yearly means.
Also, it can depend upon the frequencies included. I use SW/total solar input. This does not match completely since solar radiation includes some LW.
With all the variables, if you are interested in the actual albedo, the best way to look at it is the albedo is about 30%. The possible errors are more than +-1%.
The CERES data I have was downloaded April 8, 2026, it should be current.
In any case, I’ll look at this issue in more detail and get back to you. I suspect it is the calculation procedure, given such a small difference. Look at figure 2 to see what I’m talking about.
Willis,
It turned out to be simple. Your calculation is essentially the global mean toa_sw_all/the mean solar input at the average Earth orbit ~340.2 or so. This is a decent number but not precise.
I actually divide the SpatRasters, grid cell by grid cell, call it [Map(toa_sw_all(x,y)/Map(solar_mon(x,y)] and then take the global mean of the resulting cell by cell albedo SpatRaster.
This is not the same as your calculation which is essentially [global mean(toa_sw_all)/global mean (solar_mon)].
The two ratios are not the same. I suspect mine is closer to reality, since I do the calculation grid cell by grid cell, but we could debate that. I suspect the true global mean albedo is closer to 31-32 than 29-30, but given the accuracy of the data we are dealing with, it is hard to tell.
Both calculation methods can be supported, but it probably should be done cell-by-cell. Let me know if you want my code, I’d be happy to send it to you.
Thanks, Andy. In general, taking averages of gridcell ratios as you are doing is less accurate than taking the average of the numerator and the denominator and then taking the ratio of the two.
I asked perplexity.ai to explain this. See below.
Best to you,
w.
===
Here’s my question:
Here’s the answer:
===
Method (a) is the mathematically correct way to get the global mean albedo: compute the area‑weighted mean reflected flux and the area‑weighted mean incoming flux, then take their ratio.
Method (b) generally gives a biased result unless every gridcell has the same incoming sunshine.
Why (a) is the right global mean
Define for each gridcell (i):
· (R_i): time‑mean reflected shortwave at TOA (e.g. W/m²)
· (S_i): time‑mean incoming shortwave at TOA (same units)
· (A_i): area of the gridcell
Then by definition, the global‑mean planetary albedo is
This is exactly your option (a): area‑weighted mean (R) divided by area‑weighted mean (S).
Why (b) differs
Option (b) computes per‑cell albedo (α_i = R_i / S_i), then takes an area‑weighted mean of (i):
This equals α_global only if (S_i) is constant across all gridcells (or uncorrelated with (α_i) in a very particular way), which is not true for Earth because insolation varies strongly with latitude, season, and clouds. High‑latitude and cloudy regions tend to have different (S_i) and (α _i) than low‑latitude clear regions, so a simple area average of (α_i) overweights regions with low (S_i) relative to their contribution to the global energy budget.
A simple toy example:
· Cell 1 (tropics): (S_1 = 400), (α_1 = 0.25) → (R_1 = 100).
· Cell 2 (high lat): (S_2 = 200), (α_2 = 0.50) → (R_2 = 100).
· Equal areas.
Then
but the simple area mean albedo is
Option (b) overestimates the global mean because it gives the low‑insolation, high‑albedo region the same weight as the high‑insolation, low‑albedo region, even though it reflects less absolute power.
Interpreting your 0.29 vs 0.31
Your ~0.29 from method (a) is consistent with commonly cited estimates of Earth’s planetary albedo (~0.29–0.31, depending on period and dataset). The ~0.31 from method (b) is exactly the kind of upward bias you expect when you area‑average per‑cell albedos without weighting by incoming flux.
So:
· Use (a) for global mean planetary albedo relevant to energy balance.
· Use (b) only if you explicitly want the unweighted area‑mean of local albedos as a descriptive map statistic, not as an energy‑correct global albedo.
===
I have ordered new CERES datasets, I suspect mine are OK, they are only 6 weeks old, but I’ll check that out. Thanks for letting me know about the recent problems.
Hi Willis,
I did a deep dive into calculating albedo using CERES EBAF data and I’m convinced that the cell-by-cell albedo global mean is best. It was too much for a comment, so I wrote a post about it. See here:
https://andymaypetrophysicist.com/2026/05/23/calculating-earths-albedo-part-2/
I’ve also put the post in the WUWT queue, it will appear later today here.
I did download the latest CERES-EBAF data last night, it appears to be the same as what had. I’ll use the new datasets from now on and look for differences, but it appears I already had the latest.
The most likely candidate for the cause of this change in albedo is a significant reduction in sulfur emissions from global shipping. Since 2010 80% of SO2 emissions from shipping has been removed. Before 2010 you could burn tires on the open ocean to make steam if you wanted to. The reality is that we are still under approximately 0.2 degrees of sulfate cooling and Antarctic Sea Ice should have never grown to the extent it did over the last 4 decades. Below is a model of SO2 emissions and the negative forcing that has been at play. The step change in the Lower Stratosphere is a dead ringer in evidence that this change is a radiative change somewhere between the surface and the LS.
There are several possible causes of the sight decline in the earth’s albedo. Since 1900 many billion pounds of black rubber particles have been released from tires. Where do black particles go? The answer is: anywhere and everywhere. There is brown dust particles from disc brakes. There are black particles from the asphalt of the roads and highways.
Cars and truck traffic stirs up a lot of dust
Many countries have coal-fired power plants and these are not using clean coal technology.
Every day on the TV I see that there are wild fires in many countries. These fires release black soot particles. I also videos of dust storms in deserts. I saw a satellite video of dust storm coming out of the Sahara desert that traveled across the Atlantic ocean to the Caribbean islands. I also see on the TV there are large volcanos spewing enormous amounts of dust and ash which eventually settles on the surrounding ground.
Andy , we should talk — spectra .
I’m preparing presenting at meetup.com/sv-fig/events/314708616/
tomorrow and , but I’d really like to have someone point to an asserted Schwarzschild spectrum for the planet to calculate the implied Kelvin temperature as discussed in CoSy.com/y26/NL202603.html#278.7+-2.3 .
I link you in my discussion of van Wijngaarden & Happer .
Andy, Is the implied brightness in Fig. 4 depicting the brightness for a nadir satellite view where one is seeing a narrow solid-angle of retro-reflection, or does it represent the hemispherical BRDF where the total reflection is obtained by integrating over the entire hemisphere for all angle of incidence? Is the implied brightness for the sun at a particular equatorial crossing time for satellite, or does it represent an average for the total time a single point on the cloud surface is illuminated by the sun? Inasmuch as the clouds experience maximum illumination at solar noon, and is lower both at sunrise and sunset, shouldn’t that be specified with a standard deviation to account for the variance?