How the number is built

Methodology

Velocity is one number per game per day. It is arithmetic on counters itch.io and Roblox publish in public, and nothing on this site is an estimate or a model output. Here is the whole calculation, and what it cannot tell you.

What gets collected

Three jobs run every day, and each one records what a public page or endpoint said at the moment it was read.

The itch.io browse harvest walks itch.io’s own sorts and tag pages. Only the top-rated sort exposes a rating count; the rest are read for chart position, which is a number itch.io publishes about a game rather than one we compute.

The itch.io deep collector visits a watchlist of games that already have an audience, and reads three things per game: the game page for its comment count, the community board for topic views and replies, and the devlog feed for how often the developer posts. Those are the counters that move first, and collecting them costs three requests a game, which is why the watchlist exists.

The Roblox collector reads Roblox’s public API for every game on its trending charts plus every game we have seen before, and records visits, favorites, upvotes, downvotes and concurrent players.

Every reading is stored against the moment it was taken. Nothing recomputes it afterwards and nothing is backfilled; the one way a stored reading changes is a job writing again at the exact same timestamp, which replaces the columns that write carries rather than adding a second row. Every day on this site is a UTC calendar day. Concurrent players are recorded but feed nothing: the number swings with the hour of the crawl, so a day-over-day change in it would measure our schedule.

One counter at a time

Before anything is blended, each counter is reduced to a rate and then to a change in that rate.

d7    = today − 7 days ago
rate  = d7 / max(7 days ago, floor)
accel = rate today − rate 7 days ago

One-day and thirty-day changes are computed and stored as well. Neither feeds Velocity. They are on the game pages because they are useful to look at, not because the ranking uses them.

A note on the word: the per-counter rate on the middle line is stored in a column the database calls velocity, and it is not the same thing as the Velocity this site ranks by. One is a single counter’s weekly growth. The other is the blend of four accelerations described further down. Where this page says Velocity with a capital V, it means the blend.

What the floors do

The floor in that middle line replaces the denominator when a counter’s baseline is smaller than it. It is not a threshold a change has to clear, and it filters nothing out.

The problem it solves: a game going from 1 rating to 3 has grown 200%, and a game going from 500 to 900 has grown 80%. Ranked on that, the board fills with games nobody has played. The denominator is the older reading, so dividing by max(baseline, floor) costs the real mover nothing — its baseline of 500 is far above the floor of 20, and the floor never applies — while capping what a two-rating jump off a baseline of 1 can claim. Every counter below its floor is still measured, still moves the number, and is still shown.

Per counter

Denominator floors

The denominator floor applied to each counter's baseline
CounterSourceDenominator floor
Topic viewsitch.io500
Commentsitch.io20
Ratingsitch.io20
Topic repliesitch.io20
VisitsRoblox10,000
FavoritesRoblox100
UpvotesRoblox100

When a window yields nothing

A crawl can be missed or run late, so a reading is not guaranteed to sit exactly where a seven-day window needs one. Comparing today against a three-day-old value and calling the result a seven-day change produces a confident wrong number, and nothing downstream looks wrong. So the seven-day window carries a tolerance of 2 days: if the nearest reading sits further from the window’s edge than that, the window yields nothing at all. On this site that is a dash, never a zero. The one-day window’s tolerance is 1 day, not 2, because a day of slip in a one-day change reads as a doubling.

Why acceleration and not growth

Growth tells you a game is big. Both platforms already rank by that, and by the time a game is near the top of one of those charts it has been found. Acceleration is high when a game’s weekly growth is faster than it was the week before, which is a state a game passes through on the way up and then leaves. That is the window this site is built for, and it is why a game with 40 ratings can outrank one with 4,000.

The counters also move in an order. Topic views go first, because people are looking. Comments follow, because people are talking. Ratings come last, because people finished and cared. A game with accelerating views and flat ratings is in the pre-breakout state, and it is invisible to anyone watching ratings alone.

Velocity

Velocity is a weighted mean of those accelerations, weighted so that the rung which moves first counts for twice the last of the three counters. Neither platform publishes the other’s counters, so each source maps its own onto the same four rungs and the same four weights.

Velocity components

The ladder

Each rung of the signal, the counter it reads on each source, and its weight
RungWhat a move meansitch.ioRobloxWeight
Aperturepeople are lookingTopic viewsVisits0.40
Intentpeople are talkingCommentsFavorites0.30
Conversionpeople finished and caredRatingsUpvotes0.20
Chart positionthe platform agreesnew-and-populartop-trending0.10

The fourth row is not a counter. It is the seven-day improvement in the game’s position on the platform’s own trending chart, divided by the older position and clamped to plus or minus one, so climbing from 200 to 100 is worth what climbing from 20 to 10 is worth. Both halved the field in front of them.

A missing component is not a zero

Most itch.io games have no community board at all. Scoring them as though their board were flat would put every boardless game permanently below a game with a dead one. So a component that cannot be computed is dropped from the top and the bottom of the weighted mean, and what it would have contributed is recorded as confidence instead.

Dropping it from the bottom as well as the top is what keeps a one-component score comparable with a four-component one: both are means of the accelerations that could be read, not sums over a fixed denominator.

Confidence

confidence = share of weight measured
           × min(days observed / 14, 1)

Two things, multiplied. How much of the ladder we could read for this game, and how much of a fortnight we have been reading it over. Acceleration spans two weeks, so a game observed on every day of one has all the history the formula can use, and a game found four days ago does not.

Confidence is about measurement, not quality. A Roblox game can score on one component and rank highly on it; the number beside its rank is what tells you that, which is why every ranked row on this site carries confidence rather than hiding it behind a hover.

What range the number has

