Tuesday, September 22, 2026
HomeNetflix NewsNetflix Top 10s: Gabby’s Dollhouse Grows in Season 14, Why Crew Girl...

Netflix Top 10s: Gabby’s Dollhouse Grows in Season 14, Why Crew Girl Was Renewed, The Gentlemen Season 2 Still Down 50%

- Advertisment -

gabbys dollhouse crew girl netflix top 10s

Picture Credits: Netflix

It’s Tuesday, which means the latest batch of Netflix viewing data has arrived. Covering the week of September 14th to the 20th, 2026, this week’s top 10 report is a fascinating study in viewing trajectories. We’ve got massive week-over-week growth stories, a handful of incredibly soft movie debuts, and the arrival of the latest chapter in Ryan Murphy’s Monster universe. We also officially close the 91-day window on one of Netflix’s biggest hits of the decade.

Personal note: Sorry for the lack of top 10 reports for the last few weeks. Life + work things have meant less time, but I’m back with glazed eyes at 8 PM, ready to go again!

We’ve already done some stories for this week’s top 10 stories, including covering the renewal of Crew Girl, but we’ve got more to cover on that below. We’ve also capped off the top 10 run for I Will Find You, which concluded its 91-day run last Thursday and now stands as the #5 English series of all time. You can see the full list of Netflix’s most-watched titles ever (plus archives of previously featured titles) in our big guide. 

A few titles missed out on the top 10s this week, including most notably the second season of Stranger Things: Tales from ’85. The Fixers is similarly absent, and there’s no sign of Pokémon Horizons: Season 3: Rising Hope or General Mayhem: The Killing of Brigadier J


Monster: The Lizzie Borden Story

We’ve already gone over the top-level stats for Monster: The Lizzie Borden Story here, and while it comes in last place compared to prior entries, it’s effectively tied with seasons 2 and 3, with only a minor drop in reality. But how well is the series performing against other shows? Let’s take a look at that front: 

(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)
bodyFont = getComputedStyle(document.body).fontFamily
try
total += (datasets[i].data[idx] 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) 0);

else if (abs >= 1e6) value === null
else if (abs >= 1e3)
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()

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);

})();

(function() {
var showLabels = true;
var titleHighlight = “Monster: The Lizzie Borden 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_6ab2f6f53385b’);
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: [“UNTAMED”,”I Will Find You”,”The Watcher”,”DAHMER”,”Zero Day”,”Monsters – The Lyle and Erik Menendez Story”,”Monster: The Ed Gein Story”,”Monster: The Lizzie Borden Story”,”Black Doves – Season 1″,”American Primeval”,”The Waterfront – Season 1″,”The Abandons”,”Ransom Canyon – Season 1″,”Nemesis – Season 1″,”The Beast in Me”,”House of Guinness – Season 1″,”Something Very Bad Is Going to Happen”,”Vladimir”],
datasets: [{
label: chartTitle,
data: [24600000,24000000,22300000,22000000,19100000,12300000,12200000,12100000,10800000,10400000,8300000,7300000,7200000,7100000,6900000,5200000,4500000,4200000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#1a1a1a”,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″,”#8a0708″],
hoverBorderColor: ‘#b9090b’,
hoverBorderWidth: 2,
barPercentage: 0.9,
categoryPercentage: 0.9
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
layout: {
padding: { bottom: isMobile ? 12 : 24, top: 8 }
},
plugins: {
title: {
display: true,
text: chartTitle,
color: ‘#000000’,
align: ‘start’,
font: {
size: titleFontSize,
weight: ‘bold’
},
padding: { top: 4, bottom: 16 }
},
legend: { display: false },
tooltip: {
backgroundColor: ‘#221f1f’,
titleColor: ‘#b9090b’,
bodyColor: ‘#ffffff’,
titleFont: { weight: ‘bold’, size: 13 },
bodyFont: { size: 13 },
padding: { top: 10, bottom: 10, left: 14, right: 14 },
cornerRadius: 6,
displayColors: false,
borderColor: ‘#b9090b’,
borderWidth: 1,
callbacks: {
label: function(context) {
return context.dataset.label + ‘: ‘ + context.parsed.x.toLocaleString();
}
}
}
},
scales: {
x: {
beginAtZero: true,
ticks: {
font: {
size: axisFontSize
},
// Compact “1.2M” / “789K” ticks on mobile so the
// x-axis doesn’t eat half the chart width.
callback: function (value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, isMobile);
}
return value;
}
}
},
y: {
ticks: {
// Bold + brand-red color for the highlighted title’s y-axis tick;
// muted gray for everything else when a highlight is active.
font: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return { weight: ‘bold’, size: axisFontSize };
}
return { size: axisFontSize };
},
color: function (context) {
var label = context.tick && context.tick.label;
if (titleHighlight && label === titleHighlight) {
return ‘#b9090b’;
}
return ‘#000000’;
}
}
}
},
}
};

