ByEmma Wartzman,
a kitchen and dining writer at the Strategist. Previously, she was an editor at Bon Appétit and has worked in food media for nine years.
Photo-Illustration: Curbed; Photos: Getty
To find the best cake shops in New York, we polled dozens of food writers, bakers, and store owners on where they find the best cakes. We found shops where you can get a custom cake piped and frosted for a party less than two days away and a place in Queens where you can get Chinese and Taiwanese desserts like egg tarts and red-bean buns every morning. Plus we found the best old-fashioned strawberry shortcake in the city.
Everything about this 129-year-old East Village bakery is old-school and distinctly Italian — from the mirrored walls to the intricately tiled floors and the grand swaths of stained glass on the tin ceiling. Cannoli, rainbow cookies, and biscotti line the pastry cases, but one of its most popular desserts is strawberry shortcake. Event planner Pejy Kash has been eating it for the past 20 years. “I’ve had strawberry shortcake everywhere,” he says, but nothing compares to Veniero’s “really airy” version. Coming Soon owners Fabiana Faria and Helena Barquet love it too. Faria first ordered it for Barquet’s birthday in 2021. “It’s old-fashioned, but that’s what I like,” Barquet says of the “spongy yellow cake” and “super-fresh strawberries in every layer of whipped cream.” It’s served by the slice ($7.50) in the café, and whole cakes are available for purchase.
Over the past eight years, Greg Rales went from starting a bakery in his apartment to being the head baker at Flour Shop to opening his own place. Here, the case is filled with layer cakes that draw on “familiar, old-fashioned, and nostalgic” flavor combinations, says writer Charlotte Druckman. The Chocolate Peanut-Butter Pretzel Cake (from $60 for a six-inch), for instance, is reminiscent of a Reese’s cup with salty, crunchy pretzel-caramel crumble and peanut-butter buttercream that’s “so freaking smooth and almost whipped,” Druckman says. She commissioned a cake inspired by a mocha-almond-fudge ice cream she grew up eating that Rales “distilled into cake form perfectly,” she says. Actual kids’ cakes make up about 20 percent of the orders in more basic flavors, like a yellow birthday cake with chocolate-sour-cream frosting (from $50 for a six-inch), based on one Rales’s grandmother used to make. Cookbook author Ali Rosen has ordered several versions of a strawberry cake for her kids here. “They love it,” she says. Plus it “tastes like real strawberries” without any “cloying” fake flavoring, which means grown-ups enjoy it too.
Nestled between a Chase bank and a T-Mobile store, Yeh’s Bakery is easy to miss, but this Queens shop has been operating for over 30 years. The inside is bare bones, just a couple of refrigerated cases for the main attractions: egg tarts, red-bean buns, and traditional Chinese and Taiwanese layer cakes decorated with kiwi slices. The “super-aerated, superlight sponge cake” with whipped cream in the middle has turned dessert-maker Mina Park into a regular. Yeh’s sells “huge, lumpy, and kind of amorphous-looking” whole rounds of its Boston cream pie ($19), Park says, and a Black Forest cake ($12 for a seven-inch) that has “a light Wendy’s Frosty level of chocolate flavor.” But her favorite is a plain piece: “The sweetness is mellow, and the texture is perfect. There’s no resistance when you put your fork through. It’s one fluffy bite.”
At the pandemic’s start, Lucie Franc de Ferriere began baking cookies and banana bread for Sunday to Sunday, her fiancé’s new coffee shop. She then decided to sell her cakes, open-sided and adorned with loads of fresh flowers — stems, leaves, and all — through Instagram and at pop-ups. Franc de Ferriere’s fast following came thanks to her aesthetic, “the antithesis of the perfectly smooth, symmetrical bakery layer cake,” says Cherry Bombe founder Kerry Diamond. “They’re the Shabby Chic of cakes.” Franc de Ferriere now sells at her storefront, which opened in January 2023. Creative director Anna Polonsky ordered a strawberry-yogurt cake with basil for a birthday (from $120 for an eight-inch double-layer) and came by in March for a “very carroty” carrot-cake slice with fromage-frais buttercream (“Somewhere between yogurt and sour cream,” says Polonsky). Her favorite is a simple flourless chocolate cake topped with a messy dollop of whipped cream and a sprig of chamomile ($10). Biting into the flower “is actually quite fun,” Polonsky says. “It brings a little sweetness and a little spice.”
For Southeast Asian Ingredients
Lady Wong,332 E. 9th St.; 135 W. 50th St.; ladywong.com
Ten kinds of traditional kuih, or bite-size snacks, are available at Lady Wong — like seri muka pandan, a steamed custard cake atop glutinous rice that reminds writer and editor Tatiana Bautista of the Philippines, where “the air smells like pandan.” Owners Seleste Tan and Mogan Anthony like to mix traditional flavors with French and American techniques. Take their peanut-butter cake ($60 for an eight-inch), a favorite of baker Zoë Kanan, which features two layers of “super-moist, rich” devil’s-food cake, chocolate ganache, peanut-butter buttercream, a crunchy peanut-butter feuilletine, and a creamy peanut-butter gula melaka, or “bitter, caramelized” unrefined coconut-palm sugar that “underscores the cacao,” Kanan says. “Having something crispy to bite down on in the midst of all those velvety layers helps unlock and exaggerate flavors.”
Customized cakes from this 32-year-old Brooklyn bakery can be ready in as little as 48 hours, and Ladybird’s are as classic as it gets — smoothly frosted, expertly piped roses adorn the perimeter, a loop of cursive messaging on top. But even with the quick turnaround, customers aren’t limited to basic flavors. Baker Tanya Bush submitted a last-minute order for the lemon cake with a “supple crumb” and “light and airy” strawberry mousse. For the past 20 years, Collyer’s Mansion owner Mauri Weakley has been ordering the “super-moist” Brooklyn Blackout Cake (from $43 for a six-inch), which is so chocolaty, she says, “two bites and you’re to the moon.” And with very little lead time for her sister’s birthday this year, writer and producer Emily Sundberg ordered a fluffy chocolate cake with chocolate mousse flecked with “bits of hard chocolate that melt in your mouth” and topped by a Real Housewives of New York quote. If you have even less time, Sundberg says, you can pick up ready-made cakes the same day — as she did for a yellowcake with raspberry jam and vanilla buttercream. “You can actually taste the tang of the butter,” she says.
.
Ask a Baker
Evelyn Luciano,owner of Ladybird Bakery in Park Slope
Illustration: Pete Gamlen
What’s the shop’s most beloved cake? We’re known for our blackout cake: a dark-chocolate cake with chocolate pudding in the middle and fudge frosting on top. People looking for something simpler often go for our dark-chocolate or yellow cake with buttercream frosting. We sell vanilla frosting the most.
What flavor combo are most people missing out on? Oh, almond cake with raspberry jam and chocolate frosting, by far.
Wow, you absolutely did not hesitate. It’s my go-to. You get the richness from the almond and the tart from the jam. It’s one of the best combinations.
What’s your best advice on storing leftover cake? You can freeze most cakes and they’ll be fine. But in general, you can go a couple of weeks with our cakes in the fridge, wrapped in plastic wrap. I know this because we closed in March 2020 for three months. We were not planning on reopening because of everything going on, so my husband and I were like, “Well, what else are we going to do with all these cakes?” We ate them. And even after a few weeks, those cakes were moist and delicious.
Are there any flavors of cake you don’t like? I think lemon cake with chocolate frosting is a bizarre combination, but people love it. They get it all the time — they’ll do a lemon cake with lemon curd and chocolate buttercream, and I just don’t get it. I always ask, “Have you had this before?” and they’re always like, “Yeah, I love it!”
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();
// ]]