Skip to content
PluginCanary

How we score WordPress plugins

Every status, alert and score comes from fixed rules applied to public data. No AI decides a plugin's status. Every claim on a plugin page links to the data behind it. Current score version: v1.

Signals

A signal is a fact we detect, with a rule and a severity. Critical means act now. Warning means review this week. Info is context.

IDSignalRuleSourceSeverity
OWN-1New committerA username commits to the plugin's SVN for the first time, and the plugin is older than 90 days. Warning when at most one other username committed in the previous 12 months; Info when a team of two or more did (normal team growth)Trac timeline + SVN logWarning
or Info
OWN-2Author or contributors changedauthor, author_profile or contributors differs from the previous snapshotPlugins APIWarning
OWN-3Likely ownership transferOWN-2 (author or contributor list changed), and none of the previous 12 months' committers has committed in the last 60 days, and a new release ships within 90 days of the changeDerivedCritical
OWN-4Homepage domain changedPlugin homepage or author URI moves to a different registrable domainPlugins APIWarning
CLS-1Closed on wordpress.orgAPI returns closed; record date and reasonPlugins APICritical
(security reason or unknown), Warning (any other stated reason)
CLS-2ReopenedPreviously closed plugin is available againPlugins APIInfo
MNT-1No release in 12 monthslast_updated older than 365 daysPlugins APIWarning
(Critical after 24 months)
MNT-2Not tested with current WordPresstested is 2 or more major versions behind current WPPlugins API + core APIWarning
MNT-3Requires unsupported PHP onlyThe minimum PHP version the plugin requires is newer than every supported PHP release, so no supported setup can run itPlugins API + PHP configWarning
SUP-1Support going unansweredResolved ratio below 20% with 10+ threads in the last 2 months, or ratio dropped 30+ points vs 6 months agoPlugins API snapshotsWarning
SEC-1New vulnerability affects your versionPublished vulnerability covers the installed versionWordfence feedCritical
if no patched version, Warning if a patch exists
SEC-2Vulnerability unpatched 14+ daysSEC-1 with no fixed version after 14 daysDerivedCritical
SEC-3Repeated security issues3+ vulnerabilities in the last 24 monthsDerivedInfo
REP-1Rating droppingAverage of last 90 days' reviews at least 1.0 star below lifetime average, with 5+ recent reviewsReviewsWarning
REP-2One-star spike after release5+ one-star reviews within 7 days of a releaseReviews + versionsWarning
MOM-1Installs fallingActive installs drop one bucket (e.g. 100,000+ to 90,000+) vs 12 weeks agoSnapshotsInfo
MOM-2Downloads collapsing4-week download average down 50%+ vs trailing 26-week averageDownload statsInfo
CMP-1Site PHP too old for pluginCustomer site PHP below plugin requires_phpConnector + APIWarning
CMP-2New release raises requirementsNew version raises requires or requires_php above a monitored site's versionConnector + APIWarning
UPD-1Update available, high riskAn update exists and SEC-1 applies to the installed versionConnector + feedCritical

Canary Score

One score from 0 to 100 per plugin, recomputed nightly from 5 weighted sub-scores. Each sub-score runs from 0 to 100.

20%
Ownership stability (O)
25%
Maintenance (M)
25%
Security (S)
15%
Support (P)
15%
Reputation and momentum (R)
Canary Score = round(0.20 O + 0.25 M + 0.25 S + 0.15 P + 0.15 R)

Then the overrides below apply.

Ownership stability (O), weight 20%

  • Start at 100.
  • Minus 40 per active OWN-3.
  • Minus 20 per active OWN-1 or OWN-2 opened in the last 180 days.
  • Minus 10 if 3 or more distinct new committers in 24 months.
  • Floor 0.

Maintenance (M), weight 25%

  • Days since last release d: 100 if d is under 90, 85 if under 180, 65 if under 365, 35 if under 730, else 10.
  • Minus 15 if MNT-2 is active.
  • Minus 10 if MNT-3 is active.
  • Plus 5 if 6 or more releases in 24 months (cap 100).

