Picture Credits: Netflix
Welcome back to our weekly deep dive into the global Netflix Top 10s, covering the week of July 20th to July 26th, 2026! This week’s charts are packed with major milestones, massive international debuts, and a few surprising stumbles. While Kevin Hart proves he is still a certified draw for the streamer with the stellar debut of his new comedy 72 Hours, the much-anticipated return of Ransom Canyon is showing some concerning viewership drops that could put its Season 3 renewal in jeopardy. Elsewhere, Harlan Coben’s I Will Find You has officially cemented its legacy by breaking into the all-time top 10 list, and international hits like France’s Elite Force and Brazil’s Elize: Shadows of a Woman are putting up massive numbers. Let’s break down what everyone was watching this past week.
Our top story this week was regarding the first-week numbers for Ransom Canyon season 2, which has suffered a pretty big drop if you take into account its shorter runtime. Whether this impacts the show’s season 3 chances remains to be seen, but it’s definitely not in comfortable renewal territory by our metrics. We’ve got a big deep dive into that here.
Let’s take a look at how this week’s top 10s in their respective categories compare:
- English TV: 34,400,000 views (Rank 147 of 162 weeks)
- English Film: 71,600,000 (Rank 91 of 162 weeks)
- Non-English TV: 45,800,000 (Rank 9 of 162 weeks)
- Non-English Film: 58,100,000 (Rank 9 of 162 weeks)
Also, quick note: we’ve done some more upgrades to our top 10 search tool. Mostly visual to help read the numbers better. I’m already zipping round it a lot faster so hopefully you will too.
1. 72 Hours Debuts Strong For Comedy
Kevin Hart has got the goods and delivered strong for Netflix with his new comedy 72 Hours. Despite reviews being less than stellar, it scooped up 22.1M views, which is very strong for a straight comedy. The main comps for this year are Little Brother, which did 14M in that opening 3-day window, and Joe’s College Road Trip, which did 12.5M.
First up, let’s compare the movie against the debuts of the other 2026 new arrivals:
(function () {
if (!window.wonWatermarkPlugin)
// 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)
try catch (e) value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
// Manual fallback for browsers without Intl compact notation support.
var abs = Math.abs(n);
var divisor, suffix;
if (abs >= 1e9)
else if (abs >= 1e6)
else if (abs >= 1e3)
total += (datasets[i].data[idx]
else value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
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() value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
if (document.readyState === ‘loading’)
// Suppress labels on segments smaller than ~8% of the bar
// so cramped segments stay clean. Tooltips still show the
// exact value on hover.
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' else 0);
})();
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 10 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 10 more Netflix titles on Netflix over 1 weeks. The Rip leads the comparison with 41,600,000 cumulative views. Combined total: 332,900,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, 72 HOURS, Office Romance, Voicemails for Isabelle”,
“creator”: value === null ,
“publisher”:
total += (datasets[i].data[idx] ,
“datePublished”: “2026-07-28”,
“dateModified”: “2026-07-28”,
“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”: [
value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
,
,
,
value === null ,
total += (datasets[i].data[idx] ,
value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
,
{“@type”:”CreativeWork”,”name”:”Office Romance”},
{“@type”:”CreativeWork”,”name”:”Voicemails for Isabelle”},
{“@type”:”CreativeWork”,”name”:”People We Meet on Vacation”},
{“@type”:”CreativeWork”,”name”:”Swapped”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee9064c2” }
}
(function() {
var showLabels = true;
var titleHighlight = “72 HOURS”;
// 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_6a691ee9064c2’);
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”,”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”],
datasets: [{
label: chartTitle,
data: [41600000,39300000,38200000,37700000,25300000,22100000,20900000,17500000,17200000,15500000,14000000,12500000,11900000,10400000,8800000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#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”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
Now let’s compare against Kevin Hart’s other library of titles, which there are a number of at this point:
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Me Time, Lift and 72 HOURS (1-week cumulative views)”,
“description”: “Cumulative weekly views for Me Time, Lift and 72 HOURS on Netflix over 1 weeks. Me Time leads the comparison with 34,200,000 cumulative views. Combined total: 89,100,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, Me Time, Lift, 72 HOURS”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”Me Time”},
{“@type”:”CreativeWork”,”name”:”Lift”},
{“@type”:”CreativeWork”,”name”:”72 HOURS”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee9065a7” }
}
(function() {
var showLabels = true;
var titleHighlight = “72 HOURS”;
// 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_6a691ee9065a7’);
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: [“Me Time”,”Lift”,”72 HOURS”],
datasets: [{
label: chartTitle,
data: [34200000,32800000,22100000],
backgroundColor: [“#b9090b”,”#b9090b”,”#000″],
borderColor: [“#b9090b”,”#b9090b”,”#000″],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#1a1a1a”],
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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
And finally, against some other straight comedies from years prior:
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Back in Action, Happy Gilmore 2, 72 HOURS, Nonnas, Ladies First and 3 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Back in Action, Happy Gilmore 2, 72 HOURS, Nonnas, Ladies First and 3 more Netflix titles on Netflix over 1 weeks. Back in Action leads the comparison with 46,800,000 cumulative views. Combined total: 168,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, Back in Action, Happy Gilmore 2, 72 HOURS, Nonnas, Ladies First, Incoming, Roommates, Unfrosted”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”Back in Action”},
{“@type”:”CreativeWork”,”name”:”Happy Gilmore 2″},
{“@type”:”CreativeWork”,”name”:”72 HOURS”},
{“@type”:”CreativeWork”,”name”:”Nonnas”},
{“@type”:”CreativeWork”,”name”:”Ladies First”},
{“@type”:”CreativeWork”,”name”:”Incoming”},
{“@type”:”CreativeWork”,”name”:”Roommates”},
{“@type”:”CreativeWork”,”name”:”Unfrosted”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee90664b” }
}
(function() {
var showLabels = true;
var titleHighlight = “72 HOURS”;
// 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_6a691ee90664b’);
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: [“Back in Action”,”Happy Gilmore 2″,”72 HOURS”,”Nonnas”,”Ladies First”,”Incoming”,”Roommates”,”Unfrosted”],
datasets: [{
label: chartTitle,
data: [46800000,46700000,22100000,15300000,11900000,9900000,8800000,7100000],
backgroundColor: [“#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
2. I Will Find You and Swapped In All-Time Top 10 List
Picture Credit: Netflix
As we predicted just last week, I Will Find You will comfortably be heading into the all-time top 10 list, and this week, it booted out HIS & HERS, which only just got into the all-time list relatively recently, permanently. DAHMER is our north star right now for the movie, which currently sits at #6, and while it has looked to be out of reach, the legs on this Harlan Coben series are something to behold. It has until September 17th, 2026 to keep picking up viewing hours.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Cumulative Views Over Time – DAHMER, HIS and HERS and I Will Find You (6-week trend)”,
“description”: “Week-by-week cumulative views trend for DAHMER, HIS and HERS and I Will Find You on Netflix across 6 weeks. DAHMER finishes the period with the highest cumulative count at 104,800,000 views. Combined final total: 294,200,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, cumulative views, viewership trend, Netflix Top 10, weekly views, time series, DAHMER, HIS and HERS, I Will Find You”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“variableMeasured”: “Cumulative weekly views over time (Netflix Top 10)”,
“measurementTechnique”: “Running totals derived from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “6 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”DAHMER”},
{“@type”:”CreativeWork”,”name”:”HIS and HERS”},
{“@type”:”CreativeWork”,”name”:”I Will Find You”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#cumulativeChart_6a691ee906695” }
}
document.addEventListener(‘DOMContentLoaded’, function () {
var ctx = document.getElementById(‘cumulativeChart_6a691ee906695’).getContext(‘2d’);
// Responsive sizing so the line chart doesn’t squash itself on
// narrow viewports. Right padding shrinks because the end-of-line
// pill labels also shrink; axis/title fonts scale to match the
// bar-graph scheme; ticks switch to compact notation on mobile.
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth = 0; i–) {
if (data[i] !== null && data[i] !== undefined) {
return context.dataIndex === i;
}
}
return false;
},
formatter: function (value, context) {
return context.dataset.label;
}
}
},
scales: {
x: {
title: {
display: true,
text: ‘Week Number’,
font: {
size: axisTitleFontSize
}
},
type: ‘linear’,
position: ‘bottom’,
ticks:{
stepSize: 1,
font: {
size: axisFontSize
}
}
},
y: {
title: {
display: true,
text: ‘Cumulative Views’,
font: {
size: axisTitleFontSize
}
},
beginAtZero: true,
ticks: {
font: { weight: ‘bold’, size: axisFontSize },
color: ‘#222’,
// Compact “1.2M” / “789K” on mobile so the y-axis
// doesn’t eat half the chart width with comma-
// separated numbers like “1,234,567,890”.
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
}
}
},
elements: {
line: {
tension: 0 // Disable bezier curves
}
}
}
});
});
/* Dark mode support for cumulative views chart – mobile only */
@media (prefers-color-scheme: dark) and (max-width: 768px) {
.netflix-data {
background-color: #ffffff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.netflix-data canvas {
background-color: #ffffff;
}
}
The animated movie Swapped also saw its position jump up, but its qualifying period ends on Friday (July 31st), and it needs about 200K more views to take #8 away from Leave the World Behind, which sits at 143.4M views. Infinitely doable, but Back in Action, which sits at 147.2M, is probably out of reach.
3. Elite Force from Netflix France
It’s been tracking strong globally in the daily top 10s ever since its Wednesday debut, and the top 10 numbers back that debut up. It debuted to 10.1M views, smoking Netflix’s other French TV lineup with Wednesday launches. Expect a season 2 order for this one.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Elite Force – Season 1, Under a Dark Sun, Blood Coast – Season 1, Néro the Assassin – Season 1, Christmas Flow – Season 1 and 2 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Elite Force – Season 1, Under a Dark Sun, Blood Coast – Season 1, Néro the Assassin – Season 1, Christmas Flow – Season 1 and 2 more Netflix titles on Netflix over 1 weeks. Elite Force – Season 1 leads the comparison with 10,100,000 cumulative views. Combined total: 35,100,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, Elite Force – Season 1, Under a Dark Sun, Blood Coast – Season 1, Néro the Assassin – Season 1, Christmas Flow – Season 1, Young Millionaires – Season 1, Class Act – Season 1”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”Elite Force – Season 1″},
{“@type”:”CreativeWork”,”name”:”Under a Dark Sun”},
{“@type”:”CreativeWork”,”name”:”Blood Coast – Season 1″},
{“@type”:”CreativeWork”,”name”:”Néro the Assassin – Season 1″},
{“@type”:”CreativeWork”,”name”:”Christmas Flow – Season 1″},
{“@type”:”CreativeWork”,”name”:”Young Millionaires – Season 1″},
{“@type”:”CreativeWork”,”name”:”Class Act – Season 1″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee9067ae” }
}
(function() {
var showLabels = true;
var titleHighlight = “Elite Force – Season 1”;
// 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_6a691ee9067ae’);
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: [“Elite Force – Season 1″,”Under a Dark Sun”,”Blood Coast – Season 1″,”N\u00e9ro the Assassin – Season 1″,”Christmas Flow – Season 1″,”Young Millionaires – Season 1″,”Class Act – Season 1″],
datasets: [{
label: chartTitle,
data: [10100000,5800000,5600000,4500000,4200000,3500000,1400000],
backgroundColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#1a1a1a”,”#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
4. The Ultimatum: Marry or Move On
Last week, we forgot to include the latest season of The Ultimatum, Netflix’s dating reality series, which held strong in seasons 2 and 3 but is definitely showing some decay now.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – The Ultimatum: Marry or Move On – Season 1, The Ultimatum: Marry or Move On – Season 2, The Ultimatum: Marry or Move On – Season 3 and The Ultimatum: Marry or Move On – Season 4 (2-week stacked view)”,
“description”: “Weekly views breakdown for The Ultimatum: Marry or Move On – Season 1, The Ultimatum: Marry or Move On – Season 2, The Ultimatum: Marry or Move On – Season 3 and The Ultimatum: Marry or Move On – Season 4 on Netflix over 2 weeks, with each bar segmented by individual week. The Ultimatum: Marry or Move On – Season 1 leads the comparison with 12,200,000 cumulative views. Combined total: 30,100,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, views, weekly breakdown, streaming data, Netflix Top 10, stacked bar chart, The Ultimatum: Marry or Move On – Season 1, The Ultimatum: Marry or Move On – Season 2, The Ultimatum: Marry or Move On – Season 3, The Ultimatum: Marry or Move On – Season 4”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“variableMeasured”: “Weekly views by title and week (Netflix Top 10)”,
“measurementTechnique”: “Per-week values from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “2 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”The Ultimatum: Marry or Move On – Season 1″},
{“@type”:”CreativeWork”,”name”:”The Ultimatum: Marry or Move On – Season 2″},
{“@type”:”CreativeWork”,”name”:”The Ultimatum: Marry or Move On – Season 3″},
{“@type”:”CreativeWork”,”name”:”The Ultimatum: Marry or Move On – Season 4″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a691ee906887” }
}
(function () {
var showLabels = true;
var titleHighlight = “The Ultimatum: Marry or Move On – Season 4”;
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_split_bar_6a691ee906887’);
var ctx = canvasEl.getContext(‘2d’);
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth 0) {
var perTitle = isSmallMobile ? 38 : (isMobile ? 44 : 50);
var basePad = isSmallMobile ? 90 : (isMobile ? 100 : 100);
var targetH = titleCount * perTitle + basePad;
canvasEl.height = targetH;
canvasEl.style.height = targetH + ‘px’;
}
var chartConfig = {
type: ‘bar’,
data: {
labels: [“The Ultimatum: Marry or Move On – Season 1″,”The Ultimatum: Marry or Move On – Season 2″,”The Ultimatum: Marry or Move On – Season 3″,”The Ultimatum: Marry or Move On – Season 4”],
datasets: [{“label”:”Week 1″,”data”:[5200000,3600000,3300000,1900000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[7000000,3100000,3400000,2600000],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608CC”,”#900608″],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625}] },
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
legend: {
display: true,
position: ‘top’,
labels: {
font: { size: legendFontSize },
padding: 12,
boxWidth: 14,
boxHeight: 14
}
},
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
footerColor: ‘#cccccc’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
footerFont: { size: 12, weight: ‘normal’ },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: true,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function (context) {
return context.dataset.label + ‘: ‘ + Number(context.parsed.x).toLocaleString() + ‘ views’;
},
footer: function (items) {
if (!items || !items.length) return ”;
var idx = items[0].dataIndex;
var total = 0;
var datasets = items[0].chart.data.datasets;
for (var i = 0; i < datasets.length; i++) {
total += (datasets[i].data[idx] || 0);
}
return 'Total: ' + total.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
stacked: true,
ticks: {
font: { size: axisFontSize },
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
},
grid: { color: 'rgba(0,0,0,0.05)' }
},
y: {
stacked: true,
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';
}
},
grid: { display: false }
}
}
}
};
if (showLabels && window.ChartDataLabels) {
chartConfig.options.plugins.datalabels = {
anchor: 'center',
align: 'center',
color: '#ffffff',
textStrokeColor: 'rgba(0,0,0,0.4)',
textStrokeWidth: 2,
font: { weight: 'bold', size: dataLabelFontSize },
formatter: function (value) {
if (!value) return '';
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function (context) {
// Suppress labels on segments smaller than ~8% of the bar
// so cramped segments stay clean. Tooltips still show the
// exact value on hover.
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null || value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
}
};
chartConfig.plugins = [ChartDataLabels];
}
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);
new Chart(ctx, chartConfig);
}
function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js’, ensureChartAndPlugin);
} else if (showLabels && !window.ChartDataLabels) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]’, createChart);
} else {
createChart();
}
}
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, ensureChartAndPlugin);
} else {
ensureChartAndPlugin();
}
})();
.netflix-data-chart-container {
position: relative;
margin-bottom: 40px;
}
.netflix-data-chart-container .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;
}
@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;
}
}
5. Week 2 for The Hawk
The Hawk got off to a mixed start in week 1, undoubtedly thanks to some lukewarm reviews, but how did it fare in week 2? It saw a nearly 30% uplift in viewing hours, which placed it ultimately second for the week in the English TV chart, but it’s lagging behind quite a few shows with comparable budgets and is ahead of the likes of Tires, Leanne, and Survival of the Thickest, which ultimately did secure season 2 orders.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – The Gentlemen – Season 1, Nobody Wants This – Season 1, FUBAR – Season 1, The Four Seasons – Season 1, Running Point – Season 1 and 12 more Netflix titles (2-week stacked view)”,
“description”: “Weekly views breakdown for The Gentlemen – Season 1, Nobody Wants This – Season 1, FUBAR – Season 1, The Four Seasons – Season 1, Running Point – Season 1 and 12 more Netflix titles on Netflix over 2 weeks, with each bar segmented by individual week. The Gentlemen – Season 1 leads the comparison with 32,300,000 cumulative views. Combined total: 234,500,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, views, weekly breakdown, streaming data, Netflix Top 10, stacked bar chart, The Gentlemen – Season 1, Nobody Wants This – Season 1, FUBAR – Season 1, The Four Seasons – Season 1, Running Point – Season 1, Obliterated – Season 1, Boots – Season 1, A Man on the Inside – Season 1”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“variableMeasured”: “Weekly views by title and week (Netflix Top 10)”,
“measurementTechnique”: “Per-week values from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “2 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”The Gentlemen – Season 1″},
{“@type”:”CreativeWork”,”name”:”Nobody Wants This – Season 1″},
{“@type”:”CreativeWork”,”name”:”FUBAR – Season 1″},
{“@type”:”CreativeWork”,”name”:”The Four Seasons – Season 1″},
{“@type”:”CreativeWork”,”name”:”Running Point – Season 1″},
{“@type”:”CreativeWork”,”name”:”Obliterated – Season 1″},
{“@type”:”CreativeWork”,”name”:”Boots – Season 1″},
{“@type”:”CreativeWork”,”name”:”A Man on the Inside – Season 1″},
{“@type”:”CreativeWork”,”name”:”No Good Deed – Season 1″},
{“@type”:”CreativeWork”,”name”:”The Hawk – Season 1″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a691ee90695a” }
}
(function () {
var showLabels = true;
var titleHighlight = “The Hawk – Season 1”;
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_split_bar_6a691ee90695a’);
var ctx = canvasEl.getContext(‘2d’);
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth 0) {
var perTitle = isSmallMobile ? 38 : (isMobile ? 44 : 50);
var basePad = isSmallMobile ? 90 : (isMobile ? 100 : 100);
var targetH = titleCount * perTitle + basePad;
canvasEl.height = targetH;
canvasEl.style.height = targetH + ‘px’;
}
var chartConfig = {
type: ‘bar’,
data: {
labels: [“The Gentlemen – Season 1″,”Nobody Wants This – Season 1″,”FUBAR – Season 1″,”The Four Seasons – Season 1″,”Running Point – Season 1″,”Obliterated – Season 1″,”Boots – Season 1″,”A Man on the Inside – Season 1″,”No Good Deed – Season 1″,”The Hawk – Season 1″,”KAOS”,”Survival of the Thickest – Season 1″,”Tires – Season 1″,”Leanne – Season 1″,”The Decameron”,”Unstable – Season 1″,”Too Much – Season 1″],
datasets: [{“label”:”Week 1″,”data”:[12200000,10300000,12500000,11900000,9300000,7000000,4700000,6900000,6000000,4800000,3400000,3700000,3800000,2700000,2100000,3400000,1900000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[20100000,15900000,12300000,12500000,12200000,9000000,9400000,7000000,5600000,6200000,5900000,3800000,3100000,2800000,2100000,0,0],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608″,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625}] },
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
legend: {
display: true,
position: ‘top’,
labels: {
font: { size: legendFontSize },
padding: 12,
boxWidth: 14,
boxHeight: 14
}
},
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
footerColor: ‘#cccccc’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
footerFont: { size: 12, weight: ‘normal’ },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: true,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function (context) {
return context.dataset.label + ‘: ‘ + Number(context.parsed.x).toLocaleString() + ‘ views’;
},
footer: function (items) {
if (!items || !items.length) return ”;
var idx = items[0].dataIndex;
var total = 0;
var datasets = items[0].chart.data.datasets;
for (var i = 0; i < datasets.length; i++) {
total += (datasets[i].data[idx] || 0);
}
return 'Total: ' + total.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
stacked: true,
ticks: {
font: { size: axisFontSize },
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
},
grid: { color: 'rgba(0,0,0,0.05)' }
},
y: {
stacked: true,
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';
}
},
grid: { display: false }
}
}
}
};
if (showLabels && window.ChartDataLabels) {
chartConfig.options.plugins.datalabels = {
anchor: 'center',
align: 'center',
color: '#ffffff',
textStrokeColor: 'rgba(0,0,0,0.4)',
textStrokeWidth: 2,
font: { weight: 'bold', size: dataLabelFontSize },
formatter: function (value) {
if (!value) return '';
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function (context) {
// Suppress labels on segments smaller than ~8% of the bar
// so cramped segments stay clean. Tooltips still show the
// exact value on hover.
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null || value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
}
};
chartConfig.plugins = [ChartDataLabels];
}
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);
new Chart(ctx, chartConfig);
}
function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js’, ensureChartAndPlugin);
} else if (showLabels && !window.ChartDataLabels) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]’, createChart);
} else {
createChart();
}
}
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, ensureChartAndPlugin);
} else {
ensureChartAndPlugin();
}
})();
.netflix-data-chart-container {
position: relative;
margin-bottom: 40px;
}
.netflix-data-chart-container .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;
}
@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;
}
}
6. Little House on the Prairie In Week 3
Last week, we clocked a 55% increase in viewing hours for the period drama series Little House on the Prairie, but that momentum didn’t stay in week 3, with a near 60% drop in viewing hours this week. Of course, it got ordered for a second season incredibly early and is already in production, and with these numbers we probably would’ve given it a pretty good chance of renewal, but it’s not a big hit by any stretch.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – Black Doves – Season 1, American Primeval, Man on Fire – Season 1, All the Light We Cannot See, The Waterfront – Season 1 and 18 more Netflix titles (3-week stacked view)”,
“description”: “Weekly views breakdown for Black Doves – Season 1, American Primeval, Man on Fire – Season 1, All the Light We Cannot See, The Waterfront – Season 1 and 18 more Netflix titles on Netflix over 3 weeks, with each bar segmented by individual week. Black Doves – Season 1 leads the comparison with 32,100,000 cumulative views. Combined total: 426,000,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, views, weekly breakdown, streaming data, Netflix Top 10, stacked bar chart, Black Doves – Season 1, American Primeval, Man on Fire – Season 1, All the Light We Cannot See, The Waterfront – Season 1, Nemesis – Season 1, The Diplomat – Season 1, Obliterated – Season 1”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“variableMeasured”: “Weekly views by title and week (Netflix Top 10)”,
“measurementTechnique”: “Per-week values from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “3 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Black Doves – Season 1″},
{“@type”:”CreativeWork”,”name”:”American Primeval”},
{“@type”:”CreativeWork”,”name”:”Man on Fire – Season 1″},
{“@type”:”CreativeWork”,”name”:”All the Light We Cannot See”},
{“@type”:”CreativeWork”,”name”:”The Waterfront – Season 1″},
{“@type”:”CreativeWork”,”name”:”Nemesis – Season 1″},
{“@type”:”CreativeWork”,”name”:”The Diplomat – Season 1″},
{“@type”:”CreativeWork”,”name”:”Obliterated – Season 1″},
{“@type”:”CreativeWork”,”name”:”Ransom Canyon – Season 1″},
{“@type”:”CreativeWork”,”name”:”Little House on the Prairie – Season 1″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a691ee906a3d” }
}
(function () {
var showLabels = true;
var titleHighlight = “Little House on the Prairie – Season 1”;
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_split_bar_6a691ee906a3d’);
var ctx = canvasEl.getContext(‘2d’);
var isMobile = window.innerWidth <= 768;
var isSmallMobile = window.innerWidth 0) {
var perTitle = isSmallMobile ? 38 : (isMobile ? 44 : 50);
var basePad = isSmallMobile ? 90 : (isMobile ? 100 : 100);
var targetH = titleCount * perTitle + basePad;
canvasEl.height = targetH;
canvasEl.style.height = targetH + ‘px’;
}
var chartConfig = {
type: ‘bar’,
data: {
labels: [“Black Doves – Season 1″,”American Primeval”,”Man on Fire – Season 1″,”All the Light We Cannot See”,”The Waterfront – Season 1″,”Nemesis – Season 1″,”The Diplomat – Season 1″,”Obliterated – Season 1″,”Ransom Canyon – Season 1″,”Little House on the Prairie – Season 1″,”The Residence – Season 1″,”Dept. Q – Season 1″,”The Boroughs – Season 1″,”Territory”,”House of Guinness”,”The Abandons – Season 1″,”Something Very Bad Is Going to Happen”,”Geek Girl – Season 1″,”Bet – Season 1″,”Dead Boy Detectives – Season 1″,”Bodkin”,”Vladimir”,”The Decameron”],
datasets: [{“label”:”Week 1″,”data”:[10800000,10400000,11000000,9800000,8300000,7100000,8500000,7000000,7200000,6400000,6400000,6000000,5600000,6400000,5200000,7300000,4500000,3400000,2400000,3100000,3300000,4200000,2100000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[14600000,14300000,12600000,10100000,11600000,11400000,9800000,9000000,9400000,9800000,8800000,8900000,9500000,6300000,6400000,7600000,6900000,7300000,5000000,4700000,4000000,3500000,2100000],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608″,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 3″,”data”:[6700000,6700000,5500000,5700000,5600000,5900000,4600000,5200000,4200000,4000000,4600000,4300000,3700000,2400000,3400000,0,3100000,3800000,2900000,1800000,1900000,0,0],”backgroundColor”:[“#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10″,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”,”#d40d10CC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625}] },
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
legend: {
display: true,
position: ‘top’,
labels: {
font: { size: legendFontSize },
padding: 12,
boxWidth: 14,
boxHeight: 14
}
},
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
footerColor: ‘#cccccc’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
footerFont: { size: 12, weight: ‘normal’ },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: true,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function (context) {
return context.dataset.label + ‘: ‘ + Number(context.parsed.x).toLocaleString() + ‘ views’;
},
footer: function (items) {
if (!items || !items.length) return ”;
var idx = items[0].dataIndex;
var total = 0;
var datasets = items[0].chart.data.datasets;
for (var i = 0; i < datasets.length; i++) {
total += (datasets[i].data[idx] || 0);
}
return 'Total: ' + total.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
stacked: true,
ticks: {
font: { size: axisFontSize },
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
},
grid: { color: 'rgba(0,0,0,0.05)' }
},
y: {
stacked: true,
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';
}
},
grid: { display: false }
}
}
}
};
if (showLabels && window.ChartDataLabels) {
chartConfig.options.plugins.datalabels = {
anchor: 'center',
align: 'center',
color: '#ffffff',
textStrokeColor: 'rgba(0,0,0,0.4)',
textStrokeWidth: 2,
font: { weight: 'bold', size: dataLabelFontSize },
formatter: function (value) {
if (!value) return '';
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function (context) {
// Suppress labels on segments smaller than ~8% of the bar
// so cramped segments stay clean. Tooltips still show the
// exact value on hover.
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null || value === 0) return false;
var idx = context.dataIndex;
var total = 0;
var datasets = context.chart.data.datasets;
for (var i = 0; i 0 && (value / total) > 0.08;
}
};
chartConfig.plugins = [ChartDataLabels];
}
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);
new Chart(ctx, chartConfig);
}
function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js’, ensureChartAndPlugin);
} else if (showLabels && !window.ChartDataLabels) {
loadScript(‘https://cdn.jsdelivr.net/npm/[email protected]’, createChart);
} else {
createChart();
}
}
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, ensureChartAndPlugin);
} else {
ensureChartAndPlugin();
}
})();
.netflix-data-chart-container {
position: relative;
margin-bottom: 40px;
}
.netflix-data-chart-container .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;
}
@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;
}
}
7. A Toxic Love Story is huge
We don’t often see big Netflix feature docs launch on a Thursday, but that was the case with A Toxic Love Story, and it had a storming start with 18M views, putting it well ahead of comparable English-language titles debuting on the same day.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – A Toxic Love Story, Aileen: Queen of the Serial Killers, The Murder of Rachel Nickell and I Am Vanessa Guillen (1-week cumulative views)”,
“description”: “Cumulative weekly views for A Toxic Love Story, Aileen: Queen of the Serial Killers, The Murder of Rachel Nickell and I Am Vanessa Guillen on Netflix over 1 weeks. A Toxic Love Story leads the comparison with 18,000,000 cumulative views. Combined total: 38,900,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, A Toxic Love Story, Aileen: Queen of the Serial Killers, The Murder of Rachel Nickell, I Am Vanessa Guillen”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”A Toxic Love Story”},
{“@type”:”CreativeWork”,”name”:”Aileen: Queen of the Serial Killers”},
{“@type”:”CreativeWork”,”name”:”The Murder of Rachel Nickell”},
{“@type”:”CreativeWork”,”name”:”I Am Vanessa Guillen”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee906b1c” }
}
(function() {
var showLabels = true;
var titleHighlight = “A Toxic Love Story”;
// 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_6a691ee906b1c’);
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: [“A Toxic Love Story”,”Aileen: Queen of the Serial Killers”,”The Murder of Rachel Nickell”,”I Am Vanessa Guillen”],
datasets: [{
label: chartTitle,
data: [18000000,10100000,6100000,4700000],
backgroundColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#1a1a1a”,”#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
8. Elize: Shadows of a Woman from Netflix Brazil
Also having a lot to celebrate is Netflix Brazil, which launched a big new movie on Wednesday, with that being Elize: Shadows of a Woman. That put it high up against other movies debuting from the region on the same day, with only Caramelo being ahead of it.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Caramelo, Elize: Shadows of a Woman, Burning Betrayal, Christmas Full of Grace, Overhaul and 6 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Caramelo, Elize: Shadows of a Woman, Burning Betrayal, Christmas Full of Grace, Overhaul and 6 more Netflix titles on Netflix over 1 weeks. Caramelo leads the comparison with 17,300,000 cumulative views. Combined total: 95,700,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, Caramelo, Elize: Shadows of a Woman, Burning Betrayal, Christmas Full of Grace, Overhaul, State of Fear, Bionic, The Secret Diary of an Exchange Student”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”Caramelo”},
{“@type”:”CreativeWork”,”name”:”Elize: Shadows of a Woman”},
{“@type”:”CreativeWork”,”name”:”Burning Betrayal”},
{“@type”:”CreativeWork”,”name”:”Christmas Full of Grace”},
{“@type”:”CreativeWork”,”name”:”Overhaul”},
{“@type”:”CreativeWork”,”name”:”State of Fear”},
{“@type”:”CreativeWork”,”name”:”Bionic”},
{“@type”:”CreativeWork”,”name”:”The Secret Diary of an Exchange Student”},
{“@type”:”CreativeWork”,”name”:”Confessions of an Invisible Girl”},
{“@type”:”CreativeWork”,”name”:”Cheers to Life”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee906bc1” }
}
(function() {
var showLabels = true;
var titleHighlight = “Elize: Shadows of a Woman”;
// 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_6a691ee906bc1’);
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: [“Caramelo”,”Elize: Shadows of a Woman”,”Burning Betrayal”,”Christmas Full of Grace”,”Overhaul”,”State of Fear”,”Bionic”,”The Secret Diary of an Exchange Student”,”Confessions of an Invisible Girl”,”Cheers to Life”,”The Son of a Thousand Men”],
datasets: [{
label: chartTitle,
data: [17300000,16200000,14700000,8800000,8500000,8000000,7000000,4900000,4600000,4100000,1600000],
backgroundColor: [“#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#1a1a1a”,”#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
9. The Truthers from Netflix Spain
Not quite as much to celebrate for Netflix Spain, which saw its new movie The Truthers debut towards the bottom of the pack of its mid-performing movies released on a Friday:
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Bad Influence, A Widow’s Game, The Marked Woman, Firebreak, The Truthers and 2 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Bad Influence, A Widow’s Game, The Marked Woman, Firebreak, The Truthers and 2 more Netflix titles on Netflix over 1 weeks. Bad Influence leads the comparison with 16,900,000 cumulative views. Combined total: 56,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, Bad Influence, A Widow’s Game, The Marked Woman, Firebreak, The Truthers, 53 Sundays, She Walks in Darkness”,
“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-07-28”,
“dateModified”: “2026-07-28”,
“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”:”Bad Influence”},
{“@type”:”CreativeWork”,”name”:”A Widow’s Game”},
{“@type”:”CreativeWork”,”name”:”The Marked Woman”},
{“@type”:”CreativeWork”,”name”:”Firebreak”},
{“@type”:”CreativeWork”,”name”:”The Truthers”},
{“@type”:”CreativeWork”,”name”:”53 Sundays”},
{“@type”:”CreativeWork”,”name”:”She Walks in Darkness”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a691ee906c6a” }
}
(function() {
var showLabels = true;
var titleHighlight = “The Truthers”;
// 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_6a691ee906c6a’);
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: [“Bad Influence”,”A Widow’s Game”,”The Marked Woman”,”Firebreak”,”The Truthers”,”53 Sundays”,”She Walks in Darkness”],
datasets: [{
label: chartTitle,
data: [16900000,15400000,6600000,6100000,6000000,2900000,2700000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#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/[email protected]/dist/chart.umd.min.js', function() {
ensureChartAndPlugin();
});
} else if (showLabels && !window.ChartDataLabels) {
loadScript('https://cdn.jsdelivr.net/npm/[email protected]', 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;
}
}
Full Netflix Top 10s for July 20th to July 26th, 2026
English TV
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | I Will Find You: Limited Series | 40,100,000 (-17.32%) | 7,300,000 | 6 |
| 2 | The Hawk: Season 1 | 32,000,000 (29.55%) | 6,200,000 | 2 |
| 3 | Ransom Canyon: Season 2 | 25,500,000 | 4,100,000 | 1 |
| 4 | Little House on the Prairie: Season 1 | 26,300,000 (-59.54%) | 4,000,000 | 3 |
| 5 | The Ultimatum: Marry or Move On: Season 4 | 21,800,000 (68.99%) | 2,600,000 | 2 |
| 6 | Raw: July 20, 2026 | 4,100,000 (-19.61%) | 2,400,000 | 1 |
| 7 | Avatar: The Last Airbender: Season 2 | 17,100,000 (-32.14%) | 2,300,000 | 5 |
| 8 | Salish & Jordan Matter: Season 2 | 4,700,000 (-9.62%) | 2,100,000 | 5 |
| 9 | Worst Neighbor Ever: Season 1 | 7,100,000 (-43.20%) | 1,900,000 | 4 |
| 10 | Stokes Twins: Season 1 | 4,900,000 | 1,500,000 | 1 |
English Film
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | 72 HOURS | 38,700,000 | 22,100,000 | 1 |
| 2 | A Toxic Love Story | 27,300,000 | 18,000,000 | 1 |
| 3 | Sniper: No Nation | 8,400,000 (64.71%) | 5,300,000 | 2 |
| 4 | Voicemails for Isabelle | 9,100,000 (-18.75%) | 4,600,000 | 6 |
| 5 | Quarantine 2: Terminal | 6,000,000 | 4,200,000 | 1 |
| 6 | Ordinary Angels | 8,100,000 | 4,100,000 | 1 |
| 7 | KPop Demon Hunters | 6,100,000 (7.02%) | 3,700,000 | 58 |
| 8 | Swapped | 5,700,000 | 3,400,000 | 11 |
| 9 | War Machine | 5,900,000 | 3,200,000 | 9 |
| 10 | Monsters vs. Aliens | 4,800,000 | 3,000,000 | 1 |
Non-English TV
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | Elite Force: Season 1 | 49,600,000 | 10,100,000 | 1 |
| 2 | The East Palace: Limited Series | 55,200,000 (67.78%) | 8,100,000 | 2 |
| 3 | Agent Kim Reactivated: Limited Series | 80,300,000 (11.53%) | 7,300,000 | 5 |
| 4 | My Daughter’s Father: Season 1 | 38,200,000 | 5,200,000 | 1 |
| 5 | Spooky in Love: Limited Series | 17,000,000 (385.71%) | 4,200,000 | 2 |
| 6 | The Map of Longing: Limited Series | 14,900,000 (122.39%) | 3,300,000 | 2 |
| 7 | Teach You a Lesson: Limited Series | 24,300,000 (-22.61%) | 2,300,000 | 8 |
| 8 | The Apartment Job: Limited Series | 11,100,000 (0.00%) | 2,000,000 | 3 |
| 9 | The Polygamist: Season 1 | 17,800,000 (-30.47%) | 1,800,000 | 7 |
| 10 | Jujutsu Kaisen: Season 3 | 7,400,000 | 1,500,000 | 6 |
Non-English Film
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | Elize: Shadows of a Woman | 25,100,000 | 16,200,000 | 1 |
| 2 | Desire | 24,300,000 (15.71%) | 14,900,000 | 2 |
| 3 | The Debt Collector | 16,900,000 | 7,600,000 | 1 |
| 4 | The Truthers | 10,600,000 | 6,000,000 | 1 |
| 5 | 23 000 Lives | 11,100,000 (76.19%) | 5,800,000 | 2 |
| 6 | Ikka | 5,000,000 (-66.67%) | 2,100,000 | 3 |
| 7 | Love in Slow Motion | 2,600,000 | 1,700,000 | 1 |
| 8 | Nothing to Lose | 2,400,000 (-79.49%) | 1,400,000 | 3 |
| 9 | Suzzanna: Witchcraft | 2,800,000 | 1,200,000 | 1 |
| 10 | The Marked Woman | 2,200,000 (-21.43%) | 1,200,000 | 8 |
That’s it for this week – we’ll be back again next Tuesday with another rundown of the Netflix top 10s!
