ByBilge Ebiri,
a film critic for New York and Vulture
Nearly 100 million people watched two minutes of Extraction. In the past, we could scoff at such numbers. Now, it’s all we have.
Photo: Netflix
Last week, Netflix released some data about its most popular titles, and as usual, it all smelled a little fishy. The recent Chris Hemsworth action flick Extraction was apparently the most popular Netflix Original of all time, with 99 million views, followed by the 2018 Sandra Bullock thriller Bird Box with 89 million and March’s Mark Wahlberg mystery Spenser Confidential with 85 million. These numbers aren’t lies, exactly, but as many have noted, what Netflix characterizes as a “view” has been a fairly mutable thing as of late. Up until early this year, Netflix defined it as users watching at least 70 percent of a movie or a single episode of a series. In January 2020, however, the company announced that it now defined a view as something that was watched for at least two minutes.
This whole business over the two (2) minute view caused quite a bit of controversy at the time, as chronicled by Vulture’s Josef Adalian in his “Buffering” newsletter. Netflix says two (2) minutes is “long enough to indicate the choice was intentional,” which is an interesting thing to say on a subscription service where watching something specific doesn’t really cost you anything extra or make the service any money. I’ve certainly let things play for a few minutes while I went and got a drink or took a bathroom break or whatever. By this logic, I am now a Hannibal watcher, even though I have never sat through an episode of Hannibal. (And, yes, I know. I should watch Hannibal.) More ominously, I am apparently one of the 83 million viewers of Netflix’s Michael Bay opus 6 Underground even though I fell asleep after the first ten minutes and turned it off halfway through.
But, hey, at least Netflix is reporting something. Its numbers might be dodgy, but they’re a lot more specific than the downright Soviet obfuscation we’ve gotten from Apple TV+, which recently leaked to Deadline the highly classified and earth-shattering news that its Tom Hanks WWII thriller Greyhound “turned in a viewing audience commensurate with a summer theatrical box office big hit.” Around that same time, a Hulu insider, presumably hiding in the shadows of an underground D.C. parking lot, revealed to IndieWire that the streaming service’s recent release Palm Springs “broke the streaming platform’s opening weekend record by netting more hours watched over its first three days than any other film on Hulu during the same period.” How many hours was that? What was the previous opening weekend record? Held by whom? Don’t ask us, we’re just massive tech companies that harvest acres of data from every single thing you do.
By Apple and Hulu’s standards, Netflix seems downright transparent. The streamer did tell us that The Old Guard, its big release over that same crowded Greyhound/Palm Springs weekend, will have about 72 million viewers in its first four weeks — which is great, with the gigantic caveat that all we know about these viewers is that they watched two (2) minutes of The Old Guard. (By the way, all three of these aforementioned movies are good. I’m glad people are watching them. Just because their distributors are being totally weird about who watched what shouldn’t reflect poorly on the films themselves.)
In the past, we could scoff at such vague or misleading announcements because they were relatively inconsequential to the question of what was a hit or not — because that was still largely determined by the domestic box office. But the truth is that our definition of a hit movie is rapidly changing. Part of the reason for this is obvious: The domestic box office has been wiped out by a literal plague and is unlikely to come back soon; in its absence, streaming numbers have gained greater significance, as have VOD numbers, be they of big studio titles or “virtual cinema” indie releases.
But this trend had started well before COVID-19 hit. Two of 2019’s most talked-about films, The Irishman and Marriage Story, were released into theaters by Netflix, but we didn’t get any official box-office numbers for them. A month or so later, they started streaming and, judging by the number of memes they generated, became viral phenomena. We never really knew if they were hits; we just sort of had a sense that they were. (Netflix now says that the first two [2] minutes of The Irishman were watched by 64 million people in its first month. This is good, I think?)
Obviously, the views themselves aren’t necessarily indicative of these streaming companies’ bottom lines. Netflix doesn’t make money off an individual viewing of, say, Da 5 Bloods, and Apple doesn’t make money off an individual viewing of, say, Greyhound. They make their money when you and I choose to subscribe to those services, presumably because of must-see content like, say, Da 5 Bloods and Greyhound.
Still, the way a company measures success tells us a lot about how it understands its core business. You can see this at work in the way the domestic theatrical box office has transformed over the past several decades. As opening weekends have gained greater significance in a film’s financial success, the studios have become elaborate marketing operations. A big opening weekend is not a sign of quality (since nobody’s seen the movie yet, besides critics, and nobody cares what we think) but a triumph of the marketing department’s ability to get those first butts in those first seats at those first showings. So much so that, nowadays (at least pre-pandemic) we know if a picture will be a hit based on its Thursday-night previews alone. Similarly, that it chooses to focus on those first two (2) minutes tells us that Netflix still views itself primarily through the prism of its technological ability to get its content in front of the right viewers — that dreaded Algorithm, which increasingly sounds less like a program and more like an ill-defined storybook villain.
In Hollywood, “data” has always involved a certain amount of numerical witchcraft and sophistry. Some of it’s about creating the illusion of success, or at least the avoidance of public failure. Some of it’s about not paying artists and craftspeople their fair share of back-end profits, which is a whole other conversation. (And don’t even get me started on the international box office, where a lot of the numbers appear to be totally cooked.) While the last thing the box office can tell us is whether a movie is any good or not, in an era when gargantuan tentpoles have driven just about everything else out of the marketplace, that is exactly how some viewers use it. Some of this is understandable: Our society loves hits. Top 40 countdowns, lines snaking around blocks, packed houses, books flying off shelves at special midnight openings — the hit is one of the building blocks of American culture. We seek out hits. We dream of writing or recording or starring in hits. And it’s not all a bad thing: Yes, hits speak of consumerism, but they also speak of the way we connect.
So what happens when there are no more hits? Or at least, no reliable way to tell what’s a hit and what’s not? Because that’s sort of where the movies find themselves right now.
One of the saddest things about these streaming numbers is how alienating it all seems, all those millions of people sitting at home, many of them by themselves, now quantified by whether they sat still enough to watch something for two (2) whole minutes. It’s all so weirdly soulless and corporate. It doesn’t say, “We made something you might enjoy.” It says, “We suckered you into clicking a button.” It’s the brazen language of a huckster. And let’s face it, that’s where the box-office numbers were headed, too: “We made you come out opening day, but we don’t care if anybody shows up next week. We’ve got our money and we’re getting the hell out of Dodge.”
Ironically enough, Netflix and other streamers have an opportunity here to insert some sanity and humanity back into the discourse. Regardless of whether they’re releasing it or not, they have access to all sorts of data about how we view these movies and shows. In 2019, we learned that Netflix grouped users into three overlapping buckets: starters (the two [2] minute people), watchers (the 70 percent people), and completers (people who finished at least 90 percent of a movie or series). At the time, Netflix was making the watcher data public and calling those views, while it shared the other data with creators to help them make better Netflix content. Why did Netflix switch to defining views by the significantly dodgier metric of starters who’d watched two (2) minutes of a given title? It may well have been an attempt to goose the company’s numbers in the face of competition from all the other streaming services that have emerged over the past year or so.
But really, it seems clear to me (and probably to you) that the real viewers should be the completers: The people who went (almost) all the way with a movie or show. The people who not only chose to watch it, but also chose to finish it. There are probably good reasons why Netflix doesn’t make those numbers public. Last year, Nielsen (which does track some streaming data) reported that only about 18 percent of viewers in the U.S. finished watching The Irishman on its first day. That sounds, frankly, terrible — but apparently, it’s comparable to noted viral hit Bird Box (also 18 percent) and higher than plenty of other big Netflix titles. In other words, it’s embedded into the very nature of a streamer like Netflix that people will just click around and sample options without bothering to finish them, or even get all that far into them. That right there tells us that the two (2) minute stat is largely worthless. But it also tells us something constructive too: In a world where it’s all too easy to switch to another program, or to stop watching halfway through and not come back, the stats on how many people chose to watch all the way through matter a great deal.
In a theater, it’s hard to abandon a movie you’re watching, even if you hate it. You paid for it, for starters, and you’ve already made the time commitment; it feels like an admission of defeat. Plus, there are all those people in the row you have to stumble your way through. But on Netflix, on Hulu, on Disney+, and on Apple TV+ (and on Peacock, and on HBO Max, and on Criterion, and …), it’s quite easy, and, indeed, people seem to be taking advantage of that ability. I don’t personally love that phenomenon — I’m a big believer in sitting through whatever it is I’ve chosen to watch, which is why I am a person who has seen Human Centipede 3: The Final Sequence all the way through — but I do like the fact that this data tells us more than just who pressed which button. The completers, in other words, aren’t fairy-tale numbers designed to burnish stats. It’s real data that tells us not just whether a movie or show made it to the right people, but also whether those people stuck with it or not — maybe even, gasp, enjoyed it. That would actually make it a far more accurate gauge of audience appeal than traditional box-office stats. And it would give us a new and valid way of thinking about what constitutes a hit in our Age of the Pod.
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()}});
}, {"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();
// ]]