Security (S), weight 25%

  • Start at 100.
  • Minus 60 if any open unpatched vulnerability.
  • Minus 10 per vulnerability in 24 months with CVSS 7 or higher, minus 5 per other vulnerability (history counts for at most minus 40).
  • Minus 10 if median days to patch is over 30.
  • Floor 0.

Support (P), weight 15%

  • Resolved ratio r over the last 2 months (0 to 1): 100 x r.
  • Minus 15 if SUP-1 is active.
  • Fewer than 5 threads in 2 months: 70 (neutral).

Reputation and momentum (R), weight 15%

  • Start at 70.
  • Plus 15 if the 90-day average rating is 4.5 or higher.
  • Minus 25 if REP-1 is active.
  • Minus 15 if REP-2 opened in the last 90 days.
  • Plus 15 if the install bucket rose in 12 weeks.
  • Minus 15 if MOM-1 is active.
  • Minus 10 if MOM-2 is active.
  • Clamp 0 to 100.

Status bands and overrides

Healthy 80 to 100Watch 60 to 79At risk 40 to 59Avoid 0 to 39Limited data
  • Closed plugin: status Avoid, score capped at 10.
  • Open unpatched vulnerability: score capped at 39.
  • Active OWN-3: score capped at 49 until a person reviews it.
  • Plugins with under 1,000 active installs and under 12 weeks of history show "Limited data" instead of a band.

Data sources and refresh

All data comes from public sources. Plugins are refreshed by tier, so anything a customer runs is checked daily, popular plugins weekly and the long tail monthly. All times UTC.

SourceWhat we useRefresh
wordpress.org Plugins APIVersions, installs, ratings, support stats, author, contributors, closuresBy tier: A daily, B weekly, C monthly. Closure re-check every 6 hours for Tier A
Plugins Trac and SVN logCommitter and date of every commitHourly
wordpress.org reviewsDated reviews and ratingsDaily for Tier A, weekly for Tier B
wordpress.org download statsDaily downloadsWeekly (Sunday) for Tier A and B
Wordfence IntelligenceVulnerabilities, affected and patched versions, CVSSEvery 6 hours

Refresh tiers

TierWhich pluginsRefresh
AIn any customer inventory or watchlist, or 10,000+ active installsDaily
B1,000 to 9,999 active installsWeekly
CEverything else, including closed pluginsMonthly

Job schedule

JobSchedule (UTC)Does
catalog-syncDaily 00:30Adds newly listed plugins
plugin-refreshContinuous, paced by tierFetches plugin details, records a snapshot, detects closures
closure-checkEvery 6 hours, Tier ARe-checks closed status for monitored plugins
committer-logHourlyRecords each commit's committer and date
downloads-statsWeekly, Sunday 02:00Daily download counts for Tier A and B
reviews-ingestDaily 03:00 Tier A, weekly Tier BNew reviews
vuln-feedEvery 6 hoursVulnerabilities mapped to plugins and version ranges
signal-evalAfter each refresh, commit, review or vulnerability batchOpens, updates or resolves signals
score-recomputeDaily 04:00Sub-scores, Canary Score and status band
report-data1st of the month 05:00Monthly figures for the State of WordPress Plugins report

Score version history

Any change to weights or formulas bumps the score version and is listed here with its date.

v1 3 Nov 2026, current

Initial weights: Ownership stability 20%, Maintenance 25%, Security 25%, Support 15%, Reputation and momentum 15%. First public version of the signals and Canary Score.

Report an error

Plugin authors and users can report a data issue with the Report a data issue link on any plugin page, or by email to [email protected]. We reply within 5 working days and record the correction or explanation on the plugin page.

Independence

No plugin author can pay for a better score or placement. We have no sponsored listings and no affiliate links. We build plugins ourselves (WPFactory and WooBeWoo), and they are scored by the same rules as everyone else.

See the Radar for the events these rules detect.