Every number here, and what it would take to make it wrong.
The four rules
These are enforced in code, in one module, rather than remembered by whoever writes the next screen.
- Median, never mean. View counts are violently skewed. One video that caught a recommendation drags a mean somewhere no other video on the channel has ever been, and “your average video gets 4,000 views” built on nine videos and one outlier is worse than silence.
- Every finding carries its n. A conclusion without a sample size is a vibe wearing a number. The count is shown next to the finding, not in a tooltip.
- Refuse below a threshold. Each finding declares the minimum sample it needs. Under it, the box reads “Not enough data yet. This needs 8 published videos and you have 4.” and the finding then appears on its own once you cross the line.
- No false precision about significance. At single-digit sample sizes a t-test is theatre. Two groups are called different only when their interquartile ranges do not overlap. That is conservative, explainable in one sentence, and does not pretend to a p-value nobody computed properly.
Every finding, and what it needs
| Finding | Needs | Answers | How it is computed |
|---|---|---|---|
| Format verdict | 4 of each format | Whether shorts or long cuts are performing better on your channel. | Compares the median views of each format. Names a winner only when the two interquartile ranges do not overlap. Returns nothing at all if the channel has only one format, because there is nothing to compare. |
| Publishing window | 8 dated videos | Whether any weekday is meaningfully better for you. | Buckets by weekday only, never by hour. Requires at least two populated buckets. Says that no day is meaningfully better whenever the ranges overlap, which is the usual answer on a channel of this size. Weekdays are counted in your own time zone, taken from your browser, and in UTC until your browser has reported it. |
| Consistency | 3 dated videos | The gap between the cadence you believe you keep and the one you keep. | A description rather than an inference, which is why its threshold is low. It measures the actual intervals between your uploads and reports the median gap and the longest one. |
| Title shape | 10 titles | Whether a structural pattern in your titles tracks with performance. | Buckets titles by shape, not by keyword. Requires at least two buckets with two videos each before it will rank them. This one refuses most often, and should. |
| Engagement | 5 videos with views | How strongly the people who did watch reacted. | Likes plus comments per thousand views, so a video cannot win on reach alone. Reports the median with the interquartile range beside it, and names the best and worst video by the same measure. A video with no views is left out rather than counted as zero, because it measures nothing yet. |
| Length | 8 long cuts | Whether the length of a long cut tracks with its views. | Long cuts with a recorded duration only, since shorts are all under three minutes. Bands are minutes a person would say: under 5, 5 to 12, 12 to 25 and over 25. A band needs two videos and there must be two bands. The strongest and weakest are called different only when their interquartile ranges do not overlap. |
| Breakouts, on the watchlist | 8 videos with views | Which of a watched channel's videos went well past that channel's normal. | A video counts when it reaches 2.5 times the median views of its own format on the same channel, so shorts are measured against shorts and long cuts against long cuts. A format needs 4 videos of its own to have a median, and one without them is skipped rather than borrowed from the other. Biased toward older videos, because a video from this week has had a week, and the screen says so. |
| Posting days, on the watchlist | 6 dated videos | Which weekdays a watched channel actually posts on. | Counts uploads on each weekday of your own time zone and shows each day's share, Monday first. It describes behaviour rather than claiming anything about performance, so like Consistency it needs no significance test. |
Where the data comes from
Runsheet reads your channel through the YouTube Data API using the access you grant, and records a snapshot of views, likes and comments twice a day on every plan, including the free one. How much of the catalogue those snapshots cover depends on the plan: the most recent 50 on Free and Starter, and the whole catalogue on Creator and Network. Nothing is estimated, modelled or bought from a third party.
The consequence is that your history starts the day you connect. YouTube reports current totals, not a historical series, so there is no honest way to reconstruct the past. The analytics screen says that in the empty state rather than drawing a flat line back to your first upload.
What is deliberately absent
- Keyword search volume. Google does not publish it for YouTube. Every figure you have seen is modelled from autocomplete and related terms. Some models are good; none is a measurement.
- Best hour to post. Splitting a typical catalogue across 168 hourly buckets means the winning hour is decided by one video.
- Estimated revenue. Not available through this API tier, and the public estimates are guesses in a confident font.
- A score out of a hundred. A single number combining a dozen weighted signals cannot be acted on, because you cannot tell which input moved it.
How you can check this
The refusals are the tested behaviour. The test suite covers the cases where a finding must decline, not the cases where it produces a number, because a finding that quietly starts answering below its threshold is the regression that matters. If a future change makes a finding always show something, that is a bug and it fails the suite.
A box that reads “Not enough data yet. This needs 8 published videos and you have 5.” is the honest version of the box every other tool fills in anyway.
If you think a threshold here is wrong, that is a conversation worth having. Tell me which one and why.