Picture Credit: Netflix
Welcome to your weekly breakdown of the biggest hits, misses, and surprises in the Netflix Top 10s. This week, we’re diving into the global viewing data for the week ending June 28th, 2026. It is a week of fascinating contrasts on the charts. While some massive, highly anticipated properties are struggling to find their footing, word-of-mouth is doing the heavy lifting for a few sleeper hits, resulting in some incredibly rare second-week viewing bumps.
In this week’s report, we’ll break down the respectable debut of a new R-rated comedy, look at Harlan Coben’s continued (and practically ironclad) dominance on the TV charts, and track an animated giant that is officially knocking on the door of the all-time Top 10 list.
Before we dive into the biggest winners of the week, let’s quickly address the elephant in the room. If you’re looking for our report on Avatar: The Last Airbender, which tanked in week 1 compared to the first season several years ago, we’ve done a story on that and how the early tea leaves of poor performance were clear.
A few big no-shows this week, with the biggest probably being In The Hand of Dante, suggesting it got less than 2.7M views. Some have pointed out that it was a weird pickup for Netflix, given that the entire thing leaked and received poor reviews when it debuted. Worse still, the movie barely featured in the daily top 10s with FlixPatrol recording entries in Romania, Serbia, Slovakia, Spain, and Ukraine only.
On the doc side, Chris & Martina: The Final Set was a no-show, as was The American Experiment, Rhythm + Flow Italy S3, and Ryan Hamilton: This Just Hit Me.
1. Little Brother Debuts OK For A Pure Comedy
Little Brother. (L to R) John Cena as Rudd, Eric Andre as Marcus in Little Brother. Cr. Clifton Prescod/Netflix © 2026
A big new R-rated comedy just touched down on Netflix, but it didn’t manage to top the movie charts, instead coming in a distant second. Ultimately, the movie pulled in 14M views from its 23.4M hours watched, which places it towards the bottom of the 2026 releases:
(function () {
if (!window.wonWatermarkPlugin) !Chart.defaults
// 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)
bodyFont = getComputedStyle(document.body).fontFamily
try 0);
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)
total += (datasets[i].data[idx]
else if (abs >= 1e6) 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;
else if (abs >= 1e3)
total += (datasets[i].data[idx]
else
var scaled = n / divisor;
var formatted = scaled.toFixed(scaled >= 100 ? 0 : (scaled >= 10 ? 1 : 2));
return formatted.replace(/(\.\d*?)0+$/, ‘$1’).replace(/\.$/, ”) + suffix;
};
}
// Mirror the host theme’s body font onto Chart.js defaults so chart text
// (ticks, legend, tooltips, datalabels) matches the surrounding article.
// Chart.js is loaded with `defer`, so we wait for DOMContentLoaded before
// touching `Chart.defaults` — by that point Chart.js is guaranteed to be
// parsed but no chart in this file has instantiated yet (their init code
// also runs on DOMContentLoaded, and they’re registered after this block
// in HTML source order, so listener-registration order keeps us first).
if (window.wonChartFontDefaults) return;
window.wonChartFontDefaults = true;
function applyThemeChartFont()
if (document.readyState === ‘loading’) 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;
else 0);
})();
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 9 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for The Rip, War Machine, Apex, Thrash, Peaky Blinders: The Immortal Man and 9 more Netflix titles on Netflix over 1 weeks. The Rip leads the comparison with 41,600,000 cumulative views. Combined total: 310,800,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, Office Romance, Voicemails for Isabelle, People We Meet on Vacation”,
“creator”: ,
“publisher”: ,
“datePublished”: “2026-06-30”,
“dateModified”: “2026-06-30”,
“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”: [
,
// 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' ,
,
,
total += (datasets[i].data[idx] ,
value === null ,
{“@type”:”CreativeWork”,”name”:”Voicemails for Isabelle”},
{“@type”:”CreativeWork”,”name”:”People We Meet on Vacation”},
{“@type”:”CreativeWork”,”name”:”Swapped”},
{“@type”:”CreativeWork”,”name”:”Little Brother”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a4436f137e2c” }
}
(function() {
var showLabels = true;
var titleHighlight = “Little Brother”;
// 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_6a4436f137e2c’);
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”,”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,20900000,17500000,17200000,15500000,14000000,12500000,11900000,10400000,8800000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#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;
}
}
But how does it stack up against pure comedies? It does much better and ranks more in line with the “pure” comedies, without the IP of Happy Gilmore or the action component of Back in Action.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Back in Action, Happy Gilmore 2, Nonnas, Little Brother, Ladies First and 3 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Back in Action, Happy Gilmore 2, Nonnas, Little Brother, 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: 160,500,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, Nonnas, Little Brother, 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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Nonnas”},
{“@type”:”CreativeWork”,”name”:”Little Brother”},
{“@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_6a4436f137edb” }
}
(function() {
var showLabels = true;
var titleHighlight = “Little Brother”;
// 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_6a4436f137edb’);
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″,”Nonnas”,”Little Brother”,”Ladies First”,”Incoming”,”Roommates”,”Unfrosted”],
datasets: [{
label: chartTitle,
data: [46800000,46700000,15300000,14000000,11900000,9900000,8800000,7100000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#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. Voicemails for Isabelle in Week 2
While in week 1, Voicemails for Isabelle were “above average”, week 2 was pretty impressive with viewing hours up 77% thanks to strong reviews, word of mouth, and some viral clips we’ve seen floating about, no doubt pushing people towards it. Stacked up against many other titles in the genre, you can see that it’s had an incredibly strong second week with only A Family Affair toppling it. Out of nowhere, this has become a big romance hit for Netflix, even comfortably beating People We Meet on Vacation, which Netflix internally put more weight on being a big hit.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – A Family Affair, Your Place or Mine, Mother of the Bride, Voicemails for Isabelle, Office Romance and 10 more Netflix titles (2-week stacked view)”,
“description”: “Weekly views breakdown for A Family Affair, Your Place or Mine, Mother of the Bride, Voicemails for Isabelle, Office Romance and 10 more Netflix titles on Netflix over 2 weeks, with each bar segmented by individual week. A Family Affair leads the comparison with 58,700,000 cumulative views. Combined total: 544,600,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, A Family Affair, Your Place or Mine, Mother of the Bride, Voicemails for Isabelle, Office Romance, Irish Wish, People We Meet on Vacation, Ladies First”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”A Family Affair”},
{“@type”:”CreativeWork”,”name”:”Your Place or Mine”},
{“@type”:”CreativeWork”,”name”:”Mother of the Bride”},
{“@type”:”CreativeWork”,”name”:”Voicemails for Isabelle”},
{“@type”:”CreativeWork”,”name”:”Office Romance”},
{“@type”:”CreativeWork”,”name”:”Irish Wish”},
{“@type”:”CreativeWork”,”name”:”People We Meet on Vacation”},
{“@type”:”CreativeWork”,”name”:”Ladies First”},
{“@type”:”CreativeWork”,”name”:”Find Me Falling”},
{“@type”:”CreativeWork”,”name”:”Love at First Sight”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a4436f137f58” }
}
(function () {
var showLabels = true;
var titleHighlight = “Voicemails for Isabelle”;
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_6a4436f137f58’);
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: [“A Family Affair”,”Your Place or Mine”,”Mother of the Bride”,”Voicemails for Isabelle”,”Office Romance”,”Irish Wish”,”People We Meet on Vacation”,”Ladies First”,”Find Me Falling”,”Love at First Sight”,”Lonely Planet”,”Happiness for Beginners”,”A Tourist’s Guide to Love”,”French Lover”,”The Perfect Find”],
datasets: [{“label”:”Week 1″,”data”:[26800000,27700000,26700000,17500000,20900000,19500000,17200000,11900000,14400000,14100000,11000000,9300000,8400000,8100000,7000000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[31900000,29100000,25400000,31000000,24600000,25500000,23300000,18800000,16100000,15200000,13700000,13100000,13100000,12300000,11000000],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608CC”,”#900608″,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#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;
}
}
3. I Will Find You
I Will Find You. (L to R) Sam Worthington as David Burroughs and Britt Lower as Rachel Mills in Episode #102 of I Will Find You. Cr. Christos Kalohoridis/NETFLIX © 2025
Harlan Coben fatigue? That’s still a long way away, apparently. The series is still going gangbusters in week 2, with another 34.1M views, bringing its total to 58.1 M. That’s still a bit behind Adolescence when it comes to the biggest limited series of all time, but the runtime of that show gives it a huge leg up. Either way – this is huge.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – Adolescence, I Will Find You, The Watcher, Queen Charlotte: A Bridgerton Story, The Perfect Couple and 8 more Netflix titles (2-week stacked view)”,
“description”: “Weekly views breakdown for Adolescence, I Will Find You, The Watcher, Queen Charlotte: A Bridgerton Story, The Perfect Couple and 8 more Netflix titles on Netflix over 2 weeks, with each bar segmented by individual week. Adolescence leads the comparison with 66,300,000 cumulative views. Combined total: 455,800,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, Adolescence, I Will Find You, The Watcher, Queen Charlotte: A Bridgerton Story, The Perfect Couple, Griselda, Zero Day, Sirens”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Adolescence”},
{“@type”:”CreativeWork”,”name”:”I Will Find You”},
{“@type”:”CreativeWork”,”name”:”The Watcher”},
{“@type”:”CreativeWork”,”name”:”Queen Charlotte: A Bridgerton Story”},
{“@type”:”CreativeWork”,”name”:”The Perfect Couple”},
{“@type”:”CreativeWork”,”name”:”Griselda”},
{“@type”:”CreativeWork”,”name”:”Zero Day”},
{“@type”:”CreativeWork”,”name”:”Sirens”},
{“@type”:”CreativeWork”,”name”:”The Witness”},
{“@type”:”CreativeWork”,”name”:”The Madness”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a4436f1380af” }
}
(function () {
var showLabels = true;
var titleHighlight = “I Will Find You”;
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_6a4436f1380af’);
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: [“Adolescence”,”I Will Find You”,”The Watcher”,”Queen Charlotte: A Bridgerton Story”,”The Perfect Couple”,”Griselda”,”Zero Day”,”Sirens”,”The Witness”,”The Madness”,”Black Rabbit”,”The Brothers Sun”,”Toxic Town”],
datasets: [{“label”:”Week 1″,”data”:[24300000,24000000,22300000,22900000,20300000,20600000,19100000,16700000,13200000,9300000,6600000,4100000,4800000],”backgroundColor”:[“#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[42000000,34100000,26400000,24500000,21900000,20600000,17900000,18200000,10100000,13300000,7000000,6900000,4700000],”backgroundColor”:[“#900608CC”,”#900608″,”#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#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;
}
}
As we mentioned last week, we can’t do many accurate comparisons against previous Coben series because they were given extraordinary release dates, which makes 1:1 comparisons hard. That said, if we do stack them up, noting that a few had more days to get views in their opening week, we can see I Will Find You is on an absolute tear and fast approaching overtaking Fool Me Once. The biggest question we now have: why did it take so long for a US adaptation!?
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Cumulative Views Over Time – Fool Me Once, Missing You, Run Away and I Will Find You (5-week trend)”,
“description”: “Week-by-week cumulative views trend for Fool Me Once, Missing You, Run Away and I Will Find You on Netflix across 5 weeks. Fool Me Once finishes the period with the highest cumulative count at 84,900,000 views. Combined final total: 226,700,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, Fool Me Once, Missing You, Run Away, 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-06-30”,
“dateModified”: “2026-06-30”,
“variableMeasured”: “Cumulative weekly views over time (Netflix Top 10)”,
“measurementTechnique”: “Running totals derived from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “5 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Fool Me Once”},
{“@type”:”CreativeWork”,”name”:”Missing You”},
{“@type”:”CreativeWork”,”name”:”Run Away”},
{“@type”:”CreativeWork”,”name”:”I Will Find You”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#cumulativeChart_6a4436f138103” }
}
document.addEventListener(‘DOMContentLoaded’, function () {
var ctx = document.getElementById(‘cumulativeChart_6a4436f138103’).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;
}
}
4. Sweet Magnolias in Week 3
Sweet Mangolias stuck around in the top 10s for a third week (something we weren’t expecting, honestly) with a drop of viewing hours of 42% – season 4 couldn’t manage that, but ultimately this one now lies with the Netflix Gods and the completion rate, which should hopefully get the series over the line for a finale of some description.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Cumulative Views Over Time – Sweet Magnolias – Season 2, Sweet Magnolias – Season 3, Sweet Magnolias – Season 4 and Sweet Magnolias – Season 5 (5-week trend)”,
“description”: “Week-by-week cumulative views trend for Sweet Magnolias – Season 2, Sweet Magnolias – Season 3, Sweet Magnolias – Season 4 and Sweet Magnolias – Season 5 on Netflix across 5 weeks. Sweet Magnolias – Season 2 finishes the period with the highest cumulative count at 19,100,000 views. Combined final total: 50,600,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, Sweet Magnolias – Season 2, Sweet Magnolias – Season 3, Sweet Magnolias – Season 4, Sweet Magnolias – Season 5”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“variableMeasured”: “Cumulative weekly views over time (Netflix Top 10)”,
“measurementTechnique”: “Running totals derived from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “5 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Sweet Magnolias – Season 2″},
{“@type”:”CreativeWork”,”name”:”Sweet Magnolias – Season 3″},
{“@type”:”CreativeWork”,”name”:”Sweet Magnolias – Season 4″},
{“@type”:”CreativeWork”,”name”:”Sweet Magnolias – Season 5″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#cumulativeChart_6a4436f13816c” }
}
document.addEventListener(‘DOMContentLoaded’, function () {
var ctx = document.getElementById(‘cumulativeChart_6a4436f13816c’).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;
}
}
5. Oasis Gets a Huge Boost in Week 2
The Spanish teen drama Oasis debuted pretty poorly last week, but it had a huge rise in week 2, with viewing hours jumping up 228%! That rockets it up the chart compared to other titles from Spain, but ultimately it is still hampered by being slow out of the gate. Hopefully it can continue momentum and secure a season 2 renewal.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Weekly Views Breakdown – Welcome to Eden – Season 1, Billionaires Bunker, Breathless – Season 1, Olympo, Oasis – Season 1 and 7 more Netflix titles (2-week stacked view)”,
“description”: “Weekly views breakdown for Welcome to Eden – Season 1, Billionaires Bunker, Breathless – Season 1, Olympo, Oasis – Season 1 and 7 more Netflix titles on Netflix over 2 weeks, with each bar segmented by individual week. Welcome to Eden – Season 1 leads the comparison with 16,100,000 cumulative views. Combined total: 103,900,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, Welcome to Eden – Season 1, Billionaires Bunker, Breathless – Season 1, Olympo, Oasis – Season 1, Sky High: The Series, Gangs of Galicia – Season 1, The Ladys Companion”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Welcome to Eden – Season 1″},
{“@type”:”CreativeWork”,”name”:”Billionaires Bunker”},
{“@type”:”CreativeWork”,”name”:”Breathless – Season 1″},
{“@type”:”CreativeWork”,”name”:”Olympo”},
{“@type”:”CreativeWork”,”name”:”Oasis – Season 1″},
{“@type”:”CreativeWork”,”name”:”Sky High: The Series”},
{“@type”:”CreativeWork”,”name”:”Gangs of Galicia – Season 1″},
{“@type”:”CreativeWork”,”name”:”The Ladys Companion”},
{“@type”:”CreativeWork”,”name”:”1992″},
{“@type”:”CreativeWork”,”name”:”Rotten Legacy”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_split_bar_6a4436f138200” }
}
(function () {
var showLabels = true;
var titleHighlight = “Oasis – 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_6a4436f138200’);
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: [“Welcome to Eden – Season 1″,”Billionaires Bunker”,”Breathless – Season 1″,”Olympo”,”Oasis – Season 1″,”Sky High: The Series”,”Gangs of Galicia – Season 1″,”The Ladys Companion”,”1992″,”Rotten Legacy”,”Salvador”,”The Girl in the Mirror”],
datasets: [{“label”:”Week 1″,”data”:[4700000,3700000,3800000,3200000,2100000,3700000,2900000,2600000,2100000,2200000,1200000,1100000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[11400000,10300000,6400000,6900000,7000000,5400000,6000000,4900000,3600000,2700000,3600000,2400000],”backgroundColor”:[“#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. Agent Kim Reactivated From Netflix South Korea
Picture Credit: Netflix
A new Friday means a new K-drama series, and this week, we got a new limited series that’ll be dropping episodes weekly. It’s another success with 6.6M views placing it above most other weekly releases from prior years. That’s two massive ongoing hits right now, with Teach You a Lesson also still going strong in the top 10s in week 4.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Agent Kim Reactivated, When Life Gives You Tangerines, My Demon, No Tail to Tell and Still Shining (1-week cumulative views)”,
“description”: “Cumulative weekly views for Agent Kim Reactivated, When Life Gives You Tangerines, My Demon, No Tail to Tell and Still Shining on Netflix over 1 weeks. Agent Kim Reactivated leads the comparison with 6,600,000 cumulative views. Combined total: 16,800,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, Agent Kim Reactivated, When Life Gives You Tangerines, My Demon, No Tail to Tell, Still Shining”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Agent Kim Reactivated”},
{“@type”:”CreativeWork”,”name”:”When Life Gives You Tangerines”},
{“@type”:”CreativeWork”,”name”:”My Demon”},
{“@type”:”CreativeWork”,”name”:”No Tail to Tell”},
{“@type”:”CreativeWork”,”name”:”Still Shining”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a4436f13829a” }
}
(function() {
var showLabels = true;
var titleHighlight = “Agent Kim Reactivated”;
// 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_6a4436f13829a’);
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: [“Agent Kim Reactivated”,”When Life Gives You Tangerines”,”My Demon”,”No Tail to Tell”,”Still Shining”],
datasets: [{
label: chartTitle,
data: [6600000,3600000,3000000,2100000,1500000],
backgroundColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#1a1a1a”,”#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;
}
}
7. Another Self From Netflix Turkey
We nearly had a perfect comparison from season to season, but alas, Netflix opted to release the third season on Wednesday rather than Thursday for seasons 1 and 2. With that caveat, season 3 looks on paper like it did a bit better than season 2, but in reality, it was probably net square, which is still a remarkable hold for a show like this.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Another Self – Season 1, Another Self – Season 3 and Another Self – Season 2 (1-week cumulative views)”,
“description”: “Cumulative weekly views for Another Self – Season 1, Another Self – Season 3 and Another Self – Season 2 on Netflix over 1 weeks. Another Self – Season 1 leads the comparison with 2,600,000 cumulative views. Combined total: 7,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, Another Self – Season 1, Another Self – Season 3, Another Self – Season 2”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Another Self – Season 1″},
{“@type”:”CreativeWork”,”name”:”Another Self – Season 3″},
{“@type”:”CreativeWork”,”name”:”Another Self – Season 2″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a4436f1382f9” }
}
(function() {
var showLabels = true;
var titleHighlight = “Another Self – Season 3”;
// 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_6a4436f1382f9’);
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: [“Another Self – Season 1″,”Another Self – Season 3″,”Another Self – Season 2”],
datasets: [{
label: chartTitle,
data: [2600000,2400000,2100000],
backgroundColor: [“#b9090b”,”#000″,”#b9090b”],
borderColor: [“#b9090b”,”#000″,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#1a1a1a”,”#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. Notes from The Last Row from Netflix South Korea
Not only did Agent Kim drop from South Korea, but we also got the complete release of Notes from The Last Row, which looks like it was overshadowed completely, ranking right towards the bottom of the list.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Teach You a Lesson, My Name, Parasyte: The Grey, The Trauma Code: Heroes on Call, Can This Love Be Translated? and 15 more Netflix titles (1-week cumulative views)”,
“description”: “Cumulative weekly views for Teach You a Lesson, My Name, Parasyte: The Grey, The Trauma Code: Heroes on Call, Can This Love Be Translated? and 15 more Netflix titles on Netflix over 1 weeks. Teach You a Lesson leads the comparison with 6,400,000 cumulative views. Combined total: 70,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, Teach You a Lesson, My Name, Parasyte: The Grey, The Trauma Code: Heroes on Call, Can This Love Be Translated?, The Art of Sarah, Cashero, The Silent Sea”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“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”:”Teach You a Lesson”},
{“@type”:”CreativeWork”,”name”:”My Name”},
{“@type”:”CreativeWork”,”name”:”Parasyte: The Grey”},
{“@type”:”CreativeWork”,”name”:”The Trauma Code: Heroes on Call”},
{“@type”:”CreativeWork”,”name”:”Can This Love Be Translated?”},
{“@type”:”CreativeWork”,”name”:”The Art of Sarah”},
{“@type”:”CreativeWork”,”name”:”Cashero”},
{“@type”:”CreativeWork”,”name”:”The Silent Sea”},
{“@type”:”CreativeWork”,”name”:”Karma”},
{“@type”:”CreativeWork”,”name”:”Narco-Saints”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6a4436f138363” }
}
(function() {
var showLabels = true;
var titleHighlight = “Notes from the Last Row”;
// 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_6a4436f138363’);
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: [“Teach You a Lesson”,”My Name”,”Parasyte: The Grey”,”The Trauma Code: Heroes on Call”,”Can This Love Be Translated?”,”The Art of Sarah”,”Cashero”,”The Silent Sea”,”Karma”,”Narco-Saints”,”Trigger”,”If Wishes Could Kill”,”Doona!”,”Mask Girl”,”The WONDERfools”,”Boyfriend on Demand”,”As You Stood By”,”The Price of Confession”,”Dear Hongrang”,”Notes from the Last Row”],
datasets: [{
label: chartTitle,
data: [6400000,6300000,6300000,4700000,4000000,3800000,3800000,3700000,3600000,3200000,2900000,2800000,2800000,2800000,2700000,2600000,2300000,2200000,2200000,1600000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#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;
}
}
8. Swapped Headed for All-Time Top 10 List Imminently
Finally, last week we covered how Swapped was closing in on the all-time top 10s. In the next couple of weeks, we’ll see it enter as it’s now overtaken War Machine, and it should manage to get to #8 in the all-time list according to our estimates, which places its 91-day number at somewhere between 139.3M in the absolute worst case scenario, but somewhere more like 143.4M and 146.9M.
Let’s look at how it’s performing vs some of Netflix’s other big animated titles, and the curves are super interesting. Traditionally, with live-action movies, we see them almost go flat when plotted on graphs like this due to heavy viewing decay, but as we already know, repeat viewing is higher for animated titles. While Swapped isn’t in the same realm as KPop, it shows very similar decay rates to Leo and The Sea Beast and remains comfortably Netflix’s second-biggest animated movie release ever.
{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Cumulative Views Over Time – Swapped, KPop Demon Hunters, The Sea Beast and Leo (12-week trend)”,
“description”: “Week-by-week cumulative views trend for Swapped, KPop Demon Hunters, The Sea Beast and Leo on Netflix across 12 weeks. KPop Demon Hunters finishes the period with the highest cumulative count at 291,500,000 views. Combined final total: 628,600,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, Swapped, KPop Demon Hunters, The Sea Beast, Leo”,
“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-06-30”,
“dateModified”: “2026-06-30”,
“variableMeasured”: “Cumulative weekly views over time (Netflix Top 10)”,
“measurementTechnique”: “Running totals derived from Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “12 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Swapped”},
{“@type”:”CreativeWork”,”name”:”KPop Demon Hunters”},
{“@type”:”CreativeWork”,”name”:”The Sea Beast”},
{“@type”:”CreativeWork”,”name”:”Leo”} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#cumulativeChart_6a4436f1383aa” }
}
document.addEventListener(‘DOMContentLoaded’, function () {
var ctx = document.getElementById(‘cumulativeChart_6a4436f1383aa’).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;
}
}
Netflix Top 10s For Week Ending June 28th, 2026
English TV
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | I Will Find You: Limited Series | 187,200,000 (42.14%) | 34,100,000 | 2 |
| 2 | Avatar: The Last Airbender: Season 2 | 64,600,000 | 8,700,000 | 1 |
| 3 | Avatar: The Last Airbender: Season 1 | 21,700,000 | 3,000,000 | 7 |
| 4 | Raw: June 22, 2026 | 4,300,000 (-12.24%) | 2,300,000 | 1 |
| 5 | AMERICA’S SWEETHEARTS: Dallas Cowboys Cheerleaders: Season 3 | 15,300,000 | 2,200,000 | 2 |
| 6 | Salish & Jordan Matter: Season 1 | 7,200,000 (22.03%) | 2,000,000 | 6 |
| 7 | Sweet Magnolias: Season 5 | 15,700,000 (-42.49%) | 2,000,000 | 3 |
| 8 | Salish & Jordan Matter: Season 2 | 4,400,000 (-25.42%) | 2,000,000 | 1 |
| 9 | The Amazing Digital Circus: Season 1 | 9,400,000 (6.82%) | 1,900,000 | 4 |
| 10 | The Last Ship: Season 1 | 13,100,000 | 1,900,000 | 1 |
English Film
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | Voicemails for Isabelle | 60,900,000 (76.52%) | 31,000,000 | 2 |
| 2 | Little Brother | 23,400,000 | 14,000,000 | 1 |
| 3 | Maternal Instinct | 13,700,000 (-66.75%) | 8,500,000 | 3 |
| 4 | Swapped | 7,800,000 (-6.02%) | 4,600,000 | 9 |
| 5 | Office Romance | 8,200,000 (-44.97%) | 4,300,000 | 4 |
| 6 | KPop Demon Hunters | 6,300,000 (5.00%) | 3,800,000 | 54 |
| 7 | The Contractor | 6,000,000 | 3,600,000 | 1 |
| 8 | Turbo | 5,400,000 | 3,400,000 | 5 |
| 9 | The Creator | 7,200,000 | 3,200,000 | 1 |
| 10 | 5lbs of Pressure | 4,900,000 | 2,700,000 | 1 |
Non-English TV
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | Teach You a Lesson: Limited Series | 78,200,000 (-38.03%) | 7,300,000 | 4 |
| 2 | Oasis: Season 1 | 40,000,000 (227.87%) | 7,000,000 | 2 |
| 3 | Agent Kim Reactivated: Limited Series | 14,200,000 | 6,600,000 | 1 |
| 4 | The Polygamist: Season 1 | 51,600,000 (-30.55%) | 5,300,000 | 3 |
| 5 | Another Self: Season 3 | 14,900,000 | 2,400,000 | 1 |
| 6 | India’s Got Latent: Season 2 | 2,400,000 (9.09%) | 2,400,000 | 2 |
| 7 | My Royal Nemesis: Limited Series | 33,000,000 (-23.08%) | 2,000,000 | 8 |
| 8 | Notes from the Last Row: Limited Series | 10,400,000 | 1,600,000 | 1 |
| 9 | Losing Judgment: Season 1 | 12,700,000 (-45.96%) | 1,400,000 | 3 |
| 10 | BAKI-DOU: The Invincible Samurai: Season 1 | 13,400,000 | 1,300,000 | 4 |
Non-English Film
| Rank | Title | Hours | Views | Week # |
|---|---|---|---|---|
| 1 | Husbands in Action | 11,400,000 (9.62%) | 6,300,000 | 2 |
| 2 | Blast | 10,300,000 | 4,400,000 | 1 |
| 3 | Torrente for President | 2,900,000 | 1,700,000 | 1 |
| 4 | The Marked Woman | 2,800,000 (-54.84%) | 1,500,000 | 4 |
| 5 | Bhooth Bangla | 4,100,000 (-68.22%) | 1,500,000 | 3 |
| 6 | Colors Of Evil: Black | 2,700,000 (-80.43%) | 1,500,000 | 3 |
| 7 | Dhurandhar The Revenge (Raw & Undekha) | 4,800,000 (14.29%) | 1,200,000 | 5 |
| 8 | King Kaew | 1,900,000 | 1,100,000 | 1 |
| 9 | Les Condés | 1,200,000 | 800,000 | 1 |
| 10 | Raja Shivaji | 2,600,000 | 800,000 | 1 |
What are your big takeaways from the Netflix top 10s this week? Let us know in the comments down below.