// Add DataLabels configuration if labels are enabled
if (showLabels && window.ChartDataLabels) {
// Small bars (< 15% of max) get their label floated *above* the bar
// tip in Netflix red, so it never overlaps the red bar and never
// becomes black-on-red. A white text stroke keeps the label
// readable even when the chart sits on a coloured/image background.
var isSmallBar = function(context) {
var value = context.dataset.data[context.dataIndex];
if (typeof value === 'undefined' || value === null) return false;
var maxValue = Math.max.apply(null, context.dataset.data.filter(function(v) {
return v !== null && v !== undefined;
}));
if (!maxValue) return false;
return (value / maxValue) * 100 < 15;
};

chartConfig.options.plugins.datalabels = {
anchor: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
align: function(context) {
return isSmallBar(context) ? 'end' : 'center';
},
offset: function(context) {
return isSmallBar(context) ? 4 : 0;
},
color: function(context) {
return isSmallBar(context) ? '#b9090b' : '#fff';
},
textStrokeColor: function(context) {
return isSmallBar(context) ? '#ffffff' : 'rgba(0,0,0,0.35)';
},
textStrokeWidth: 2,
clip: false,
clamp: true,
font: {
weight: 'bold',
size: dataLabelFontSize
},
formatter: function(value) {
if (window.wonCompactNumber) {
return window.wonCompactNumber(value, true);
}
return value;
},
display: function(context) {
var value = context.dataset.data[context.dataIndex];
return typeof value !== 'undefined' && value !== null;
}
};
chartConfig.plugins = [ChartDataLabels];
}

// Always register the watermark plugin (independent of data labels).
chartConfig.plugins = (chartConfig.plugins || []).concat(
window.wonWatermarkPlugin ? [window.wonWatermarkPlugin] : []
);

var chart = new Chart(ctx, chartConfig);
}

