
Support investigative journalism
Our award-winning investigations help us in our mission to make life simpler, fairer and safer for everyone.
Join Which?By clicking a retailer link you consent to third-party cookies that track your onward journey. This enables W? to receive an affiliate commission if you make a purchase, which supports our mission to be the UK's consumer champion.

When you place an online grocery order, there are a lot of things you can control, like when you get your items and how you stick to a budget. But we all put our trust in supermarkets to pick and deliver the freshest groceries that will last – and often end up disappointed.
In our latest supermarket survey, 16% of 519 people who reported frustrations with their most recent online supermarket delivery said receiving perishable items with a very short shelf life was their top frustration.
With more grocery price inflation anticipated this year, every pound spent at the supermarket matters, and food waste will get even harder to stomach. So, we’ve investigated how supermarkets stack up on grocery freshness to help you get the most out of your shop.
To find out which supermarket typically delivers the freshest food, we recruited 12 mystery shoppers from across Great Britain to order the same list of 29 fresh groceries from Asda, Morrisons, Ocado, Sainsbury’s, Tesco and Waitrose over a two-week period. More than 2,000 perishable goods were ordered and delivered.
We totalled the hours remaining from delivery to midnight on the use-by date for each item, converted them to days and calculated an average per supermarket. We also included a handful of items with best-before dates in our orders, but these weren’t included in the average for each supermarket, as these are about quality rather than safety.
| Supermarket | Average use-by shelf life |
|---|---|
| Asda | 11 days |
| Morrisons | 10.4 days |
| Ocado | 10.4 days |
| Sainsbury's | 10.2 days |
| Tesco | 8.8 days |
| Waitrose | 7.7 days |
Asda was the freshest supermarket in our investigation, with perishable items that had use-by dates averaging 11 days from delivery. Five shoppers got beef mince with 18 days or more before it went off, and a pack of cod fillets had seven days.
Morrisons and Ocado were the next-freshest after Asda, with groceries lasting an average of 10.4 days, followed by Sainsbury’s (10.2 days).
High-end Waitrose delivered the least fresh groceries, with use-by dates averaging just 7.7 days. The high-end supermarket had the lowest averages for scones, bread, fresh pasta sauce, houmous, fresh tagliatelle and pork sausages. One shopper got beef mince with just 1.2 days left before it went off, and another got chicken thighs with 1.6 days.
Waitrose has been the most expensive supermarket in our monthly price comparison of about 90 grocery items since September 2024, so it’s especially disappointing to see customers paying more for groceries that won’t last. Asda, on the other hand, is consistently the cheapest of the big supermarkets in our analysis.
When we looked only at the best-before dates, Waitrose still had the shortest average shelf life and Asda the longest.
Tesco came just above Waitrose with an average of 8.8 days. Tesco's website says those ordering online can expect four or more days of shelf life on its toffee sundae pot, but one shopper received one with just over half a day left. Another got a fresh pasta sauce and pork sausages, both with 3.4 days of life left, despite Tesco claiming a typical shelf life of a week for the sauce and five days for the sausages.

