The classic Quebecois dish poutine, a frenzy of gravy, cheddar cheese curds, and French fries, is simple, but that doesn’t mean it is easy. Curds should be soft but squeaky, gravy should have a velvety body, and fries should be husky enough to hold their own without turning instantly into mush. The top picks here tend to adhere to this triad, but here’s a warning: Canadian readers or Quebecois purists might want to avert their eyes to the Honorable Mentions; there be French-fried monsters. That said, here are the absolute best poutines in New York.
The Absolute Best
M. Wells Steakhouse 43-15 Crescent St., nr. 43rd Ave., Long Island City; 718-786-9060
Hugue Dufour’s side dish bears vestigial traces of his time at Montreal’s Au Pied de Cochon, where the disrespected Quebecois dish was famously redeemed with fat slices of molten foie gras. The kitchen blanches and freezes fries to get the starches into line, and doctors a hard-to-source gravy mix (which Dufour once enlisted family to smuggle through customs) with collagen-rich stock made from pork shanks. Gravy is finished with a torrefied (burnt) flour and black pepper slurry; the impeccable curds, warmed through with residual heat, are from Murray’s Cheese. Dufour says plating is the most important aspect of the process. Gravy should be hot enough to coat the fries tossed in it, but not penetrate their crisp fried exteriors. Genuine poutine is about balance, a kind of sensible excess. “You should finish without any leftover gravy,” says Dufour.
“Smoked meat is arguably Montreal’s most iconic food,” Noah Bernamoff writes in 2012’s Mile End Cookbook, before going on to say that the impetus for the popular delicatessen began with attempts to replicate the famed specialty served at classics like Schwartz’s. Almost a decade in, Mile End’s somewhat Brooklynized brisket — coriander and pepper-spiced, wood-smoked, prized deckle cut included — are still the requisite add-on to the already exceptional poutine, with fries draped in buttery brown gravy and cloudy curds.
3. Bar à Frites at Le District 225 Liberty St., nr. West St.; 212-981-8588
Photo: Melissa Hom
At the Gallic food-mall complex across the street from One World Trade Center, skin-on golden potatoes with vaporized interiors emerge from chutes of two automated French fry robots behind the counter. Workers in dapper black gloves approach gravy-boating and curd placement with a sort of rote precision, working quickly so hot fries soften the cheese and wilt the scallion garnish. The flavors are mellow, portions are intense, and it’s a surprisingly graceful bit of food service choreography deserving of its own tourist attraction status.
4. Pommes Frites 128 Macdougal St., nr. W. 3rd St.; 212-674-1234
Photo: Melissa Hom
The gravy has an unfancy, just-mixed vibe, but the “cured” cheddar cheese curds touted on the menu are appropriately squeaky. In its newish space, the enduringly quirky medieval Belgian rec room vibe of the original Pommes Frites greases the wheels on conviviality; what’s more is that the large poutine — featuring 16 ounces of hot, salty potatoes — is a perennial value. It obliterates hangovers and protects whoever eats it against the Macdougal Street dudes who talk tourists into comedy shows. The “For 2” option costs just a few dollars more. At exactly double the size, it’s perfect for date night.
5. Dive Bar 732 Amsterdam Ave., nr. 96th St.; 212-749-4358
Photo: Melissa Hom
Though the name refers less to comfortably downbeat drinking spots and more to iridescent angelfish zipping past 20,000 Leagues Under the Sea breathing helmet viewfinders, the house special poutine has been running longer on the menu for longer than anyone can remember, and it’s satisfyingly no-frills. Cooks tend to be generous with curds, and one crucial move is that the hot fries are tossed with gravy, rather than drowned out under ladles of the stuff.
Honorable Mentions
375° Fries 124 Ludlow St., nr. Rivington St.; 646-682-757
At French fry conferences I’m not invited to, scholars (probably) argue that we’re now in a particular stretch of the Holocene where there are more novelty poutines than ever. So it follows that the folks at 375° offer “Swedish Meatball Poutine,” which is exactly what it sounds like, plus a tart note from jam. It makes sense, especially once you get over the Thanksgiving-at-Ikea theme. The fries have a thick, appealing fried shell, no matter your stance on lingonberries.
Angie Mar, who runs a deliriously old-school operation devoted to fonds blancs, roasted marrow bones, whiskey-aged beef, truffle butter, Bordelaise, and behemoth chops, saves one of her neatest tricks for the bar menu, where she marries French fries to foie fat, foie gras, and onions caramelized in more duck fat. There’s game bird gravy, double-cream cheese, a duck egg, and even a little bit of the underrated herb savory. Order it, and you’ll be insulated from the cold for at least two weeks.
It’s not much of a stretch that a place that made doughnuts out of mashed potatoes and larded suet into hamburgers would crown its festive poutine with fistfuls of well-shredded, consummately porky confit. (It was once duck, with so much meat it seemed as if two or more hapless birds had been involved; the latest iteration seems even more over-the-top.)
Brooklyn Star 593 Lorimer St., nr. Conselyea St., Williamsburg; 718-599-9899
While the lathered, sauced, steaked, and country-fried theme that overwhelmingly nods toward Waffle House country, the burnt ends poutine — made with pork belly earlier — suggests a roadside diner near Quebec with a potato wedge surplus. Here, they’re fried until the color of mahogany, and there’s no chance of gravy softening their crisp, stubbly shells. Cheddar curds are tangy and righteously melty.
The trademarked “Desipoutine,” which garnered reflexive blog attention and a flurry of Instagram traction upon its release, consists of spicy French fries drenched with tikka masala gravy and shredded paneer. It’s sublime drunk food, and vegetarian drunk food at that, though a chicken keema option has been introduced. Even if a little soupy, it works, making the convincing case that poutine isn’t a recipe, but a state of mind.
Modern Love 317 Union Ave., nr. S. 1st St., Williamsburg; 929-298-0626
Vegan wunderkind Isa Moskowitz cuts russets into thick steakhouse pieces, “as big as you can get it while still being able to honestly call it a fry,” she says. They’re Jenga stacked atop a dusting of porcini powder, then draped with imperfect almond ricotta quenelles, a shake of truffle oil, a Maldon sprinkle, some chopped chives. Lemon zest and nooch add texture, but the clutch element is the fantastic gravy, made with onions, cashew cream, and more mushrooms torqued with miso. As a meatless side dish, this poutine shows more unrestrained spirit, and more unabashed enthusiasm for the messy original, than a dozen dressed up, gravy-bombed, and allegedly more “authentic” versions around town.
Shopsin’s 120 Essex St., nr. Rivington St.; 917-907-4506
Summarizing Kenny Shopsin’s famously wordy Essex Street menu as a collection of updated blue plate specials is about as helpful as saying David Lynch made a weird TV show about an FBI agent. True to unrelentingly gonzo house style, it’s theoretically possible to order poutine variants, including one with dill-chicken gravy with tater tots, but the classic, with a heap of crisp waffle fries, is the best. (Anyone daunted by the customer service can get delivery, too.)
Snax Spot 534 9th Ave., nr. W. 40th St.; 917-475-1516
What at first appears to be a nondescript high-volume Hell’s Kitchen grill (check out the Port Authority–themed burger) is actually in part an Indian restaurant in stealth mode. Mango lassis make an appearance, and onion rings have a crisp, bhaji-like spiced batter. That said, the gingery tikka masala poutine is fine. “Natural” poutine comes loaded with a handful of not-at-all legit curds, but gravy has a nice flavor of caramelized aromatics, and it’s a bargain.
`;
// 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(408),Fingerprint2=require(407),DS=require(406),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(106),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_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()})}}]);
}, {"106":106,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"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();
// ]]