None. Velocity is a mean of accelerations, and an acceleration is a change in a growth rate, so the number has no ceiling, no floor and a sign. It reads negative whenever the counters we could read grew more slowly this week than they did the week before — a game coming off a better week, which is a reading and not a fault. Nothing clamps the blend, nothing is filtered out for being below zero, and every surface here prints the sign rather than hiding it.

Confidence is the one number on this page that runs 0 to 1. Velocity does not, and any reading of it as a percentage or a score out of one is a misreading. Compare Velocities to each other within a board, and read each one against its confidence.

Who gets scored at all

A game is scored if it is under 24 months old and clears one audience floor on its own source: 25 ratings or 500 topic views on itch.io, 10,000 visits or 100 favorites on Roblox. Below that line games are still collected and still have pages here; they are not ranked. That is most of the catalogue, and it is deliberate. Ranking a game with four ratings against a game with four hundred is not a ranking.

Rank is per board

A visit is not a topic view, so the two sources are ranked apart. Velocity and confidence themselves are absolute — a game’s two numbers do not change because another game moved — and only the ranking is partitioned: rank is dense within a source, and itch.io and Roblox each have their own rank 1. There is no query on this site that orders the two together, and there should not be one anywhere else either.

The ranking is also a snapshot of one day. A game that is not scored on a given day has no row for that day, rather than keeping yesterday’s.

Trends

Tags and genres are the platforms’ own taxonomies, so aggregating games into them is bookkeeping. A trend’s velocity is the mean of its members’ seven-day velocities, which is dimensionless and therefore the number to compare trends by. Its total change sums each member’s seven-day change on the one counter every game on that source reports: ratings on itch.io, visits on Roblox.

Share is that total over the summed total of every trend of the same kind that day. It is blank on a day whose total was not positive, because apportioning a shrinking total hands the largest share to the fastest-shrinking trend.

The n-grams are not bookkeeping. A naming wave is a genre being born, and it is legible in titles for weeks before either platform has a category for it. Every tracked title is mined for 2- and 3-word phrases, and a phrase is kept once it appears in 5 distinct titles. N-gram trends never show a share: one title can match several overlapping phrases, so the denominator would count the same game repeatedly, and n-grams are the one kind that can span both sources, where adding rating changes to visit changes would let the visits swamp everything. Game count, total change and velocity carry that signal instead.

How a flag on Scouted is recorded

Scouted lists games flagged here while they were still small that went on to break out. Its standard is one query, and it reads more than a board does: the same daily ranking the boards are drawn from, plus the raw counter readings underneath it, which no board query touches. The rule is written out here as well so the page claiming the calls and the page explaining the arithmetic cannot end up describing two different rules. Both take the numbers below from the same constant the query is built from.

  1. The flagThe first day a game’s Velocity reaches 0.20 with a confidence of at least 0.50 — confidence as defined above, so the gate is on the product of the weight measured and the history behind it, not on the weight alone. A game that sits above that line for a fortnight is one flag, dated to the first of those days.
  2. The outcomeAt least 30 days after that flag, the game’s ratings on itch.io or upvotes on Roblox read at least 4 times what they read on the flag day, and have passed 200 or 1,000 outright.

The outcome is graded on the conversion rung: of the three rungs that are counters, it carries the least weight in the table above, and it is the last of the three to move. Grading a call against Velocity would mean the number that raised the flag was also the number that cleared it. The two absolute floors are ten times the denominator floor already applied to the same two counters, so that a game going from 12 ratings to 48 is not filed as a breakout.

30 days is an evidence standard and nothing more. It is not a claim about how far ahead the early counters run, which is the limit stated below.

What this cannot tell you

The list below is the part of this page worth reading twice. A number you cannot audit is a number you should not act on.

History starts when we do
itch.io publishes a game’s current counters and nothing else. There is no archive, no history endpoint, and no way to ask what a game’s numbers were last month. Roblox is the same. So a game’s series here begins on the day a crawler first reached it, and there is no backfill anywhere in this system. A game we found on Tuesday has no Monday, and never will.
Age is often the day we noticed
The 24-month gate uses a release date where the platform publishes one. itch.io usually does not, so for most itch.io games the age we hold is the age of our own record of it.
The early counters cover a watchlist
Topic views and comment counts come from the deep collector, which visits games that already have an audience. A game with no ratings yet has no aperture reading, so its Velocity rests on fewer components. Its confidence says so, and that is the number to read it against.
We do not know how far ahead the early counters run
That views move before ratings is the thesis this site is built on, and the chart on every game page shows the shape of it. The size of the gap is not something these counters measure, so no figure for it appears anywhere here. Anyone quoting you one is guessing.
The two boards are not comparable
Same four weights, different counters, different scales. Rank is dense within a source and the boards sit side by side rather than merged. Comparing an itch.io Velocity of 0.180 against a Roblox one is comparing two measurements that were never the same measurement.
Velocity is acceleration, not size
A game at the top of the board is speeding up. It may still be small. It may stay small. The counters on its own page are where you find out which.
Counters move for reasons that are not an audience
A developer resets a page, a moderator removes ratings, a platform changes what it publishes. We record what was published and when we read it. We cannot see why it changed, and neither can anyone else working from the same public pages.
A missed day is gone
Every reading is a snapshot with no upstream history, so a day a crawler does not run cannot be recovered later. Where that leaves a window without a reading close enough to its edge, the window yields nothing rather than a number.
Nothing here is a prediction
Velocity describes the fortnight behind it. It carries no probability that a game will break out, and it is not a forecast. It is a reading, and what you do with it is the part we cannot help with.

Checking any of this

Every game page shows the counters the ranking was computed from, dated, with the windows that could not be computed left blank. Pick a game off either board, open its page, and the arithmetic above should reproduce the number it was ranked on. Scouted holds the flags we recorded early and what the games did afterwards, with the standard for both written out in full.