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.

The detector statuses and this record’s own resolved calls are read from @iamartharrison’s tracked data, through Aug 25, 2026. The replay figures below cover every connected channel.

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.

  1. 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.

  2. One read a day

    06:00 UTC daily

    A 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.

  3. The seam

    Recorded through Aug 25, 2026

    YouTube'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.

  4. The file

    94 tables · schema v81

    Each 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.

  5. The reading

    82 patterns

    Pure 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 conditions

Every 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 disclosures

For 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

    What the app says

    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.

    Strongest counter-argument

    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.

    Guardrail in the code

    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.

    Why it still ships

    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.

    Conditionssnapshot-reconciliation

  • Traffic-source attribution gaps

    What the app says

    Traffic source breakdowns claim to show where views came from (Browse, Search, Suggested, External, etc.).

    Strongest counter-argument

    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.

    Guardrail in the code

    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.

    Why it still ships

    Attribution data is the best available signal for how videos reach viewers. The unattributed gap is visible, not hidden, so readers can calibrate accordingly.

    Conditionsunattributed-impressions

  • Edit before/after observational limits

    What the app says

    The Changes page shows click rate before and after a title or thumbnail change, implying a before/after comparison.

    Strongest counter-argument

    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.

    Guardrail in the code

    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.

    Why it still ships

    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.

    Conditionsctr-thin-sample

  • Wisdom threshold flips near boundaries

    What the app says

    The Wisdom panel renders verdicts (agrees / disagrees / mixed) on conventional YouTube creator beliefs using a channel's own data.

    Strongest counter-argument

    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.

    Guardrail in the code

    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.

    Why it still ships

    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

    What the app says

    The Moment chapter and Story timeline surface one insight per render, selected from the full detector inventory.

    Strongest counter-argument

    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.

    Guardrail in the code

    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.

    Why it still ships

    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 matched

Every 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

    A milestone reached, An emerging signal

  • Trajectory and outliers0 of 11 matched

    Where this channel sits against the shared pool, A video tracking off the channel norm, A video's view-curve deviating from its peer norm, Views accelerating, A week-over-week step up, Day-one numbers predicting longer-run reach, Cross-video outlier, A live video sitting outside the channel's day-N cone for its age, Retention and engagement ranking high relative to view mass, A per-metric trajectory consistent across videos, A title pattern correlating with CTR on this channel

  • Discovery and traffic sources0 of 24 matched

    A traffic source proportion shifting, Browse / Homepage opening up, Browse / Homepage going quiet, YouTube Search reaching the channel, Suggested Videos lifting, Suggested Videos cliff, Shorts Feed lifting, Shorts Feed cliff, Where views arrive from, over time, Single-source-dominated day, Top-country flipping week-over-week, First External-source views, Channel-wide top traffic source flipping, Per-source typical days-to-activation, A specific video's source activation outside the channel's band, First impressions on a video, A video drawing most traffic from one source, Source mix widening, Source mix narrowing, A source going quiet on a video, A gap in watch time per view across sources, A gap in subs-per-view across sources, A previously-quiet organic source firing again on a video, A video drawing most views from a single country

  • Per-video lifecycle0 of 11 matched

    This video's arc, A video gone quiet, Impressions without views, Days from publish to peak, Older videos vs newer videos, CTR rising late in life, Watch time rising late in life, Trend across recent debuts, Channel trend, week over week, Trend across recent videos, A video launched in a weak channel phase performing under the channel median

  • Engagement0 of 14 matched

    Two metrics that usually move together pulling apart, A video drawing more engagement per view than the rest of the channel, Comments-per-view well above the channel's band, A trailing-3-day jump in shares on a video, Subscribe rate and reach moving in opposite directions, Subscribers stepping up on a routine view day, Subscribers lost in the trailing two weeks, Audience replacing itself faster than its trailing weeks, How much of last week's audience mix came back, Channel attribution share trending up, Per-video attribution share well above baseline, A sharp drop-off in the retention curve, Mid-video hold versus the channel's own catalog, Where this video differs across the four funnel stages

  • Channel shape0 of 20 matched

    Lifetime distribution of views across the catalog, Channel's 5-dimensional state vector outside its 90-day envelope, Recent publishing gap notably longer than the channel's median, How often this channel publishes, Recent 7-day publish count diverging from the prior 7-day count, One or two weekdays consistently outperforming the rest, The catalog shape shifting, A metric outside its usual range, How retention distributes across the catalog, Share of the catalog that went the past week without views, Top-video and quiet-inventory shares trending up together, Share of videos below a view threshold, Share of fitted videos projected quiet within 30 days, A video projected quiet within two weeks, Before / after a title or thumbnail change, How a title or thumbnail change reshuffled traffic sources, How often a video was iterated on, Whether iterations moved the metric, How fast YouTube is testing a video, An impression spike and what followed it

What the projections were worth

Replayed Aug 27, 2026

Every 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

    Renders

    Subscriber 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 render

    Calls 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

    Renders

    Every 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.

The replay ran on Aug 27, 2026 against the code at b6ca0901, and its full report is kept at .ai/notes/hindcast-report.md.

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 thing

The 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.