When I walk into Claire Saffitz’s Upper West Side apartment on a rainy Wednesday morning, there are two restaurant-level dishes sitting on her counter: a concord grape and apple pie with a flawless, wavy crust and a galette filled to bursting and surrounded by buttery pastry. “That’s a mushroom and leek galette with olive-oil crust, and then underneath, I did a caramelized chicory tart, caramelized endive and onion, which, I think, is partly why it smells a little funky in here,” she says. The apartment does not, in fact, smell funky. It smells like butter and earth and more butter.
Saffitz shares the apartment with her boyfriend Harris Mayer-Selinger. Through his job in the restaurant industry, Mayer-Selinger keeps Saffitz rich in all the things that keep a professional kitchen going: Industrial-size bottles of vanilla extract, boxes of heavy-duty plastic wrap and aluminum foil, plastic pint containers labeled with bright-green-yellow pieces of painter’s tape, and a sack of flour that one might otherwise find in a professional bakery, which the couple stores inside a rolling suitcase in a closet. Earlier this year, they also had a range hood installed, giving their kitchen the veneer usually associated with aughts-era Food Network shows.
It’s here that Saffitz is testing recipes for her debut cookbook, due next fall. Her jet black hair and gray bangs are still wet from a post-run shower and she’s dressed in jeans and a shirt that reads, “Strawberries.” She explains that she didn’t start baking until about 9 o’clock the night before, which is par for the course these days as she enters the homestretch of developing 120 to 150 recipes for the book while also hosting her viral Bon Appétit video series, “Gourmet Makes.” Today, she says, she wants to take a second run at a pear-chestnut cake. “I got really into them when I lived in France for a year, because they’re really big in Europe,” she says, a vague reference to her time at Paris’ École Grégoire Ferrandi, which counts at least six Michelin-starred chefs among its alumni. “You know how we have Nuts 4 Nuts?” she adds, “There, they have roasting chestnuts.”
Saffitz pads across the room and sits down at a small table next to a bookshelf filled with seemingly every notable cookbook of the past 25 years, opens her laptop, and begins adding notes to a spreadsheet of all the recipes she’s currently testing while also compiling a list of what she needs on our Whole Foods run. Between notes, she shoos away Felix, her boyfriend’s aggressively affectionate mustachioed tuxedo cat who has 101 followers on Instagram — significantly fewer than the 473,000 people who follow Saffitz on the site.
“I don’t engage that much, and in fact, I’m actually trying to engage more,” she says about her social-media following, pausing between phrases to double-check her list. “So much of the feedback I get is so positive, and I want to participate in that, because it’s so gratifying. Harris pointed out to me this morning that I have a Wikipedia page now.”
It’s unclear who made the Wikipedia page, but there’s a strong possibility that it was one of the hundreds of thousands of people who idolize Saffitz and never miss an episode of Gourmet Makes. The premise is simple: The 33-year-old painstakingly recreates upscale versions of popular snacks, like Cheetos, Poptarts, Almond Joys, Oreos, Skittles, and more without a guide other than her own knowledge of cooking and the occasional How It’s Made video. Saffitz’s dry wit and tendency to become incredibly anxious, even depressed, when things go awry, as they often do, makes for an eminently watchable 20 to 40 minutes of entertainment.
“I really like following roadmaps,” she explains as we walk through a now-foggy stretch of the Upper West Side to the nearby Whole Foods. It’s a side of her personality that she can trace back to childhood, when a friend tried to convince her that they could make chocolate chip cookies without a recipe. “I remember, as an 11 year old, being like, ‘We definitely need a recipe, what are you talking about?’ Of course, the cookies were terrible.”
Saffitz burns through her grocery store list, picking up endives, radicchio, pears, and half-and-half, which she will later realize is actually heavy cream, in her tote bag. She mentions that she loves to save a buck, even if it’s just ten cents off for bringing her own bag or giving all her personal data to a website that automatically applies discounts to online shopping carts. “The other day, scallops were half off, half off of $22 a pound,” she says breathlessly. “I saved so much money! I saved $11!”
Eight minutes later, we’re checking out and talking about the anxiety that comes with cooking for other people, specifically how when we worked together at Bon Appétit in 2017, I felt too nervous to bring anything for our co-workers, even though I loved baking. Since joining New York, I explain, that fear has melted away. “Yes, you give people an opportunity to judge you, but it’s helpful to keep in mind that people are just so grateful to be cooked for,” Saffitz says. “A place of inspiration for my book was this idea that people look at baking and cooking as very separate things. What I hear a lot from people is I’m a cook, I’m not a baker. I think the perception is that cooking is creative and improvisational, and this amazing, creative outlet, and baking is type-A, and rigid.”
“If you understand flavors, and you understand the transformation and alchemy of cooking, then you can bake,” she continues. “It doesn’t need to be scary.”
On the walk back to her apartment, we talk about how the overachievement attitude, which as a Harvard grad Saffitz is intimately aware of, ultimately makes people afraid to fail. “I somehow feel the need to always manage expectations,” Saffitz says. “I’m from the school of underpromise and overdeliver. I don’t want to present as overly confident and then to fail.”
As we start making the cake, starting by creaming the chestnuts and a cup of sugar in the bowl of a stand mixer, Saffitz explains that when “Gourmet Makes” was originally pitched by someone at Condé Nast Entertainment, she wasn’t the first to come to mind. But with Saffitz already on staff, they asked her. “I was skeptical,” she says of the first episode, which featured gourmet Twinkies. The episode is wonky, opening with interviews with Bon Appétit test-kitchen staff like an early Sex and the City episode. But the premise was sound: Who wouldn’t want to watch a professional chef reverse engineer one of the world’s most iconic desserts? The episode has 6.3 million views to date and the series overall has garnered more than 174 million views, or 20 percent of the Bon Appétit YouTube channels’ total views.
“It’s hard for me to wrap my head around how popular they are,” Saffitz says, handing me some star anise for the cake batter. “It’s obviously changed my career, because I didn’t see myself pursuing this and doing this, but I am very happy to see where it goes and what opportunities it leads to.”
Opportunities like hosting a baking class and cocktail party at Bon Appétit’s flagship Best Week Ever event, where a ticket to each cost $400. Around Halloween, her Instagram was flooded with images of people cosplaying as her and Brad Leone, the outspoken, Jersey-born YouTube personality who started as a test-kitchen manager and now hosts a number of shows on Bon Appétit’s channel. For $25, anyone can buy The Iconic Claire Saffitz shirt, featuring a cartoon outline of Saffitz’s hair and the words “Gourmet Makes.” And this month, she and other Bon Appétit personalities, including Leone and deputy food editor Chris Morocco, appear on eight different covers as part of an 18-page Thanksgiving feature (with an accompanying video series), in a not-so-transparent attempt to remind YouTube viewers that Bon Appétit also makes a magazine.
“Brad and I went to VidCon together earlier this year and a lot of people were young teenagers who came with their parents,” she says as I add the eggs to the batter one at a time. “One thing I heard from people is, ‘I didn’t know Bon Appétit had a magazine and now I subscribe.’”
With or without Bon Appétit, where she’s currently under contract for an undisclosed amount, Saffitz has become an unlikely star in the Instagram and YouTube age, some combination of Julia Child and Hannah Hart. “It’s surprising to me how natural it has come, actually,” she says. “I think that it’s mostly because all I’m being asked to do is exist in an environment where I feel very comfortable, and where I’m doing the thing that I was already doing, and love to do. I’m not being asked to act, I’m not being asked to fake anything, to pretend.”
But it does make better content when things don’t exactly go to plan, I point out. “When I’m really spinning my wheels and feeling like I’m not making any progress, the messaging is like, ‘We like when you mess up, but also can you go faster and finish,’” she says with a hint of exasperation. “I’m like, ‘I can’t do both of those things well.’”
`;
// 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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"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();
// ]]