function ensureChartAndPlugin() {
if (!window.Chart) {
loadScript('https://cdn.jsdelivr.net/npm/[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;
}
}

We’ve often seen shows and movies in the Netflix top 10s sitting in three categories: fantastic, good, and at risk of cancellation. I think it’s safe to say each of these three recent series of Monster sits towards the upper end of the “good” category. 


Why Crew Girl Picked Up An Easy Season 2 Renewal

Crew Girl n S1 E8 00 27 41 10 copy

Crew Girl S1. Miku Martineau as Teagan in Episode 1 of Crew Girl S1. Cr. Courtesy of Netflix © 2026

Announced alongside the release of this week’s numbers, Crew Girl has officially been renewed for season 2. Viewing hours rose nearly 120% week-on-week to 70.1M, or 11.3M views. That big jump was even more impressive than Finding Her Edge, which picked up a similarly fast renewal earlier this year. What makes this rise particularly impressive is that it puts it in similar viewing territory to much bigger swings (and significantly more expensive ones) like Nemesis and Man on Fire, and well ahead of the Duffer Brothers’ The Boroughs

(function () {
var showLabels = true;
var titleHighlight = “Crew Girl – 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_6ab2f6f533921’);
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: [“Man on Fire – Season 1″,”Nemesis – Season 1″,”Crew Girl – Season 1″,”Little House on the Prairie – Season 1″,”The Boroughs”,”Boots – Season 1″,”Finding Her Edge – Season 1″,”No Good Deed – Season 1″,”The Hawk”,”Apple Cider Vinegar”,”Dead Boy Detectives – Season 1″,”Bet – Season 1″],
datasets: [{“label”:”Week 1″,”data”:[11000000,7100000,5200000,6400000,5600000,4700000,5500000,6000000,4800000,3800000,3100000,2400000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[12600000,11400000,11300000,9800000,9500000,9400000,6700000,5600000,6200000,5600000,4700000,5000000],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608″,”#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;
}
}

This comes as the fight for young adult entertainment heats up spectacularly, and many have said that Prime Video now wears the crown (a phrase that winds many Netflix employees up, I’m told), but Netflix is keen to show off that it’s not leaving the genre anytime soon. 


Gabby’s Dollhouse Back in Top 10s For Season 14 (!)

No doubt aided by the recent movie, it’s still remarkable that Netflix’s longest-running kids series can still manage to jump into the Netflix top 10s each time new episodes drop, and not only that: keep growing! Season 14 has had the best debut since season 8 (top 10 data is a little spotty before then), and the series is showing remarkable prowess years later. In case you missed it, we actually caught up with the creators of Gabby’s Dollhouse ahead of season 14’s debut about how they keep the show fresh, something all other creators should be taking note of given this performance. 

The only caveat is that the episode count has fallen again from 5 to 4 (down from 6 in seasons 9 through 11), making it an easier ride to get views. 

(function() {
var showLabels = true;
var titleHighlight = “Gabby’s Dollhouse – Season 14”;
// 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_6ab2f6f5339b5’);
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: [“Gabby’s Dollhouse – Season 14″,”Gabby’s Dollhouse – Season 8″,”Gabby’s Dollhouse – Season 11″,”Gabby’s Dollhouse – Season 12″,”Gabby’s Dollhouse – Season 10″,”Gabby’s Dollhouse – Season 13″,”Gabby’s Dollhouse – Season 9”],
datasets: [{
label: chartTitle,
data: [4300000,4100000,3300000,3100000,3000000,2500000,2300000],
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;
}
}


The Gentlemen Season 2 Down Nearly 50% on Season 1

the gentlemen season 2 drops first looks release date

Picture Credit: Netflix

It’s been a minute since we checked in on The Gentlemen Season 2, which is now in the third week of its top 10 run. The trades were quick to point out that season 2 was up big time in week 2, but as we’ve covered once or twice before, your opening week often dictates your trajectory from there on out, with the exception of times titles hitting the zeitgeist and blasting off. That’s not the case with The Gentlemen.

As of week 3, The Gentlemen season 2 is down 49% in views compared with season 1 over the same period. 

(function () {
var showLabels = true;
var titleHighlight = “The Gentlemen – Season 2”;

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_6ab2f6f533aa7’);
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″,”The Gentlemen – Season 2”],
datasets: [{“label”:”Week 1″,”data”:[12200000,6700000],”backgroundColor”:[“#b9090bCC”,”#b9090b”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[20100000,9900000],”backgroundColor”:[“#900608CC”,”#900608″],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 3″,”data”:[11700000,6000000],”backgroundColor”:[“#d40d10CC”,”#d40d10″],”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;
}
}

document.addEventListener(‘DOMContentLoaded’, function () {
var ctx = document.getElementById(‘cumulativeChart_6ab2f6f533af3’).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;
}
}


Best of the Best

We’ve got another big Friday movie, and this week, it’s the dance film Best of the Best, which was always going to be quite niche, and that proved true with a debut of just 4.3M views, making it the lowest debut for an English-language debut for 2026.  

Stacked up against other 2026 releases (excluding Enola Holmes 3 and Why Did I Get Married Again?, which both released on a Wednesday) here’s how Best of the Best shakes out:

(function() {
var showLabels = true;
var titleHighlight = “Best of the Best”;
// 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_6ab2f6f533ba8’);
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”,”The Last House”,”Peaky Blinders: The Immortal Man”,”The Whisper Man”,”72 HOURS”,”Office Romance”,”Voicemails for Isabelle”,”People We Meet on Vacation”,”Swapped”,”Little Brother”,”Joe’s College Road Trip”,”Ladies First”,”Remarkably Bright Creatures”,”Roommates”,”Don’t Say Good Luck”,”Best of the Best”],
datasets: [{
label: chartTitle,
data: [41600000,39300000,38200000,37700000,27500000,25300000,23200000,22100000,20900000,17500000,17200000,15500000,14000000,12500000,11900000,10400000,8800000,8100000,4300000],
backgroundColor: [“#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”,”#000″],
borderWidth: 0,
hoverBackgroundColor: [“#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;
}
}


The Perfect Lie in Week 2

One show we’ve been particularly high on is The Perfect Lie, the Dutch thriller which drove up viewing hours 70% this week to 42.7M, equating to 7M views. That’s largely in line with expectations for growth compared to other titles, but it’s certainly doing well in the local top 10s, certainly suggesting a season 2 could be on the cards.

(function () {
var showLabels = true;
var titleHighlight = “The Perfect Lie – 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_6ab2f6f533c43’);
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: [“Dear Child – Limited Series”,”Blood Sacrifice – Season 1″,”Unfamiliar – Season 1″,”Detective Hole – Season 1″,”The Perfect Lie – Season 1″,”Crooks – Season 1″,”Midsummer Night”,”Murder Mindfully – Season 1″,”Bandi – Season 1″,”Cash Queens – Season 1″],
datasets: [{“label”:”Week 1″,”data”:[10200000,7000000,4900000,4900000,4100000,2800000,2700000,2700000,2100000,1300000],”backgroundColor”:[“#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090b”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”,”#b9090bCC”],”borderWidth”:0,”barPercentage”:0.90000000000000002220446049250313080847263336181640625,”categoryPercentage”:0.90000000000000002220446049250313080847263336181640625},{“label”:”Week 2″,”data”:[15400000,9100000,10400000,6900000,7000000,5000000,5000000,4700000,5200000,2700000],”backgroundColor”:[“#900608CC”,”#900608CC”,”#900608CC”,”#900608CC”,”#900608″,”#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;
}
}


The Doll from Netflix Poland in Week 1

the doll netflix september 2026

Picture Credit: Netflix

Another series that we gave a good review to but hasn’t quite hit the heights of other Polish titles released on a Wednesday in recent years is The Doll, which sits around the bottom of the middle of the pack compared to other debuts in recent years. It’s by no means a traditional period drama so that maybe shouldn’t be all that too surprising. 

(function() {
var showLabels = true;
var titleHighlight = “The Doll”;
// 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_6ab2f6f533cdd’);
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: [“High Water”,”Just One Look”,”Lead Children”,”The Hooligan”,”The Doll”,”Hounds Hill”,”Open Your Eyes”,”Family Secrets”,”Project UFO”],
datasets: [{
label: chartTitle,
data: [10200000,4500000,4200000,3600000,2500000,2400000,1700000,1700000,1100000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#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;
}
}


Not A Stranger from Netflix Turkey in Week 1

Netflix Turkey has had some busts in recent times in the global top 10s, with The Town and Platonic, two series from late 2025, failing to register, but they’ve been back on winning terms with To Love, To Lose and now, Not A Stranger, which debuted with 4.6M views. A very, very strong performer. Look out for a renewal here.

Two more titles we can’t add to the graph (points if you can tell me why!) are To Love, To Lose (1.9M views) and Thank You, Next (3.6M views)

(function() {
var showLabels = true;
var titleHighlight = “Not a Stranger – 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_6ab2f6f533d4b’);
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: [“Not a Stranger – Season 1″,”Another Self – Season 1″,”Midnight at the Pera Palace”,”K\u00fcbra – Season 1″,”Another Self – Season 2″,”Shahmaran – Season 2″],
datasets: [{
label: chartTitle,
data: [4600000,2600000,2600000,2200000,2100000,1200000],
backgroundColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#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;
}
}


Plastic Beauty from Japan in Week 1

2.3M views for Netflix Japan’s new Thursday series Plastic Beauty. The interesting premise reads, “When did beauty become a product? In Japan’s glamorous cosmetic surgery industry, two surgeons discover what it really costs to be true to yourself.” That puts it near the top in recent years, only dwarfed by two global hits from Japan: Yu Yu Hakusho and Last Samurai Standing.

(function() {
var showLabels = true;
var titleHighlight = “Plastic Beauty – 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_6ab2f6f533db3’);
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: [“Yu Yu Hakusho”,”Last Samurai Standing”,”Plastic Beauty – Season 1″,”Romantics Anonymous”,”Human Vapor”,”Viral Hit”,”Tokyo Swindlers”,”Beyond Goodbye”,”Sanctuary”,”Sins of Kujo”,”First Love”],
datasets: [{
label: chartTitle,
data: [7700000,6200000,2300000,2100000,2000000,1700000,1300000,1300000,1300000,1300000,900000],
backgroundColor: [“#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderColor: [“#b9090b”,”#b9090b”,”#000″,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”],
borderWidth: 0,
hoverBackgroundColor: [“#8a0708″,”#8a0708″,”#1a1a1a”,”#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;
}
}


The Scandal from South Korea in Week 1

the scandal netflix k drama coming q3 2026

Picture Credit: Netflix

One of the softest launches for a new limited series from South Korea in 2026, with The Scandal only picking up 1.9M views. 

(function() {
var showLabels = true;
var titleHighlight = “The Scandal”;
// 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_6ab2f6f533e2d’);
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 East Palace”,”Our Sticky Love”,”If Wishes Could Kill”,”The WONDERfools”,”Boyfriend on Demand”,”Mousetrap”,”The Scandal”],
datasets: [{
label: chartTitle,
data: [4900000,3200000,2800000,2700000,2600000,2000000,1900000],
backgroundColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″],
borderColor: [“#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#b9090b”,”#000″],
borderWidth: 0,
hoverBackgroundColor: [“#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;
}
}


Full Top 10s for September 14 to 20, 2026

English TV

Total views this week: 49,100,000 (Rank 71 of 170 weeks)

Rank Title Hours Views Week #
1 Monster: The Lizzie Borden Story: Season 1 80,100,000 12,100,000 1
2 Crew Girl: Season 1 70,100,000 (119.06%) 11,300,000 2
3 The Gentlemen: Season 2 44,700,000 (-39.10%) 6,000,000 3
4 Gabby’s Dollhouse: Season 14 7,000,000 4,300,000 1
5 The Gentlemen: Season 1 22,400,000 (-69.48%) 3,400,000 13
6 Raw: September 14, 2026 6,000,000 (33.33%) 3,100,000 1
7 Death of the Pastor’s Wife: Season 1 5,700,000 (-58.39%) 2,500,000 4
8 Jo Koy: Blue in the Face 2,300,000 2,500,000 1
9 Mark Rober’s CrunchLabs: Season 5 4,800,000 2,000,000 1
10 Beauty in Black: Season 3 11,900,000 (-43.06%) 1,900,000 4

English Film

Total views this week: 43,500,000 (Rank 167 of 170 weeks)

Rank Title Hours Views Week #
1 Why Did I Get Married Again? 17,900,000 (-49.86%) 9,700,000 2
2 The Whisper Man 11,800,000 (-51.04%) 6,200,000 4
3 Riot 7,500,000 5,200,000 1
4 The Seemingly Perfect Family 6,700,000 4,600,000 1
5 Best of the Best 8,000,000 4,300,000 1
6 The Ministry of Ungentlemanly Warfare 6,800,000 3,400,000 1
7 Puss in Boots: The Last Wish 5,000,000 2,900,000 7
8 KPop Demon Hunters 4,200,000 (-8.70%) 2,500,000 65
9 A Minecraft Movie 4,200,000 2,500,000 1
10 Shrek 3,300,000 (-17.50%) 2,200,000 19

Non-English TV

Total views this week: 27,500,000 (Rank 88 of 170 weeks)

Rank Title Hours Views Week #
1 The Perfect Lie: Season 1 42,700,000 (69.44%) 7,000,000 2
2 Not a Stranger: Season 1 31,100,000 4,600,000 1
3 The Doll: Limited Series 16,900,000 2,500,000 1
4 Physical 100: Mexico: Season 1 15,300,000 2,500,000 1
5 Plastic Beauty: Season 1 20,800,000 2,300,000 1
6 Physical 100: Italy: Season 1 9,900,000 (67.80%) 2,100,000 2
7 The Scandal: Limited Series 14,500,000 1,900,000 1
8 The Early Spring: Season 1 30,300,000 (-37.01%) 1,600,000 4
9 Fauda: Season 5 11,600,000 (-27.04%) 1,600,000 2
10 Four Hands, Two Sonatas: Limited Series 11,800,000 (24.21%) 1,400,000 3

Non-English Film

Rank Title Hours Views Week #
1 Vishwanath & Sons 15,400,000 (5.48%) 5,800,000 2
2 The Secret Woman 7,100,000 (-52.35%) 3,600,000 4
3 Irumudi 8,100,000 3,400,000 1
4 Gandhari 5,800,000 (-68.98%) 3,000,000 3
5 Facing El Chapo 3,700,000 (-30.19%) 2,400,000 5
6 Go Team! 3,100,000 (24.00%) 2,000,000 2
7 Modha Rathri 4,500,000 1,900,000 1
8 Alpha 4,100,000 (13.89%) 1,700,000 4
9 Lust Stories 3 4,000,000 1,500,000 1
10 Project Sacrifice 2,400,000 1,300,000 1

That’s it for this week’s top 10 report – more next week! 

RELATED ARTICLES
- Advertisment -

Most Popular

Recent Comments