Retail Methodology
Scope Boundary

This diagram communicates the scope boundary as aligned with the Food Loss and Waste Accounting and Reporting Standard[17]. Note that ReFED’s analysis also includes food sent to donations, although donations are not considered a destination within the Standard.
- NOTES
“Food Donation” has been added as a Destination
“Biomaterial Processing is referred to as “Industrial Uses” in our model
“Co/anaerobic digestion” is referred to as “Anaerobic digestion” in our model
“Controlled Combustion” is referred to as “Incineration” in our model
“Refuse/discards” is referred to as “Dumping” in our model
Calculations
Unsold Food Calculations
In ReFED’s data model, the following calculations are repeated for every state, year, and grocery retail food category before any aggregation is done.
Table 9. Calculations Performed to Quantify U.S. Retail Surplus Food Surplus
DATA ITEM |
DATA SOURCE OR CALCULATION |
EXAMPLE |
---|---|---|
US Dollars Sold |
Nielsen Retail Point-of Sale (POS) Data[38] |
$ __retail_example_us_dollars_sold__ __retail_example_refed_food_category__ sold by grocery retailers in __retail_example_state__ in __retail_example_year__ |
Tons Sold |
Nielsen Retail Point-of Sale (POS) Data[38] |
__retail_example_tons_sold__ tons __retail_example_refed_food_category__ sold by grocery retailers in __retail_example_state__ in __retail_example_year__ |
Unsold Food Rate |
According to USDA LAFA study, __retail_example_unsold_food_rate__% by weight of fresh __retail_example_refed_food_category__ goes unsold |
|
Tons Purchased by Retailers |
= Tons Sold / ( 100% - Unsold Food Rate ) |
= __retail_example_tons_sold__ tons sold / ( 100% - __retail_example_unsold_food_rate__% )
= __retail_example_tons_supply__ tons purchased by retailers
|
US Dollars Purchased by Retailers |
= US Dollars Sold / ( 100% - Unsold Food Rate) |
= $__retail_example_us_dollars_sold__ sold / ( 100% - __retail_example_unsold_food_rate__% )
= $__retail_example_us_dollars_supply__ retail value purchased from suppliers
|
Tons Unsold |
= Tons Purchased by Retailers - Tons Sold |
= __retail_example_tons_supply__ tons purchased - __retail_example_tons_sold__ tons sold
= __retail_example_tons_surplus__ tons unsold
|
US Dollars Unsold |
= US Dollars Purchased - US Dollars Sold |
= $__retail_example_us_dollars_supply__ retail value purchased - $__retail_example_us_dollars_sold__ sold
= $__retail_example_dollars_surplus__ unsold
|
Cause Calculations
Table 10. Calculations Performed to Quantify the Causes of U.S. Retail Surplus Food
DATA ITEM |
DATA SOURCE OR CALCULATION |
EXAMPLE |
---|---|---|
% Unsold Food due to Cause |
Expert Interviews Data[11]
See Appendix M
|
% Breakdown of retail unsold food causes for Produce:
Date label concerns: __retail_example_percent_surplus_due_to_cause_date_label_concerns__%
Equipment issues: __retail_example_percent_surplus_due_to_cause_equipment_issues__%
Food safety recall: __retail_example_percent_surplus_due_to_cause_food_safety_recall__%
Handling errors: __retail_example_percent_surplus_due_to_cause_handling_errors__%
Spoiled: __retail_example_percent_surplus_due_to_cause_spoiled__%
Theft: __retail_example_percent_surplus_due_to_cause_theft__%
—————————–
Total: 100%
|
Tons Unsold due to Cause |
= Tons Unsold * % Unsold Food due to Cause |
Date label concerns:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_date_label_concerns__%
= __retail_example_tons_surplus_due_to_cause_date_label_concerns__ tons
Equipment issues:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_equipment_issues__%
= __retail_example_tons_surplus_due_to_cause_equipment_issues__ tons
Food safety recall:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_food_safety_recall__%
= __retail_example_tons_surplus_due_to_cause_food_safety_recall__ tons
Handling errors:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_handling_errors__%
= __retail_example_tons_surplus_due_to_cause_handling_errors__ tons
Spoiled:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_spoiled__%
= __retail_example_tons_surplus_due_to_cause_spoiled__ tons
Theft:
= __retail_example_tons_surplus__ tons unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_theft__%
= __retail_example_tons_surplus_due_to_cause_theft__ tons
|
US Dollars Unsold due to Cause |
= US Dollars Unsold * % Unsold Food due to Cause |
Date label concerns:
= $__retail_example_dollars_surplus__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_date_label_concerns__%
= $__retail_example_us_dollars_surplus_due_to_cause_date_label_concerns__
Equipment issues:
= $__retail_example_dollars_surplus__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_equipment_issues__%
= $__retail_example_us_dollars_surplus_due_to_cause_equipment_issues__
Food safety recall:
= $__retail_example_dollars_surplus__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_food_safety_recall__%
= $__retail_example_us_dollars_surplus_due_to_cause_food_safety_recall__
Handling errors:
= $__retail_example_dollars_surplus__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_handling_errors__%
= $__retail_example_us_dollars_surplus_due_to_cause_handling_errors__
Spoiled:
= $__retail_example_dollars_surplus__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_spoiled__%
= $__retail_example_us_dollars_surplus_due_to_cause_spoiled__
Theft:
= $__money_var__ unsold __retail_example_refed_food_category__ * __retail_example_percent_surplus_due_to_cause_theft__%
= $__retail_example_us_dollars_surplus_due_to_cause_theft__
|
Destination Calculations
Table 11. Calculations Performed to Quantify the Destinations of U.S. Retail Surplus Food
DATA ITEM |
DATA SOURCE OR CALCULATION |
EXAMPLE |
|
---|---|---|---|
Destination Breakdown of Retail Surplus Food |
FWRA Surveys[25] |
According to the FWRA Surveys, this was the destination breakdown of retail surplus (See Appendix N):
% Donations: __retail_example_percent_donated__%
% Animal Feed: __retail_example_percent_animal_feed__%
% Biomaterials / processing: __retail_example_percent_biomaterial_processing__%
% Co/anaerobic Digestion: __retail_example_percent_anaerobically_digested__%
% Composting: __retail_example_percent_composted__%
% Land Application: __retail_example_percent_land_application__%
% Sewer: __retail_example_percent_sewer__%
% Trash: __retail_example_percent_trash__%
% Refuse / discards: __retail_example_percent_refuse_discards__%
————————————————
Total: 100%
|
|
% of Trash that is Landfilled vs Incinerated in __retail_example_state__ (Biocycle/Columbia University Survey[8]) (See Appendix Z) |
% of Trash that is Landfilled = __retail_example_percent_of_trash_landfilled__%
% of Trash that is Incinerated = __retail_example_percent_of_trash_incinerated__%
|
||
Breaking “Trash” into Landfill vs Incineration:
% Landfilled = % Trash * % of Trash that is Landfilled
% Incinerated = % Trash * % of Trash that is Incinerated
|
% Landfilled:
= __retail_example_percent_trash__% * __retail_example_percent_of_trash_landfilled__%
= __percent_var__%
% Incinerated:
= __retail_example_percent_trash__% * __retail_example_percent_of_trash_incinerated__%
= __percent_var__%
|
||
Tons Donated |
= Tons Surplus * % Donated |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_donated__% donated
= __retail_example_tons_donated__ tons __retail_example_refed_food_category__ donated
|
|
Tons Animal Feed |
= Tons Surplus * % Animal Feed |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_animal_feed__% animal feed
= __retail_example_tons_animal_feed__ tons __retail_example_refed_food_category__ sent to animal feed
|
|
Tons Biommaterials / processing |
= Tons Surplus * % Biomaterials / processing |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_biomaterial_processing__% biomaterials / processing
= __retail_example_tons_biomaterial_processing__ tons __retail_example_refed_food_category__ sent to biomaterials / processing
|
|
Tons Co/anaerobic digestion |
= Tons Surplus * % Co/anaerobic digestion |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_anaerobically_digested__% co/ anaerobic digestion
= __retail_example_tons_anaerobically_digested__ tons __retail_example_refed_food_category__ sent to co/anaerobic digestion
|
|
Tons Composted |
= Tons Surplus * % Composted |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_composted__% composted
= __retail_example_percent_composted__ tons __retail_example_refed_food_category__ composted
|
|
Tons Land application |
= Tons Surplus * % Land applications |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_land_application__% land application
= __retail_example_tons_land_application__ tons __retail_example_refed_food_category__ sent to land application
|
|
Tons Sewer |
= Tons Surplus * % Sewer |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __retail_example_percent_sewer__% disposed down the drain
= __retail_example_tons_sewer__ tons __retail_example_refed_food_category__ disposed via sewer
|
|
Tons Landfilled |
= Tons Surplus * % Landfilled |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __percent_var__% landfilled
= __retail_example_tons_landfilled__ tons ___retail_example_refed_food_category__ landfilled
|
|
Tons Incineration |
= Tons Surplus * % Incineration |
= __retail_example_tons_surplus__ tons __retail_example_refed_food_category__ surplus * __percent_var__% incinerated
= __retail_example_tons_incinerated__ tons __retail_example_refed_food_category__ incinerated
|
|
US Dollars Donated |
= US Dollars Surplus * % Donated |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_donated__% donated
= $__retail_example_us_dollars_donated__ US dollars __retail_example_refed_food_category__ donated
|
|
US Dollars Animal Feed |
= US Dollars Surplus * % Animal Feed |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_animal_feed__% animal feed
= $__retail_example_us_dollars_animal_feed__ US dollars __retail_example_refed_food_category__ sent to animal feed
|
|
US Dollars Biomaterials / processing |
= US Dollars Surplus * % Biomaterials / processing |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_biomaterial_processing__% biomaterials / processing
= $__retail_example_us_dollars_biomaterial_processing__ US dollars __retail_example_refed_food_category__ sent to biomaterials / processing
|
|
US Dollars Co/anaerobic digestion |
= US Dollars Surplus * % Co/anaerobic digestion |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_anaerobically_digested__% co/anaerobic digestion
= $__retail_example_us_dollars_anaerobically_digested__ US dollars __retail_example_refed_food_category__ sent to co/ anaerobic digestion
|
|
US Dollars Composted |
= US Dollars Surplus * % Composted |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_composted__% composted
= $__retail_example_us_dollars_composted__ US dollars __retail_example_refed_food_category__ composted
|
|
US Dollars Land application |
= US Dollars Surplus * % Land application |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_land_application__% land application
= $__retail_example_us_dollars_land_application__ US dollars __retail_example_refed_food_category__ sent to land application
|
|
US Dollars Sewer |
= US Dollars Surplus * % Sewer |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __retail_example_percent_sewer__% disposed down the drain
= $__retail_example_us_dollars_sewer__ US dollars __retail_example_refed_food_category__ disposed via sewer
|
|
US Dollars Landfilled |
= US Dollars Surplus * % Landfilled |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __percent_var__% landfilled
= $__retail_example_us_dollars_landfilled__ US dollars __retail_example_refed_food_category__ landfilled
|
|
US Dollars Incineration |
= US Dollars Surplus * % Incineration |
= $__retail_example_us_dollars_surplus__ US dollars __retail_example_refed_food_category__ surplus * __percent_var__% incinerated
= $__retail_example_us_dollars_incinerated__ US dollars __retail_example_refed_food_category__ incinerated
|
Data Sources and Limitations
Retail Value and Tons Sold
Nielsen data represents over 85% coverage of grocery retail sales in the U.S. Each year top U.S. grocery retailers report item level point-of-sale sales data to Nielsen[38], including information about each item such as the grocery chain where it was sold, the brand name of the product, the food classification (department, category, subcategory), the weight of food and packaging, and many other attributes. ReFED used this data to quantify the retail value and weight of food sold by grocery retailers in the U.S. by year, state, and food type. For more information about the weight data, see the U.S. Grocery Retail Dollar-to-Weight Conversion Factors report[39].
Nielsen provided point-of-sale data for the years 2016-2019. In order to estimate values for the missing years 2010-2015 each subcategory was extrapolated using category-level average year-over-year linear growth rates for both sales value and sales weight. Due to the high granularity of the categories, there were some cases where the growth rates were either extremely high or extremely low. To avoid unrealistic growth estimations over time within these outlier categories, department-level growth rates were used instead if a category had a growth rate ±15%. These outlier categories represent 0.5% of total sales.
Unsold Food Rates
In 2016, USDA released a study using data from 2012 that quantified the percentage by weight of grocery retail supplier purchases that are not sold to customers[5]. Five individual retailers contributed supplier purchase data for the study and these numbers were compared to customer sales data. The data covered 45 states and 2,900 locations. See Appendix K for a list of unsold food rates from this study. These numbers are very credible and valuable for estimating retail food surplus in the U.S. The only limitations of using this dataset for this purpose are that the data is from 2012, and it does not cover a significant portion of items sold at grocery stores (e.g. complex products like boxed dinners, frozen meals, bakery items, etc.). ReFED used the 2012 unsold food rates for all years 2010-2019 when it was available for specific categories, so any changes in these rates over time are not reflected in the results.
Unsold Food Causes
ReFED was not able to identify any publicly available data sources that quantify the causes of unsold food for grocery retailers in the U.S. As a placeholder until further research can be done, ReFED developed estimates using data from Leanpath on the causes of unutilized food in foodservice combined with review and input from grocery retail subject matter experts. Leanpath is a technology company that helps foodservice companies track, weigh and analyze the amount of food that is wasted in commercial kitchens. Leanpath customers also indicate the reason the food was not used as well as the food type when using Leanpath’s automated software system. For more information, see Appendix M and the Foodservice Methodology section.
Steps taken to adapt the Leanpath foodservice cause data to be relevant for grocery retail: 1. Map Leanpath’s food types to similar grocery retail food types (e.g., Produce, Dry goods). 2. Filter out data for causes that are not relevant to the retail sector (e.g., Catering overproduction is not relevant for a grocery retail Produce department). 3. Quantify the causal breakdown of unused food by food type. 4. Have grocery retail subject matter experts review the data and compare it with numbers they’re used to seeing in the field and make adjustments accordingly.
Unsold Food Destinations
In 2016 FWRA conducted a national food waste survey of grocery retailers in which 24 grocery retailers responded (35.3% of U.S. market share based on sales)[41]. ReFED used the data from this survey to quantify the percentage destination breakdown of unsold food from U.S. grocery retailers by year, state, and food type (See Appendix N).
There are a few limitations in using the data in this way. Because it was a national study for all food types, the data does not reflect geographic variations by state or variations in disposal patterns for different food types. Also, because it was a one-time study, the data does not provide insight into changes in disposal habits over time. See Appendix N for a breakdown of unsold food destinations.
Data Quality Evaluation
This rubric is designed to evaluate the quality of how each data source was utilized by ReFED to estimate food loss and waste. It is not meant to rate the quality of the study itself. See Appendix AA for more information about the ReFED Data Quality Rubric.
Table 12. Data Quality Evaluation for Food Waste Monitor Retail Sector
DATA |
SOURCE |
DATA QUALITY SCORE |
||||||
---|---|---|---|---|---|---|---|---|
CREDIBILITY |
UPDATE FREQUENCY |
COVERAGE |
FOOD TYPE |
GEOGRAPHY |
SCORE |
WEIGHT |
||
RETAIL SURPLUS DATA |
||||||||
US Dollars Sold |
Nielsen Point-of-sale (POS) |
4 |
5 |
5 |
5 |
5 |
High 24/5 = 4.8 |
25% |
Tons Sold |
Nielsen Point-of-sale (POS) |
4 |
5 |
5 |
5 |
5 |
High 24/5 = 4.8 |
25% |
Unsold Food Rate |
USDA Supermarket Shrink Estimates for ERS LAFA FMI Supermarket Security and Loss Prevention Report |
4 |
3 |
2 |
3 |
3 |
Medium 15/5 = 3.0 |
50% |
4.8 * 25% + 4.8 * 25% + 3.0 * 50% = 3.9 |
Medium |
|||||||
RETAIL CAUSES DATA |
||||||||
% Unsold Food Due to Cause |
Expert Interviews |
1 |
1 |
1 |
3 |
1 |
Very Low 7/5 = 1.4 |
100% |
1.4 * 100% = 1.4 |
Very Low |
|||||||
RETAIL DESTINATIONS DATA |
||||||||
% Destination Breakdown |
FWRA Surveys |
4 |
1 |
2 |
1 |
3 |
Low 11/5 = 2.2 |
95% |
% of Trash Landfilled vs Incinerated |
Biocycle/Columbia University Survey |
5 |
1 |
5 |
1 |
5 |
Medium 17/5 = 3.4 |
5% |
2.2 * 95% + 3.4 * 5% = 2.26 |
Low |