Methods
How the record is made — and the 14 conditions and counter-arguments it publishes about itself.
Every number on Open Channel Stats comes from a channel owner’s own YouTube data, read once a day with their permission. This page is the whole path, the conditions attached to it, the strongest arguments against what it says, and the measured worth of every projection it makes.
How a number gets here
One pass, once a day, in five steps. Nothing is estimated on the way through — the only numbers that exist are the ones YouTube reported.
YouTube's own APIs
A channel owner connects their channel and grants read access. Three of YouTube's APIs are read: Data for the catalog, Analytics for views, impressions, click rate, watch time and traffic sources, and Reporting for the bulk daily files.
One read a day
06:00 UTC dailyA single pass runs each morning at 06:00 UTC. It only ever reads; nothing is written back to YouTube, and no video, title or thumbnail is ever changed.
The seam
Recorded through Aug 25, 2026YouTube's reporting runs two to three days behind. Every chart and every total on this site stops at the last day that actually reported — the seam — rather than showing the pending days as zeros. Days that reported nothing are drawn as empty, never as a zero.
The file
94 tables · schema v81Each channel's own numbers are written into a single SQLite file that describes itself: every table, every column, its grain and its caveats. That file is what this site reads, and it is downloadable in full.
The reading
82 patternsPure functions read that file and say what happened. Each one is gated: it stays quiet until the channel has enough of the kind of history it needs. Nothing on a page is written by hand, and nothing is generated by a language model.
What the data can't say
9 stated conditionsEvery number here has conditions attached — a reporting delay, a thin sample, an attribution gap, a field YouTube doesn’t expose. Each is named, with what it means when you read the number.
Reporting
- Reporting lag
YouTube's reporting pipeline is two to three days behind real time. Every chart and aggregate in the dashboard stops at the most recently complete date.
Numbers for the last two to three calendar days are always absent. This is not a gap in the dashboard — it is a gap in what YouTube exposes. On a newly connected channel there is a second, separate clock: YouTube posts its first reports within a day or two of connecting, so the earliest days can briefly show views without impressions.
- Pre-publish stub rows
When a video is scheduled, YouTube sometimes records reporting rows for the day before it published — usually a row of zero views and null impressions.
Every aggregation filters out these stub rows using the pre_publish_stub = 0 guard. The stub rows remain in the database for provenance.
Since schema v9
Sampling
- CTR from few impressions
A CTR measured over a handful of impressions can land almost anywhere. Every CTR is shown with the range it sits in — wide when the impressions are few, narrowing as they arrive.
The range beside a CTR is the honest width of that number. A video shown a few times reads close to what the channel typically does, with a wide range; a video shown thousands of times reads on its own evidence, with a range too narrow to draw. No CTR is hidden for being measured over too few impressions.
Since schema v9- Average watch time thin-sample tiers
Average watch time below 10 views is noise; 10 to 29 is low; 30 to 99 is medium; 100 or more is high.
The same four-tier encoding applies to watch-time cells. Readings below the 30-view threshold tend to be dominated by a handful of unusually long or short sessions.
Since schema v9
Attribution
- Unattributed impressions
YouTube's per-source impression rows don't always sum to the per-video impression total. The gap is real and surfaced rather than redistributed.
Some impressions come from surfaces YouTube doesn't expose through its reporting feed. The unattributed share is visible on the Honesty panel; traffic charts reflect only attributed impressions.
Since schema v9- Channel-snapshot reconciliation gap
The channel-level snapshot sometimes shows higher totals than the sum of per-video reporting rows.
This is YouTube's own attribution gap. The dashboard charts the difference rather than hiding it, so readings on total channel views may slightly overcount relative to per-video sums.
Withheld content
- Comment text and non-public videos stay out
Two things never enter the public dataset: the text of viewer comments (counts only), and videos that aren't public on YouTube. Everything else ships in full — real titles, real video IDs, real thumbnails.
Every public video is fully analyzable under its real title and ID. Individual comments and non-public uploads are not recoverable from the public data.
Missing data
- Size-gated demographic data
YouTube only returns audience demographics once a channel clears a minimum-size threshold. This channel is currently below that threshold.
Country, age, and gender breakdowns are not available in the current dataset, since the channel is below YouTube's size threshold for them.
- Revenue and monetization absent
Revenue, CPM, and ad-breakdown data are not in the dataset. This channel is not yet in the YouTube Partner Program.
Monetization metrics (CPM, RPM, ad revenue) are not analyzable from this dataset.
The arguments against
5 disclosuresFor each thing this site is willing to say, the strongest good-faith rebuttal to it, the guardrail already in the code, and why it still ships. These are arguments against the product, not a defence of it.
Single-label channel-state compression
The dashboard reduces the channel's current algorithmic situation to one label (e.g. suggested_run, search_tail, dormant) from a fixed set of states.
A channel can be in multiple states simultaneously — for example, in a suggested run on one video while other videos are dormant. A single label hides this co-occurrence and may assign the wrong dominant frame for a given reader's question.
The state label is backed by two support metrics from event_channel_state_change that reflect the actual weighted evidence for the classification, and the compression is named explicitly wherever the state label is shown.
A single-state label is more actionable for most readers than a multi-state matrix. The support metrics partially compensate for what the single label omits.
Traffic-source attribution gaps
Traffic source breakdowns claim to show where views came from (Browse, Search, Suggested, External, etc.).
YouTube does not expose every source, and the per-source impression rows often don't sum to the per-video total. The unattributed share can be substantial on some channels or source types. Comparing sources by share may over- or understate the true split.
Unattributed impressions are shown as their own number rather than being redistributed into the named sources. The limits registry names this as a first-class attribution limit.
Attribution data is the best available signal for how videos reach viewers. The unattributed gap is visible, not hidden, so readers can calibrate accordingly.
Edit before/after observational limits
The Changes page shows click rate before and after a title or thumbnail change, implying a before/after comparison.
Many factors change simultaneously with or shortly after an edit — seasonality, topic trends, the age of the video at the time of the edit, and YouTube's own ongoing impression testing. The before/after comparison observes correlation in time, not causation.
The before-and-after copy states explicitly: "Whether the edit caused the change is observational, not provable — many things move in parallel." No causal language appears in the rendered prose.
Knowing that click rate rose or fell around an edit is a factual observation that has informational value even without a causal claim. The hedge is present at the top of the page and in every era comparison.
Wisdom threshold flips near boundaries
The Wisdom panel renders verdicts (agrees / disagrees / mixed) on conventional YouTube creator beliefs using a channel's own data.
Verdict boundaries are threshold-based. A channel sitting just below a threshold (e.g. a 0.1 pp difference in CTR) flips from 'agrees' to 'disagrees'. At that boundary the verdict carries less signal than the raw numbers do.
Verdicts include the underlying numbers that drove them — the evidence is surfaced alongside each verdict, not just the label, so readers can assess near-boundary cases.
Structured verdicts are substantially more scannable than raw numbers alone. The evidence display lets attentive readers catch boundary effects.
Detector-family consolidation hiding module nuance
The Moment chapter and Story timeline surface one insight per render, selected from the full detector inventory.
Collapsing dozens of detectors into one featured insight per render means many relevant signals are not shown. The selection algorithm prioritises by magnitude, recency, and certainty — but a less prominent signal may be more relevant for a specific reader's question.
The /help/detectors page lists every detector with its activation stage and sample-size threshold. The selection algorithm is transparent about its priority ordering. Story timeline events surface the most significant insight per week.
Showing all active detector outputs simultaneously produces an unreadable wall of context-free numbers. One featured insight per render is the minimum to remain coherent. The full detector inventory — every detector with its activation stage and sample threshold — is listed for readers who want it.
What the engine watches for
0 of 82 have matchedEvery pattern the reading engine can report, by the part of the channel it reads. Each one stays quiet until the catalog is large enough to read it honestly, so a pattern that has never matched has usually never had the history it needs — not a channel that lacks it.
- Milestones0 of 2 matched
- Trajectory and outliers0 of 11 matched
- Discovery and traffic sources0 of 24 matched
- Per-video lifecycle0 of 11 matched
- Engagement0 of 14 matched
- Channel shape0 of 20 matched
What the projections were worth
Replayed Aug 27, 2026Every projection shape this site can produce was replayed against what actually happened afterwards, across every connected channel. Two shapes earned their place. One did not, and does not render anywhere on this site as a result.
A range for a number, at a date you pick
RendersSubscriber ranges contained what happened 94% of the time across 415 past calls; daily-view ranges 88% across 306. Both clear the 80% these ranges are drawn to hold.
A date for a number you pick
Does not renderCalls that named the day a channel would cross a milestone held 21% of the time across 212 past calls, and the middle miss was 12 days wide. That is far under the 80% bar, so no dated crossing is shown anywhere — not on a dashboard, not in an email, not on a share card.
The pace a channel is moving at
RendersEvery channel that is moving carries a pace read. It states what the recent days did, so it is a description of the record rather than a claim about the future.
On @iamartharrison's own record, no past call has resolved yet — that record starts as soon as the first one does.
What this site counts about you
1 thingThe steps of connecting a channel are the only thing this site counts, and the daily totals are published in full. Connect funnel counts.
Reading needs no account and sets no cookies of its own; a few of your own settings — the theme, whether motion plays — are remembered in your browser and go nowhere else. Signing in does set a session cookie, and that is the only place an account exists: the console a channel owner uses to choose what their channel shows.
Keep verifying
The rest of the record
Methods says how a number is made. These say what the record currently holds.