Picture Credit: Netflix
The Whisper Man was undoubtedly the big Netflix movie for August on the English-language side, given that it stacked up a solid cast with a known book plus the Russo Brothers producing. We’ve now got its first three-day number, and it debuted with 23.2M views. How does that stack up against this year’s slim movie slate and against other movies in the same genre from years prior? Let’s find out!
Let’s begin with comparing it against movies that have dropped throughout 2026, where it places sixth behind Peaky Blinders: The Immortal Man but ahead of Kevin Hart’s 72 HOURS.
(function () {
if (!window.wonWatermarkPlugin) {
window.wonWatermarkPlugin = {
id: ‘wonWatermark’,
afterDraw: function (chart) {
var ctx = chart.ctx;
var area = chart.chartArea;
if (!ctx || !area) return;
// Scale watermark to the chart’s current pixel width so it stays
// a subtle attribution on phones (20px on a 320px canvas would
// dominate) while still reading on a 1200px desktop chart.
var w = area.right – area.left;
var fontSize = Math.max(11, Math.min(20, Math.round(w * 0.045)));
var offset = Math.max(6, Math.round(w * 0.018));
ctx.save();
ctx.font=”700 ” + fontSize + ‘px -apple-system, BlinkMacSystemFont, “Segoe UI”, Arial, sans-serif’;
ctx.fillStyle=”rgba(0, 0, 0, 0.22)”;
ctx.textAlign = ‘right’;
ctx.textBaseline=”bottom”;
ctx.fillText(‘whats-on-netflix.com’, area.right – offset, area.bottom – Math.max(4, Math.round(offset * 0.6)));
ctx.restore();
}
};
}
// Shared compact-number helper. Returns e.g. “1.2B”, “45.6M”, “789K” when
// useCompact is true, otherwise the full `toLocaleString()` form. Used by
// every chart’s datalabels and axis ticks on mobile so wide numbers like
// “1,234,567,890” don’t crowd small viewports. Tooltips keep the full
// number for accuracy.
if (!window.wonCompactNumber) {
window.wonCompactNumber = function (value, useCompact) {
if (value === null || value === undefined || isNaN(value)) return ”;
var n = Number(value);
if (!useCompact) {
return n.toLocaleString();
}
try {
if (typeof Intl !== ‘undefined’ && Intl.NumberFormat) {
if (!window.wonCompactFormatter) {
window.wonCompactFormatter = new Intl.NumberFormat(‘en’, {
notation: ‘compact’,
maximumFractionDigits: 1
});
}
return window.wonCompactFormatter.format(n);
}
} catch (e) {}
// Manual fallback for browsers without Intl compact notation support.
var abs = Math.abs(n);
var divisor, suffix;
if (abs >= 1e9) { divisor = 1e9; suffix = ‘B’; }
else if (abs >= 1e6) { divisor = 1e6; suffix = ‘M’; }
else if (abs >= 1e3) { divisor = 1e3; suffix = ‘K’; }
else { return n.toLocaleString(); }
var scaled = n / divisor;
var formatted = scaled.toFixed(scaled >= 100 ? 0 : (scaled >= 10 ? 1 : 2));
return formatted.replace(/(\.\d*?)0+$/, ‘$1’).replace(/\.$/, ”) + suffix;
};
}
// Mirror the host theme’s body font onto Chart.js defaults so chart text
// (ticks, legend, tooltips, datalabels) matches the surrounding article.
// Chart.js is loaded with `defer`, so we wait for DOMContentLoaded before
// touching `Chart.defaults` — by that point Chart.js is guaranteed to be
// parsed but no chart in this file has instantiated yet (their init code
// also runs on DOMContentLoaded, and they’re registered after this block
// in HTML source order, so listener-registration order keeps us first).
if (window.wonChartFontDefaults) return;
window.wonChartFontDefaults = true;
function applyThemeChartFont() {
if (typeof Chart === ‘undefined’ || !Chart.defaults || !Chart.defaults.font) {
return false;
}
var bodyFont=””;
try {
bodyFont = getComputedStyle(document.body).fontFamily || ”;
} catch (e) {}
if (bodyFont) {
Chart.defaults.font.family = bodyFont;
}
return true;
}
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, applyThemeChartFont);
} else {
applyThemeChartFont();
}
})();
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 12 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 12 more Netflix titles on Netflix over 1 weeks. The Rip leads the comparison with 41,600,000 cumulative views. Combined total: 364,200,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, viewership, streaming data, Netflix Top 10, weekly views, audience metrics, The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man, The Whisper Man, 72 HOURS, Office Romance”,
“creator”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“publisher”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“datePublished”: “2026-09-01”,
“dateModified”: “2026-09-01”,
“variableMeasured”: “Cumulative weekly views (Netflix Top 10)”,
“measurementTechnique”: “Aggregation of Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “1 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”The Rip”},
{“@type”:”CreativeWork”,”name”:”War Machine”},
{“@type”:”CreativeWork”,”name”:”Apex”},
{“@type”:”CreativeWork”,”name”:”Thrash”},
{“@type”:”CreativeWork”,”name”:”Peaky Blinders: The Immortal Man”},
{“@type”:”CreativeWork”,”name”:”The Whisper Man”},
{“@type”:”CreativeWork”,”name”:”72 HOURS”},
{“@type”:”CreativeWork”,”name”:”Office Romance”},
{“@type”:”CreativeWork”,”name”:”Voicemails for Isabelle”},
{“@type”:”CreativeWork”,”name”:”People We Meet on Vacation”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a9736de1817d” }
}
(function() {
var showLabels = true;
var titleHighlight = “The Whisper Man”;
// Title rendered above the chart in place of the legend (1 week → “Opening Week”).
var chartTitle = “Opening Week Views”;
function loadScript(src, callback) {
var script = document.createElement(‘script’);
script.src = src;
script.onload = callback;
document.head.appendChild(script);
}
function createChart() {
var canvasEl = document.getElementById(‘netflix_bar_graph_6a9736de1817d’);
var ctx = canvasEl.getContext(‘2d’);
// Detect mobile screen size
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth 0) {
var perTitle = isSmallMobile ? 38 : (isMobile ? 44 : 50);
var basePad = isSmallMobile ? 80 : (isMobile ? 90 : 100);
var targetH = titleCount * perTitle + basePad;
canvasEl.height = targetH;
canvasEl.style.height = targetH + ‘px’;
}
var chartConfig = {
type: ‘bar’,
data: {
labels: [“The Rip”,”War Machine”,”Apex”,”Thrash”,”Peaky Blinders: The Immortal Man”,”The Whisper Man”,”72 HOURS”,”Office Romance”,”Voicemails for Isabelle”,”People We Meet on Vacation”,”Swapped”,”Little Brother”,”Joe’s College Road Trip”,”Ladies First”,”Remarkably Bright Creatures”,”Roommates”,”Don’t Say Good Luck”],
datasets: [{
label: chartTitle,
data: [41600000,39300000,38200000,37700000,25300000,23200000,22100000,20900000,17500000,17200000,15500000,14000000,12500000,11900000,10400000,8800000,8100000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″],
hoverBorderColor: ‘#b9090b’,
hoverBorderWidth: 2,
barPercentage: 0.9,
categoryPercentage: 0.9
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
title: {
display: true,
text: chartTitle,
color: ‘#000000’,
align: ‘start’,
font: {
size: titleFontSize,
weight: ‘bold’
},
padding: { top: 4, bottom: 16 }
},
legend: { display: false },
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: false,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function(context) {
return context.dataset.label + ‘: ‘ + context.parsed.x.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
ticks: {
font: {
size: axisFontSize
},
// Compact “1.2M” / “789K” ticks on mobile so the
// x-axis doesn’t eat half the chart width.
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
}
},
y: {
ticks: {
// Bold + brand-red color for the highlighted title’s y-axis tick;
// muted gray for everything else when a highlight is active.
font: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return { weight: ‘bold’, size: axisFontSize };
}
return { size: axisFontSize };
},
color: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return ‘#b9090b’;
}
return ‘#000000’;
}
}
}
},
}
};
// Add DataLabels configuration if labels are enabled
if (showLabels && window.ChartDataLabels) {
// Small bars (< 15% of max) get their label floated *above* the bar
// tip in Netflix red, so it never overlaps the red bar and never
// becomes black-on-red. A white text stroke keeps the label
// readable even when the chart sits on a coloured/image background.
var isSmallBar = function(context) {
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null) return false;
var maxValue = Math.max.apply(null, context.dataset.data.filter(function(v) {
return v !== null && v !== undefined;
}));
if (!maxValue) return false;
return (value / maxValue) * 100 < 15;
};
chartConfig.options.plugins.datalabels = {
anchor: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
align: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
offset: function(context) {
return isSmallBar(context) ? 4 : 0;
},
color: function(context) {
return isSmallBar(context) ? '#b9090b' : '#fff';
},
textStrokeColor: function(context) {
return isSmallBar(context) ? '#ffffff' : 'rgba(0,0,0,0.35)';
},
textStrokeWidth: 2,
clip: false,
clamp: true,
font: {
weight: 'bold',
size: dataLabelFontSize
},
formatter: function(value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function(context) {
var value = context.dataset.data[context.dataIndex];
return typeof value !== 'undefined' && value !== null;
}
};
chartConfig.plugins = [ChartDataLabels];
}
// Always register the watermark plugin (independent of data labels).
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);
var chart = new Chart(ctx, chartConfig);
}
function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript('https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0', function() {
createChart();
});
} else {
createChart();
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', ensureChartAndPlugin);
} else {
ensureChartAndPlugin();
}
})();
.sr-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
white-space: nowrap !important;
border: 0 !important;
}
.netflix-data-chart-container {
position: relative;
margin-bottom: 40px;
}
.netflix-data-chart-container table {
border-collapse: collapse;
width: 100%;
margin: 10px 0;
}
.netflix-data-chart-container th,
.netflix-data-chart-container td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
.netflix-data-chart-container th {
background-color: #f2f2f2;
font-weight: bold;
}
/* Dark mode support for netflix bar graph – mobile only */
@media (prefers-color-scheme: dark) and (max-width: 768px) {
.netflix-data-chart-container {
background-color: #ffffff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.netflix-data-chart-container canvas {
background-color: #ffffff;
}
.netflix-data-chart-container table {
background-color: #ffffff;
}
.netflix-data-chart-container th,
.netflix-data-chart-container td {
background-color: #ffffff;
color: #333333;
border: 1px solid #ddd;
}
.netflix-data-chart-container th {
background-color: #f2f2f2;
color: #333333;
}
}
/* Additional dark mode support for better contrast – mobile only */
@media (prefers-color-scheme: dark) and (max-width: 768px) {
.netflix-data-chart-container .sr-only {
color: #333333;
}
}
/* Mobile responsive font sizes */
@media (max-width: 768px) {
.netflix-data-chart-container canvas {
font-size: 12px !important;
}
}
@media (max-width: 480px) {
.netflix-data-chart-container canvas {
font-size: 10px !important;
}
}
Those are the 2026 movies; what about some other movies that fit in a similar genre from yesteryear? We’ve got titles like The Pale Blue Eye, Leave the World Behind, and Reptile among a few others in the crime, mystery, and thriller genre arena to compare against:
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Leave the World Behind, Glass Onion: A Knives Out Mystery, Rebel Ridge, Luther: The Fallen Sun, The Killer and 6 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Leave the World Behind, Glass Onion: A Knives Out Mystery, Rebel Ridge, Luther: The Fallen Sun, The Killer and 6 more Netflix titles on Netflix over 1 weeks. Leave the World Behind leads the comparison with 41,700,000 cumulative views. Combined total: 277,600,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, viewership, streaming data, Netflix Top 10, weekly views, audience metrics, Leave the World Behind, Glass Onion: A Knives Out Mystery, Rebel Ridge, Luther: The Fallen Sun, The Killer, The Whisper Man, Lou, The Pale Blue Eye”,
“creator”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“publisher”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“datePublished”: “2026-09-01”,
“dateModified”: “2026-09-01”,
“variableMeasured”: “Cumulative weekly views (Netflix Top 10)”,
“measurementTechnique”: “Aggregation of Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “1 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Leave the World Behind”},
{“@type”:”CreativeWork”,”name”:”Glass Onion: A Knives Out Mystery”},
{“@type”:”CreativeWork”,”name”:”Rebel Ridge”},
{“@type”:”CreativeWork”,”name”:”Luther: The Fallen Sun”},
{“@type”:”CreativeWork”,”name”:”The Killer”},
{“@type”:”CreativeWork”,”name”:”The Whisper Man”},
{“@type”:”CreativeWork”,”name”:”Lou”},
{“@type”:”CreativeWork”,”name”:”The Pale Blue Eye”},
{“@type”:”CreativeWork”,”name”:”Reptile”},
{“@type”:”CreativeWork”,”name”:”Mea Culpa”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a9736de18250” }
}
(function() {
var showLabels = true;
var titleHighlight = “The Whisper Man”;
// Title rendered above the chart in place of the legend (1 week → “Opening Week”).
var chartTitle = “Opening Week Views”;
function loadScript(src, callback) {
var script = document.createElement(‘script’);
script.src = src;
script.onload = callback;
document.head.appendChild(script);
}
function createChart() {
var canvasEl = document.getElementById(‘netflix_bar_graph_6a9736de18250’);
var ctx = canvasEl.getContext(‘2d’);
// Detect mobile screen size
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth 0) {
var perTitle = isSmallMobile ? 38 : (isMobile ? 44 : 50);
var basePad = isSmallMobile ? 80 : (isMobile ? 90 : 100);
var targetH = titleCount * perTitle + basePad;
canvasEl.height = targetH;
canvasEl.style.height = targetH + ‘px’;
}
var chartConfig = {
type: ‘bar’,
data: {
labels: [“Leave the World Behind”,”Glass Onion: A Knives Out Mystery”,”Rebel Ridge”,”Luther: The Fallen Sun”,”The Killer”,”The Whisper Man”,”Lou”,”The Pale Blue Eye”,”Reptile”,”Mea Culpa”,”Fair Play”],
datasets: [{
label: chartTitle,
data: [41700000,35000000,31200000,30200000,27900000,23200000,22300000,19800000,17700000,16000000,12600000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″],
hoverBorderColor: ‘#b9090b’,
hoverBorderWidth: 2,
barPercentage: 0.9,
categoryPercentage: 0.9
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
title: {
display: true,
text: chartTitle,
color: ‘#000000’,
align: ‘start’,
font: {
size: titleFontSize,
weight: ‘bold’
},
padding: { top: 4, bottom: 16 }
},
legend: { display: false },
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: false,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function(context) {
return context.dataset.label + ‘: ‘ + context.parsed.x.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
ticks: {
font: {
size: axisFontSize
},
// Compact “1.2M” / “789K” ticks on mobile so the
// x-axis doesn’t eat half the chart width.
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
}
},
y: {
ticks: {
// Bold + brand-red color for the highlighted title’s y-axis tick;
// muted gray for everything else when a highlight is active.
font: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return { weight: ‘bold’, size: axisFontSize };
}
return { size: axisFontSize };
},
color: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return ‘#b9090b’;
}
return ‘#000000’;
}
}
}
},
}
};
// Add DataLabels configuration if labels are enabled
if (showLabels && window.ChartDataLabels) {
// Small bars (< 15% of max) get their label floated *above* the bar
// tip in Netflix red, so it never overlaps the red bar and never
// becomes black-on-red. A white text stroke keeps the label
// readable even when the chart sits on a coloured/image background.
var isSmallBar = function(context) {
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null) return false;
var maxValue = Math.max.apply(null, context.dataset.data.filter(function(v) {
return v !== null && v !== undefined;
}));
if (!maxValue) return false;
return (value / maxValue) * 100 < 15;
};
chartConfig.options.plugins.datalabels = {
anchor: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
align: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
offset: function(context) {
return isSmallBar(context) ? 4 : 0;
},
color: function(context) {
return isSmallBar(context) ? '#b9090b' : '#fff';
},
textStrokeColor: function(context) {
return isSmallBar(context) ? '#ffffff' : 'rgba(0,0,0,0.35)';
},
textStrokeWidth: 2,
clip: false,
clamp: true,
font: {
weight: 'bold',
size: dataLabelFontSize
},
formatter: function(value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function(context) {
var value = context.dataset.data[context.dataIndex];
return typeof value !== 'undefined' && value !== null;
}
};
chartConfig.plugins = [ChartDataLabels];
}
// Always register the watermark plugin (independent of data labels).
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);
var chart = new Chart(ctx, chartConfig);
}
function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript('https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0', function() {
createChart();
});
} else {
createChart();
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', ensureChartAndPlugin);
} else {
ensureChartAndPlugin();
}
})();
.sr-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
white-space: nowrap !important;
border: 0 !important;
}
.netflix-data-chart-container {
position: relative;
margin-bottom: 40px;
}
.netflix-data-chart-container table {
border-collapse: collapse;
width: 100%;
margin: 10px 0;
}
.netflix-data-chart-container th,
.netflix-data-chart-container td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
.netflix-data-chart-container th {
background-color: #f2f2f2;
font-weight: bold;
}
/* Dark mode support for netflix bar graph – mobile only */
@media (prefers-color-scheme: dark) and (max-width: 768px) {
.netflix-data-chart-container {
background-color: #ffffff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.netflix-data-chart-container canvas {
background-color: #ffffff;
}
.netflix-data-chart-container table {
background-color: #ffffff;
}
.netflix-data-chart-container th,
.netflix-data-chart-container td {
background-color: #ffffff;
color: #333333;
border: 1px solid #ddd;
}
.netflix-data-chart-container th {
background-color: #f2f2f2;
color: #333333;
}
}
/* Additional dark mode support for better contrast – mobile only */
@media (prefers-color-scheme: dark) and (max-width: 768px) {
.netflix-data-chart-container .sr-only {
color: #333333;
}
}
/* Mobile responsive font sizes */
@media (max-width: 768px) {
.netflix-data-chart-container canvas {
font-size: 12px !important;
}
}
@media (max-width: 480px) {
.netflix-data-chart-container canvas {
font-size: 10px !important;
}
}
FlixPatrol Shows Where the Movie Is Performing Best
According to the latest data from FlixPatrol, The Whisper Man has had an exceptionally strong launch window since it began charting on August 29th and has grown its reach in the daily top 10s over the week and into the early part of this week.
Here is a breakdown of how the title is performing around the world:
An Explosive Opening Weekend in the Americas
Right out of the gate on August 29th, The Whisper Man debuted at #1 in the United States, Canada, Argentina, and Uruguay. It didn’t take long for the rest of the Americas to catch up. By the next day, it had claimed the top spot in almost every single Latin American country tracked by FlixPatrol—including heavy-hitters like Brazil, Mexico, and Colombia—where it remains locked in at number one today.
Taking Over Europe and the UK
The title had a slightly more measured debut across Europe on Thursday, debuting mostly at #2 behind established holdovers. However, the momentum was unstoppable. By Friday, August 30th, it surged to #1 in the United Kingdom, France, Germany, Italy, and Spain, and it has held onto the crown through today.
It has conquered nearly all of mainland Europe, with only a few minor pockets of resistance; for instance, it is currently sitting at an impressive (but stalled) #2 in Denmark and Norway.
Gaining Ground in Asia
While The Whisper Man is a certified smash in the West and has effortlessly claimed the top spot in Australia and New Zealand, it is experiencing a slightly slower burn in Asian markets—a common trend for Western releases.
- India: Debuted at #8 and has climbed steadily to #3.
- Japan & Philippines: Started lower on the charts but have rallied to #2 today.
- South Korea & Malaysia: Currently holding steady at #3.
- Indonesia: Arrived late to the charts but has jumped to #6 today.
What Do Critics and Audiences Think of The Whisper Man?
Despite completely dominating the Netflix Top 10 charts, The Whisper Man isn’t exactly winning over critics or audiences. Over on Rotten Tomatoes, the serial killer thriller currently holds a “Rotten” 48% Tomatometer score based on 58 reviews, with the audience Popcornmeter trailing just behind at a lackluster 41%. The IMDb score paints a similarly lukewarm picture, currently sitting at a 6.2/10. If you’re looking for our own take on the movie, we landed somewhere in the middle—you can check out our full thoughts in our official What’s on Netflix review.
So, what’s the overall consensus? For the most part, critics agree that the film is a moody, atmospheric throwback to 1990s serial killer mysteries, heavily elevated by a stellar veteran cast (with Robert De Niro frequently singled out as the standout performance). Reviewers at outlets like Empire Magazine and Decider noted that the heavyweight cast brings some much-needed heft to the movie, making it a perfectly watchable, easy-to-digest weekend thriller.
However, the praise usually stops there. The most common complaint is that the film feels like a highly predictable, by-the-numbers “Netflix product.” Detractors have called the plot generic, flat, and full of underdeveloped twists, with The Gate labeling it a “tremendous waste of talent.” Ultimately, the consensus seems to be that while The Whisper Man offers enough creepy intrigue to keep you watching, it’s a fairly disposable thriller that likely won’t leave a lasting impression once the credits roll.
Will this lukewarm reaction impact its weeks 2, 3, and beyond? We’ll have to wait to find out.
