Skip to content
Tools.Town
290+ free online tools
Developer Tools

WordPress Plugin Health Score Explained

How Tools.town turns public WordPress.org fields into a 100-point score — and why it is not an official WordPress.org badge.

24 August 2026 4 min read By Tools.Town Team Fact Checked

Key Takeaways

  • Can a 90 mean the plugin is secure: The score never inspects PHP for vulnerabilities
  • My plugin scores 60 but it works perfectly. Is the score wrong: Not necessarily
  • Why is the install bucket weighted if it is just a lower bound: A larger install bucket means more sites have chosen to keep the plugin active, which is a weak but real signal of trust

The Health Check opens the analyzer on the score breakdown. This guide explains exactly how the number is computed, what each slice measures, and what the score cannot tell you. Hub: WordPress.org Ops.


Why a score at all?

Looking at a plugin listing, most developers scan a handful of fields in sequence: last updated, tested up to, install count, rating, support threads. The health score automates that scan and collapses it into a single number so you can compare three candidates without doing the mental arithmetic five times per plugin.

It is a decision aid, not a verdict. A plugin that scores 85 may still be wrong for your setup. A plugin that scores 55 may be the only good option for a niche use case and still work perfectly. Read the five slices and form your own opinion — the score is the starting point.


Five slices (20 points each)

The score is always a whole number from 0 to 100, built from five equally weighted components.

Slice 1 — Updates (recency of last_updated)

Days since last updatePoints
0 – 90 days20
91 – 180 days16
181 – 365 days12
366 – 730 days (1–2 years)6
731 – 1095 days (2–3 years)2
Over 3 years0

last_updated is the field in the plugin information API. It reflects the most recent push to the WordPress.org SVN repository. It does not reflect private patches, hotfixes applied outside the directory, or any activity on GitHub or GitLab mirrors.

Some authors maintain plugins on external VCS and push to the directory only at major releases. A plugin updated 18 months ago may be actively maintained in a private repo. The score reflects what WordPress.org knows, not what the author is doing.

Slice 2 — Compatibility (tested up to vs current WordPress)

Relationship of tested vs currentPoints
Tested to current major (e.g., 6.x)20
One minor behind (e.g., 6.4 when 6.5 is current)15
One major behind8
Two or more majors behind2
Not yet known (current WordPress fetch failed)10 (neutral)

tested is self-reported by the plugin author. WordPress.org does not run compatibility tests. A plugin with tested: 6.7 and the current WordPress at 6.7 earns full points — but that only means the author declared it. “Works in my dev environment” is the typical bar for bumping this field.

The current WordPress version is fetched from the core version-check API once per hour by the proxy and shared across all requests in that window.

Slice 3 — Popularity (active install bucket)

Install bucketPoints
1+ million20
500k+17
100k+14
10k+10
1k+6
Under 1k or unavailable2

The install bucket is a lower bound. 10,000+ means at least 10,000 sites have the plugin active in a WordPress installation that participates in the directory’s active install tracking. It does not include sites that self-host WordPress without the anonymous install tracking, enterprise platforms that strip the telemetry, or sites that have the plugin installed but deactivated.

The 20-point ceiling means popularity cannot rescue a plugin that scores poorly on updates and compatibility. A million-install plugin that was last updated four years ago and is tested two major versions behind might only score around 50.

Slice 4 — Reviews (rating and rating volume)

ConditionPoints
4.5+ stars with 50+ ratings20
4.0+ stars with 20+ ratings16
3.5+ stars with 10+ ratings12
Any rating, fewer than 10 ratings8
No ratings5 (neutral rather than zero)

The raw rating is on a 5-star scale with a num_ratings count. We penalise low volume: a plugin with two 5-star ratings from the author’s friends is not the same as a plugin with 2,000 ratings averaging 4.8. The floor at “no ratings” is 5 rather than 0 because a new or niche plugin with no ratings is not necessarily bad — it is just unknown.

Slice 5 — Support (resolved thread ratio)

ConditionPoints
80%+ resolved (20+ total threads)20
60–79% resolved15
40–59% resolved10
Under 40% resolved4
Fewer than 5 threads (too small a sample)10 (neutral)
No thread data10 (neutral)

Support thread data (support_threads and support_threads_resolved) is in the plugin info API. A plugin where authors consistently reply and close threads earns near-full points here. A plugin with 200 open threads and 10 resolved does not.

Plugins with very few threads get the neutral 10 because a small sample can make a good plugin look either perfect (one thread, one closed) or terrible (one thread, still open) through noise alone.


Activity vs health — they are different signals

The health score does not determine the activity label. These are computed separately:

  • Health answers: “Given what the listing says right now, does this plugin look maintained, popular, and well-reviewed?”
  • Activity answers: “Does the update pattern suggest this plugin is still being actively worked on?”

A plugin with 5+ million installs that has not been updated in 22 months might score 68 on health (popularity and support are strong; updates and possibly compatibility drag it down) while earning “low activity” on the abandoned label. That is intentional — these are different questions and they deserve different answers.

The activity label is explained in full in the abandoned check use-case guide.


What the score never measures

  • Security vulnerabilities — no CVE data, no static analysis, no dependency audit. A 95-score plugin may have a known XSS. Use Patchstack or WPScan for CVE lookups.
  • Code quality — we do not read PHP, JavaScript, or CSS in the zip. The score is entirely based on listing metadata.
  • Performance impact — load time, database queries, front-end assets. The listing has nothing about these.
  • Licence — GPLv2, GPLv3, commercial add-ons. Not in the info API.
  • Your specific setup — whether this plugin conflicts with your theme, WooCommerce version, or another plugin you run.

How to act on the score

Score 80–100 — The listing looks healthy. Still read the changelog before upgrading on a production site, and still check requires_php against your actual hosting PHP.

Score 60–79 — Caution is warranted. Look at which slices are low. If updates are dragging it down but installs and support are strong, the plugin may be stable. If tested-up-to is three versions behind, run it in staging.

Score 40–59 — At least two slices are weak. Identify the reason. If it is an old, low-install plugin with no reviews and unresolved threads, look for an alternative. If it is an intentionally maintenance-free utility (pure CSS, no PHP hooks), the score may be misleading.

Score below 40 — The listing has multiple red flags. That does not make it unusable, but you need to understand why before installing. Check when it was last updated, whether it is tested against your WordPress, and whether anyone has had success with it on the support forum.


Advertisement

Try WordPress Plugin Health Check — Free

Apply what you just learned with our free tool. No sign-up required.

Try WordPress Plugin Health Check

Frequently Asked Questions

Can a 90 mean the plugin is secure?
No. The score never inspects PHP for vulnerabilities. It only weights listing freshness, tested-up-to, install bucket, ratings volume, and support thread ratio.
My plugin scores 60 but it works perfectly. Is the score wrong?
Not necessarily. A plugin that works well but has not been updated in 18 months, is tested three major versions behind, and has few ratings will score in the 50–70 range. The score reflects the listing's public signals, not your runtime experience.
Why is the install bucket weighted if it is just a lower bound?
A larger install bucket means more sites have chosen to keep the plugin active, which is a weak but real signal of trust. We weight it modestly — 20 points — and treat every bucket jump as a fixed increment rather than a continuous scale.

Was this guide helpful?

Your feedback helps us improve our content.

Get the best Developer Tools tips & guides in your inbox

Join 25,000+ users who get our weekly developer tools insights.