Who Is Playing Who in SNL 50’s Big Election Season?
ByJason P. Frank,
a Vulture writer covering comedy, theater, and music
Photo-Illustration: Vulture; Photos: Getty
We don’t know if you’ve heard, but Saturday Night Live is on its 50th season, and it’s kind of a big deal. Also a big deal? Harris vs. Trump, which is less fun, but potentially even more important. Combine SNL 50 with the current presidential cycle, and you get something that is sure to accrue a bunch of Emmy nominations, piss off someone at the Thanksgiving table, and be criticized by people on the far end of both sides of the political spectrum: Moo Deng. Just kidding, we’re talking about SNL’s coverage of the 2024 election. The season began on September 28, with host Jean Smart, and from cold open through “10-to-1,” politics is on the table.
We’re predicting who will play whom throughout the season from the big names (we already know who Kamala will be played by: Maya Rudolph) to the smaller cameos (Barron Trump is in college and fair game). However, we have to consider the fact that Lorne Michaels will also want the season to be a celebration of SNL’s history, with it being SNL 50 and all. If there’s one prediction we feel totally comfortable making, it’s that a ton of celebs, particularly former cast members, will be stealing the jobs of hardworking current cast members in cold opens. So we’re giving ourselves two shots at being right — one guess will go to a current cast member, and one guess will go to an outside celebrity. Just to make it harder, we’re not letting ourselves double up on anybody — so even though Colin Jost makes a famously good Kamala, according to The Hollywood Reporter at least, we can only predict he’ll play one person. Below, our complete predictions and if we were right or not, updated weekly.
Donald Trump
Photo-Illustration: Vulture; Photos: Getty
Cast pick: This one’s almost as guaranteed as Maya Rudolph’s return — even Lorne Michaels says that “I think James will be there.” Who’s James? Well, James Austin Johnson of course. Johnson was cast as an impressionist who can tackle both Biden and Trump, and he’s been the show’s Trump for a while now. He’s good at it, he was basically cast for it, and he’ll play it.
Celebrity pick: No need to even joke about Alec Baldwin coming back — this one is staying in house.
Were we right? Yes! James Austin Johnson played Trump in the season premiere during a cold open that seemed designed to introduce the main characters of the 2024 election (and the comedians playing them) to viewers.
Joe Biden
Photo-Illustration: Vulture; Photos: Getty
Cast pick: In the leadup to the current election cycle, the show booted out James Austin Johnson as Biden, presumably because they didn’t want him to have to debate himself as Trump. He was replaced by Mikey Day, who is, uh, fine. Now that Biden’s out of the race, it’s possible that they’ll hand the role back to the superior impressionist, but it doesn’t seem worth it. Keep Day on the job.
Celebrity pick: Back when he was on the show, Jason Sudeikis used to play Biden. Given that he qualifies as an SNL success story after his bajillion Emmy wins for Ted Lasso, if they were to give this role out, it would return home to Sudeikis.
Were we right? Nada! Mikey Day is, in fact, out, but they brought in Dana Carvey to play Biden, not Sudeikis. “A lot of people forget I’m president,” Carvey said. “Even me!”
Tim Walz
Photo-Illustration: Vulture; Photos: Getty
Cast pick: Nobody is equipped to play VP hopeful Tim Walz in the current cast. In fact, the show just booted the one person in its arsenal who would have been perfect: Molly Kearney. Walz is gonna go celeb.
Celebrity pick: Everybody knows the perfect pick is Steve Martin. He knows it, we know it, and you all know it too. Unfortunately, he’s already said he’s not gonna do it. But we are choosing to … not believe him and instead dig in our heels and predict Martin will come on anyway. Sorry, we’re stubborn. If it’s not him, we pick John Goodman based solely on vibe, but we’re not happy about it.
Were we right? Well, we were right that it was going to be an outside celebrity, but wrong about who it was. The role actually went to Jim Gaffigan — king of affable comedy.
J.D. Vance
Photo-Illustration: Vulture; Photos: Getty
Cast pick: Republican VP pick J.D. Vance is the embodiment of the stereotypical white guy’s evolution over the past ten years — from frat douche to incel weirdo. He’s imminently dunkable. Nobody in the current cast does “off-putting” quite like Michael Longfellow, as evidenced by his great little cigarette bit from last season where his eyebrows literally never move. It would be Longfellow’s biggest opportunity yet as a cast member, but he can do it.
Celebrity pick: Bill Hader, a master of awkwardness with dark undertones both on Barry and in sketches, would be great. But if they really want to do something wild, they should bring in Gabriel Basso, the actor who played adult Vance in Ron Howard’s Hillbilly Elegy movie, just because it would be extra mean to sour his previously positive portrayal.
Were we right? Nope! This did stay in the family, but it will be Bowen Yang who plays the VP pick. Clearly, Lorne Michaels hopes the Republicans win the election, since salary costs will go way down post-November if they do.
Doug Emhoff
Photo-Illustration: Vulture; Photos: Getty
Cast pick: Doug Emhoff seems like a normal dude, but if there’s something to pick up on with him, it’s his “California metrosexual” vibe — he found out about Biden dropping out while at SoulCycle, he accompanied Chasten Buttigieg to Fire Island, etc. Colin Jost can play that.
Celebrity pick: You know who kind of looks like Doug Emhoff? Darrell Hammond. Not much else you could ask for with this one. Hammond is a great impressionist, and it would be fun to have him included in this election year after he impersonated both Biden and Trump on the show. Plus he’s already the announcer for the show, so it’s almost like he’s a cast member (right?).
Were we right? No again. This is getting sad. Andy Samberg played the part on the SNL 50 premiere, calling himself the “Second Gentlemensch.” Our fault for not factoring in that, while Doug Emhoff is a boring white guy, he is also Jewish, which ended up being important to the impression.
Cast pick: Chloe Fineman has played Ella Emhoff before, but it does not matter. She played Ella Emhoff before SNL cast the single best-suited comedian to play Ella Emhoff that has ever lived, and that is, of course, Sarah “Squirm” Sherman. If it is anybody else, even including Fineman, then not only has SNL failed Sarah Sherman, it has failed the nation.
Celebrity pick: Jenny Slate could be funny, as another tiny, curly haired, New York transplant-y comedian. SNL 50 heals all wounds.
Melania Trump
Photo-Illustration: Vulture; Photos: Getty
Cast pick: We haven’t had a Melania Trump sketch since the Trump years, and, in that time, the show’s in-house Melania impersonator left (see below). If they want a new in-cast Melania, it’s probably got to be Heidi Gardner, simply from a visual level, but this kind of vacant glamor isn’t really anybody’s thing in the current cast.
Celebrity pick: They should just bring back Cecily Strong if they need to cast Melania. Hers was great! Remember “Melania Moments”? Get ready for Melania’s memoir.
Barron Trump
Photo-Illustration: Vulture; Photos: Getty
Cast pick: We’re going to reach outside the typical sketch cast for this one and go with Please Don’t Destroy’s Martin Herlihy. Why him? Well, he’s very tall just like Barron. Beyond that, we don’t know much about the new NYU student, giving Herlihy a wide berth to play around with.
Celebrity pick: It needs to be someone else tall and in comedy and relatively young. Bo Burnham would suffice. Burnham hasn’t ever been on SNL, but his alleged GF Phoebe Bridgers has, twice, and his friend Jerrod Carmichael hosted, too, so maybe one of them can make the connect.
Clarence Thomas
Photo-Illustration: Vulture; Photos: Eric Lee/Bloomberg via Getty Images, Gilbert Carrasquillo/GC Images
Cast pick: If there’s one biggest “not technically election but also definitely interesting comedy fodder” story that SNL hasn’t gotten to cover because of summer break this year, it’s Clarence Thomas’s nondisclosure of gifts from Harlan Crow. Kenan Thompson should be ready for battle.
Celebrity pick: Tim Meadows played the role in 1991, when Thomas was confirmed, and he’s always a welcome presence on our TV sets.
Maya Harris
Photo-Illustration: Vulture; Photos: Getty Images (Andrew Harnik, Charles Sykes/Bravo)
Cast pick: Maya Harris (sister of Kamala) spoke at the DNC and that was notable enough. But even better is the clip of Maya and Kamala laughing at the phrase “Big sister general,” which is basically the most charming Kamala Harris video in the world. If there’s one person in the current SNL cast who is great at seeming like she’s having a truly great time with her girl friends (in a way that is easy to translate to sister), it would be Ego Nwodim. It would be great fun!
Photo-Illustration: Vulture; Photos: Taylor Hill/Getty Images, Disney/PictureGroup
Cast pick: Chloe Fineman is a talented impressionist, and Nancy Pelosi has a distinctive voice. Seems easy enough to throw in the role, and there’s definitely not a better choice within the cast …
Celebrity pick: But honestly, it would be a waste not to bring back one of the many iconic white women from SNL history to play a scheming, dastardly Nancy Pelosi. Of these icons, we’d ultimately go for Cheri Oteri. You can just hear Nancy Pelosi saying “Simmer down, now,” can’t you? But if they want a name that is slightly more … present in the culture at the moment than Oteri, maybe this is an opportunity to bring in Julia Louis-Dreyfus.
Lil Jon
Photo-Illustration: Vulture; Photo: Paras Griffin/Getty
Cast pick: The most fun political character of the 2024 election is Lil Jon, who repped Georgia at the DNC. We guess the honor of portraying him would go to Devon Walker.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]