Methodology

The ranking formula, in full

A score is five measured components multiplied by public weights. Nothing else enters it: not ad spend, not sponsorship, not the vendor's plan.

Component weights

Each component is measured from 0 to 100. The score is the sum of each value times its weight, so the maximum is 100.

Component weights
Component Weight What it measures
Review quality 30% Average rating, adjusted for how many reviews back it.
Release freshness 25% Days since the latest release reached us through the vendor's feed.
Review volume 20% Number of reviews on a logarithmic scale: the thousandth review adds less than the tenth.
Vendor responsiveness 15% Share of reviews the vendor answered publicly.
Adoption signals 10% Public usage signals; today, stars on the listing's public repository, on a log scale.
Total 100%

Before the first review: public signals only

A listing without reviews is ranked on two facts anyone can check: how recently it shipped a release and how widely its public repository is adopted. Adoption is logarithmic and reaches 100 at 1,000,000 repository stars. Review components join the score once verified reviews exist.

Before the first review: public signals only
Component Weight What it measures
Release freshness 50% Days since the latest release reached us through the vendor's feed.
Adoption signals 50% Public usage signals; today, stars on the listing's public repository, on a log scale.

Few reviews are pulled toward the average

A rating built on a handful of reviews is unreliable, so we blend it with a prior of 3.8 stars counted as 12 extra reviews. The more real reviews a listing has, the less the prior matters.

adjusted rating = (rating × reviews + 3.8 × 12) ÷ (reviews + 12)

  • 78.8 review quality for 5 reviews averaging 5.0 stars
  • 92.0 review quality for 500 reviews averaging 4.7 stars

Five perfect reviews do not beat five hundred good ones.

Freshness decays after a month without a release

Freshness stays at 100 for 30 days after a release, then falls in a straight line to 0 at 365 days. The next release resets it to 100.

Line chart of freshness by days since the latest release: 100 until day 30, then a straight fall to 0 at day 365. fresh aging stale 0 50 100 0 30 90 180 365 days since latest release
Cards use the same clock for their badge: fresh before 90 days, aging from 90 days, stale from 180 days.

Anti-fraud rules

A review only counts toward a score after it passes these checks.

  1. Review bursts are held

    When a listing gets an unusual spike, such as many five-star reviews from accounts created the same day, the whole batch waits for a moderator and counts only once cleared.

  2. Incentives are disclosed

    Reviewers state whether they got a gift card, discount or payment. Disclosed incentives stay visible on the review; undisclosed ones found by moderators remove it.

  3. Usage is verified

    A review gets the verified badge only with proof of use, such as a work e-mail on the customer's domain or an in-app confirmation. Unverified reviews stay labeled as such.

Sponsorship policy

Money buys a labeled slot, never a rank

Vendors can pay for a slot in the sponsored lane above a category list. The slot is marked Sponsored, its weight in the formula is 0%, and the listing keeps the position it earned everywhere else.

Worked example: today's #1

Linux kernel ranks #1 overall today. Each receipt line is a component value times its weight, and the lines add up to the score.

Open the Linux kernel profile

Rank receipt: Linux kernel
#1 overall · #1 in category
94.3/100
  1. Release freshness +49.4 98.8 × 50%
  2. Adoption signals +45.0 89.9 × 50%
Data from GitHub Last sync Computed on Sponsorship weight 0%, never counted Read the full formula