Our award-winning investigations help us in our mission to make life simpler, fairer and safer for everyone.
Join Which?Seven items were delivered on their use-by or best-before date, including a substituted raspberry trifle from Morrisons that had just under four hours left until it expired and a toffee sundae from Tesco with around 13 hours left. Having to dig straight into dessert may seem like a trifling issue, unless it was bought with future dinner plans in mind.
Meat and fish were the most expensive items in our shopping list, but that didn’t mean you were guaranteed the time to use them.
Three packs of beef mince (one from Morrisons and two from Waitrose) and two packs of chicken thighs (Sainsbury’s and Waitrose) arrived with a use-by date the day after delivery, and two packs of cod (Asda and Tesco) needed to be used within two days.
Three items at Sainsbury's had a best-before date on the same day as delivery (sweetcorn and two packs of basil).
Tomato and mascarpone pasta sauce had the biggest difference in the average number of days left to use it between supermarkets. From Asda, it arrived with an average of 33.6 days until it would be past the use-by date, but from Waitrose this was 12.2 days (compared with the overall average of 21.7 days).
When you consider its cost, it’s clear that Waitrose shoppers would be getting less value – the mascarpone sauce is 23p more expensive from Waitrose compared with Asda, but you get around a third of the time to use it.
Morrisons own-label houmous was the longest-lasting, with an average use-by term of 22.5 days, while Waitrose houmous had just 3.84 days left, on average (compared with 11.54 days).
Ocado delivered two packs of ham with more than 20 days of shelf life (vs 13.1 days on average across all retailers), while one shopper received a pack of Petit Filous Framage Frais with 21.8 days left (vs 16.9 days across supermarkets).
We saw significant variation even with best-before dates. Cathedral City Grated Mature Cheddar Cheese had the longest average days until the best-before date (44.3 days). One of our volunteers received a pack with 16.6 days left (Sainsbury’s), while two others got packs with 50 days remaining (Asda and Sainsbury’s).
Our shoppers shared numerous examples of food that arrived damaged or looking past its best, despite being within its use-by or best-before date.
One pack of M&S basil from Ocado was limp and wilted. Multiple people reported freshness concerns about pre-cut carrot batons from several supermarkets, noting carrots that looked ‘slimy’, ‘wet’ or ‘manky’.
One person received a pack of beef mince from Waitrose that had opened and was ‘leaking a bit of myoglobin inside the bag’, and another was left in a sticky mess with an opened pot of pineapple from Morrisons that had leaked onto other packets.
Split or open packaging was reported on a wide variety of items, including a curry ready meal, a toffee sundae, mozzarella, fromage frais pots, bread and milk.
Most supermarkets have a freshness policy with measures in place to support shoppers. This could be guaranteeing shelf life, stating the ‘typical life’ of particular products, or flagging short-life products via email or by the driver on delivery.
But we’ve found that items don’t always meet these guarantees or the expected shelf life and reporting of short-life products can be patchy. Check the email or receipt you receive on the day of delivery (sometimes this can be found in your online account) to see if there’s anything with short shelf life that you won’t use or that doesn’t meet the expected shelf-life promise.
Also, take your time unpacking at home, paying particular attention to products such as meat, fish, herbs, prepared fruit or veg and ready meals. If you’re not happy, reject these at the doorstep for a refund.
Once your items have been delivered, you can still get a refund on anything that is damaged or out of date.
We shared our findings with the supermarkets.
Ocado said: 'We are proud of our Fresh+ promise, making us the only UK online grocery retailer to offer a life guarantee on all fresh products. Our promise guarantees a minimum number of days of freshness on products ranging from fruit and veg to bread and milk, ensuring customers can trust Ocado to deliver the freshness they are looking for on each and every delivery.
'If customers aren't 100% happy with a product's freshness, they can easily arrange an immediate refund online or through our app.'
Tesco said: 'We work hard to select the freshest items with the longest expiry dates for all our Grocery Home Shopping delivery and Click + Collect orders, and we highlight any items that have a shorter shelf life than we would like as part of our Freshness Guarantee.
'If customers are not happy with any items at the time of delivery or collection, they can hand them back for a full refund.'
Waitrose said: 'We are committed to offering the freshest and highest quality products, reflected in our growing online grocery sales. And in response to increasing customer demand for products with simpler ingredients, we have removed preservatives from some of the items in this analysis where they are common, including our houmous.
'Our online grocery pickers are trained to choose the longest dated products they can, and our most recent customer survey showed that the vast majority of our online customers rated the shelf life of our products as good or excellent.'
Morrisons didn't provide a comment, but said that customers can reject an item at the door or request a refund if they aren't happy (including if it has a shorter shelf life than the 'typical' life shown online).
Asda and Sainsbury's didn't provide a comment.
A use-by date is about safety – you can eat food until midnight on this date, but you shouldn’t eat it afterwards – even if it looks and smells fine.
Best-before dates are about quality rather than safety; the food can be eaten after this date, but the flavour and texture may have deteriorated – for example, bakery items may be going stale.
Display-until codes are used for shop staff rather than customers, and food shouldn’t be on shelves after this date. Many shops have moved away from use-by or best-before dates on certain foods, introducing codes and encouraging customers to look, smell and taste food before binning it.

The big supermarkets have removed best-before dates from many of their pre-packaged fresh fruit and vegetables to reduce food waste. So if you’re after the freshest tomatoes, you may need to decipher a packaging code that’s used by the supermarket.
At Asda and Tesco, look for a letter followed by a number: ‘A’ is January, ‘B’ is February and so on, while the number is the day of the month. So an item with the code ‘I27’ will be freshest before 27 September.
Sainsbury’s codes begin with ‘J’ and end with ‘S’ with the date in the middle. So an item with the code ‘J0910S’ will be freshest before 9 October.
Morrisons uses the first letter and day of the month, so a product with the code ‘S27’ will be freshest before 27 September.
Food is more expensive than ever, so it's important to use as much of your supermarket shop as possible before it goes off.
Find out more: what's happening to food prices?