The best way to tell if a food is still good to eat isn't necessarily looking at the sell-by date printed on the package.

Expiration dates are based on rough estimates. They can tell you when a carton of eggs or a raw steak will likely reach the limit for their best quality, but that's about it, according to research compiled by the Natural Resources Defence Council (NRDC), a nonprofit environmental organisation.

"Millions of Americans are tossing perfectly good food in the trash because they think it's not safe to eat after the date on the package," Dana Gunters, a senior scientist with the National Resources Defence Council, said in a statement last year.

Americans throw away up to 40 percent of purchased food every year, the equivalent of US$218 billion.

In addition to the wasted money – about US$1,500 per year for a family of four, according to the NRDC – food waste also means that all of the resources that were used to grow, store, and transport food get wasted, too.

Here's how to tell if everything in your refrigerator – including milk, cheese, hummus, and fish – has gone bad.

A bad egg floats.

Egg shells are slightly porous, and as they age, small sacs of air begin to form between the shell wall and the egg.

If there's enough of an air bubble inside an egg to cause it to float in a bowl of water, chances are it's gone bad, according to the US Department of Agriculture.

Expired yogurt begins to puddle more than usual.

When kept in a sealed container, yogurt can last between one and three weeks. That's thanks to its live bacterial cultures, which act as a natural preservative.

But when those cultures start to die off, things go awry. More liquid than usual will pool on the surface, and sometimes mould will form.

Other signs of expiration include curdling near the bottom, according to StillTasty.

Uncooked beef gets slimy when it's gone bad.

Uncooked beef with a foul odor, slimy texture, or sticky or tacky feel is best thrown out, according to the USDA.

Changes in colour, on the other hand, aren't necessarily an indication that raw meat has expired, the agency says.

Expired hummus develops a sour taste.

If your store-bought hummus starts to develop a sour taste, it's probably a sign that it's gone bad, according to EatByDate.

Olive oil stops smelling like olives when it's gone bad.

"Good olive oil should smell fragrant and fruity and taste like the olives it was made from," award-winning chef Marcus Samuelsson wrote on his website.

Oil that's gone bad will often smell like motor oil or glue, according to The Daily Meal.

Bad fish starts to give off an abnormally fishy odor.

Fresh fish should be eaten within 36 hours of purchase, according to Whole Foods, EatByDate, and The Kitchn.

Fish that's spoiled will typically have a slimy flesh with a thick, slippery coating. It may also develop a fishier-than-normal smell.

Fresh vegetables turn yellow when they're going bad.

Green vegetables turn yellow when they expire.

That said, some vegetables can still be salvageable, according to the Greater Chicago Food Depository. They suggest trimming the discolored portion of veggies like celery and soaking it for 10-15 minutes in ice water to refresh.

Sour milk gets lumpy.

The biggest red flag for spoiled milk: changes in texture, smell, or consistency.

When the lactic acid in dairy starts producing bacteria, it gives off a sour odor. Lumps or chunks can also develop as a result.

Fresh fruit changes texture when it's expiring.

If fruit gets mushy or grainy, it's probably a sign that you shouldn't eat it, according to the Greater Chicago Food Depository.

Other warning signs that a fruit has gone bad include extreme discoloring, foul odours, or wrinkly skin that's peeling away.

Bad bread grows mould.

If you spot mould on one slice of bread, it's not safe to eat another slice – even if there's no visible mould on the rest of the loaf.

That's because bread is porous, meaning that mould spreads easily throughout the loaf.

Bead that gets stale, hard, or dry, on the other hand, isn't necessarily expired. Mould requires moisture to grow, so dry bread may still be perfectly fine to eat .It can typically be safely used to make bread crumbs or croutons.

Expired deli meat gives off an odd smell or changes texture.

Smelly deli meat may be plagued by bacteria.

Turkey, ham, or salami that has become hard or slimy has also likely expired.

Deli meats purchased directly from the deli counter should be eaten within three days, according to EatByDate.

Spoiled cheese starts to smell like sour milk.

When it comes to cheese, perishability is all about moisture.

The softer and more moist a cheese, the faster it spoils. Bad cheeses will typically give off a sour milk smell, according to chef Nora Singley.

If mould grows on soft cheeses like cottage or cream cheese, they should be discarded, according to the Mayo clinic. That's also true for shredded or sliced cheese.

Harder cheeses, however, take longer to spoil because of their density. In many cases, it's possible to cut off a moldy outer layer and find the interior to be fine, since mould doesn't penetrate far into harder cheeses like cheddar or parmesan.

This article was originally published by Business Insider.

More from Business Insider: