91³Ô¹ÏÍø

Watch CBS News

Starbucks adding new protein lattes and cold foams this month. Here's what to know.

Starbucks is joining the protein craze with a new line of lattes and cold foams, part of what the company says is a strategy to modernize its menu.

The Seattle-based coffee chain said Tuesday that starting Sept. 29 it will add protein cold foams and protein lattes to its menu. The cold foam, which customers can order to top coffee, tea or Starbucks Refreshers, adds about 15 grams of protein to a grande drink. The lattes, made with "protein-boosted milk," contain 27 to 36 grams of protein, according to Starbucks.

The new menu items come as the company works to reignite sales after a revenue slowdown last year. Under CEO Brian Niccol, Starbucks has rolled out a "Back to Starbucks" plan to win back customers.

The new drinks "will resonate with our customers," said Tressie Lieberman, Starbucks global chief brand officer, said in a company statement.

Protein-laden drinks and foods are gaining in popularity for their perceived health benefits, such as helping build muscle and provide extra nutrition. The number of high protein drinks on the market jumped by 122% from 2020 to 2024,  to Innova Market Insights, a global market intelligence company. 

The protein shake market is now a $6 billion sector, according to , while TikTok  with protein-packed meals. Items ranging from potato chips to breakfast foods like cereal also now come fortified with protein. 

What are Starbucks' new protein drinks?

The new lineup of cold foams will be available flavors including:

  • banana
  • vanilla
  • sugar-free vanilla
  • chocolate
  • matcha
  • salted caramel
  • brown sugar
  • and plain protein cold foam

Starbucks is also shoring up its popular fall menu, which kicked off Aug. 26, with pumpkin and pecan protein cold foams. 

Alongside the cold foam toppings will be a new line of lattes, made with milk that is blended with protein powder. 

Starbucks didn't disclose how much the new products will cost relative to the coffee chain's other beverages. A regular grande iced latte from Starbucks costs customers $5.95 before tax.

Customers will also be able to request 2% milk blended with protein powder in other milk-based drinks including regular lattes, iced shaken espresso, and coconut milk Refreshers.

Protein craze

The rollout of the new protein drinks and cold foams comes after Starbucks earlier this year piloted a banana-flavored protein cold foam at five locations across the U.S.

As consumer demand grows, major U.S. brands are looking for ways to cash in. General Mills Cheerios Protein in December 2024, which it says have 8 grams of protein per serving. 

PepsiCo is also planning to expand its protein offerings. During their most recent earnings in July, PepsiCo CEO Ramon Laguarta said the company has some "big launches" coming up in the liquid protein space at the end of this year and early next year.

"Consumers are adopting protein solutions in the diet at a pace that was not the case in a few months back, a few years back," he told investors during the call.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });