91³Ô¹ÏÍø

Watch CBS News

Vanna White bids emotional goodbye to "Wheel of Fortune" host Pat Sajak ahead of final episode

Vanna White paid an emotional tribute to Pat Sajak, her co-host of more than 40 years, ahead of his final episode as the host of "Wheel of Fortune."

On Thursday's episode of the beloved game show, White honored Sajak's work and their friendship with a video segment that featured clips and photos tracing their collaboration from the 1980s to the present.

"As this chapter of our lives is coming to an end, I know you'll still be close by. You're like a brother to me and I consider you a true lifelong friend who I will always adore," she said. "I love you, Pat."

"Wheel of Fortune" hosts Vanna White and Pat Sajak.
"Wheel of Fortune" hosts Vanna White and Pat Sajak. Christopher Willard/ABC via Getty Images

White said that while their long-running work collaboration has been significant to her - noting that he made her feel "so comfortable and so confident" when she started - she said their personal friendship has meant much more.

"As much fun as we had on camera, those memories, milestones and life events we shared with our families, outside the studio, are my favorite," she said, seeming to hold back tears. "We've watched our children grow up together, we've traveled all over the world, we've eaten hundreds of meals together. We've laughed, we've cried, we've celebrated."

One of television's most iconic duos

After the prerecorded video segment ended, Sajak and White shared a hug on stage.

Sajak and White have been one of television's most iconic duos since they started working on "Wheel of Fortune" together in 1982, when the show first aired in syndication. Sajak and White stand as two of the longest-serving hosts of any television program in the game show category. They have appeared in over 8,000 episodes together, with Sajak leading the contestants through the game and White famously turning the letters on the puzzle board.

Wheel of Fortune
Pat Sajak, Vanna White  Getty Images

Sajak announced last year he would retire as the host after the 2023-24 season of the popular game show. "It's been a wonderful ride, " he said at the time. White  after he announced his departure, "When we started @WheelofFortune who could have imagined we'd still be at it 41 seasons later?" 

White extended her contract in September through the 2025-2026 season and will help shepherd Sajak's replacement, Ryan Seacrest, through his first two seasons at the helm.

When Seacrest was announced as Sajak's successor, Seacrest said in a statement he was "truly humbled" to take over.

"I can say, along with the rest of America, that it's been a privilege and pure joy to watch Pat and Vanna on our television screens for an unprecedented 40 years, making us smile every night and feel right at home with them," Seacrest said.

Sajak's final episode airs Friday, June 7.

Wheel of Fortune: "Big Wheel" | 60 Minutes Archive 12:13
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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });