Our Methodology
Every check, every threshold, every primary source — published in full. SEO tools should not be black boxes.
How is the RankifyPro SEO score calculated? Each of 12 deterministic checks is awarded 10 points for a pass, 5 points for a warning, and 0 for a fail. Informational-only checks are excluded from the denominator. The final score is the percentage of awarded points across all scored checks. Thresholds are based on Google’s published Search Central guidance, web.dev recommendations, and widely accepted industry consensus dating back to 2014.
Why We Publish Our Methodology
Most SEO tools are proprietary black boxes. You get a score and a marketing pitch — but no way to verify what was measured or why. We think that is bad for the industry. RankifyPro publishes every threshold, every rule, and every primary source, so you can decide for yourself whether the score is meaningful for your context.
Audit Pipeline (Step by Step)
- Receive the URL via HTTPS POST to
/tool.phpwithX-Requested-With: XMLHttpRequest. - Validate URL format. If missing scheme, prepend
https://. If invalid, return an error. - Issue a single HTTP GET via PHP
file_get_contentswith a 10-second timeout, following up to 5 redirects, with User-AgentMozilla/5.0 (compatible; RankifyPro/1.0; +https://rankifypro.com). - Record wall-clock time from request send to response received in milliseconds (this is the Page Load Speed metric).
- Parse the HTML into a DOM via PHP
DOMDocumentwith libxml warnings suppressed. - Run 12 XPath queries (one per check) against the DOM.
- Award points: pass = 10, warn = 5, fail = 0. Informational checks are not counted in the denominator.
- Compute final score = (sum of awarded points) / (sum of max possible points) × 100, rounded to the nearest integer.
- Return JSON:
{ url, score, checks[], load_time }. - Discard the URL, HTML, and DOM from memory.
Check-by-Check Reference
1. Title Tag
XPath: //title. Primary source: Google Search Central — Title Link best practices.
| Condition | Status | Points |
|---|---|---|
| Length 40–65 characters | PASS | 10 |
| Length outside 40–65 but > 0 | WARN | 5 |
| Missing | FAIL | 0 |
2. Meta Description
XPath: //meta[@name="description"]/@content. Primary source: Google Search Central — Snippets.
| Condition | Status | Points |
|---|---|---|
| Length 120–160 characters | PASS | 10 |
| Length outside 120–160 but > 0 | WARN | 5 |
| Missing | FAIL | 0 |
3. H1 Heading
XPath: //h1. Primary source: web.dev — Headings & sections.
| Condition | Status | Points |
|---|---|---|
| Exactly 1 H1 | PASS | 10 |
| More than 1 H1 | WARN | 5 |
| No H1 | FAIL | 0 |
4. H2 Headings
| Condition | Status | Points |
|---|---|---|
| ≥ 2 H2 elements | PASS | 10 |
| Exactly 1 H2 | WARN | 5 |
| No H2 | FAIL | 0 |
5. Image Alt Text
XPath: //img. We inspect the alt attribute. Empty-string alts (alt="") are treated as present (the explicit decorative declaration). Only entirely-missing or whitespace-only alts are counted as missing.
| Condition | Status | Points |
|---|---|---|
| No images on page | INFO | Not scored |
| 100% of images have alt text | PASS | 10 |
| Some but not all have alt text | WARN | 5 |
| 0% of images have alt text | FAIL | 0 |
6. Mobile Viewport
XPath: //meta[@name="viewport"]. Primary source: Google Search Central — Mobile-first indexing.
7. Canonical Tag
XPath: //link[@rel="canonical"]/@href. Primary source: Google Search Central — Consolidate duplicate URLs.
8. Page Load Speed
Measures TTFB of the HTML document only — not full-page Core Web Vitals. For LCP, FID, INP, CLS use PageSpeed Insights.
| Condition | Status | Points |
|---|---|---|
| < 800 ms | PASS | 10 |
| 800–2000 ms | WARN | 5 |
| > 2000 ms | FAIL | 0 |
9. Keyword Density
We strip HTML, lowercase the visible text, split on whitespace, and count occurrences of every word longer than 4 characters. Healthy density: 1%–3%. Above 3% may look like keyword stuffing. Below 1% is informational only.
10. HTTPS / SSL
We inspect the URL scheme after redirects. Primary source: Google Search Central blog — HTTPS as a ranking signal (2014).
11. Open Graph Tags
XPath: //meta[@property="og:title"]/@content. Primary source: ogp.me — the Open Graph Protocol specification.
12. Robots Meta
XPath: //meta[@name="robots"]/@content. Primary source: Google Search Central — Robots meta tag.
What the Tool Does Not Check (Yet)
- Backlinks (off-page authority)
- Full Core Web Vitals (LCP, INP, CLS) — use PageSpeed Insights
- JSON-LD schema validation — use Google’s Rich Results Test
- hreflang for international sites
- XML sitemap presence and validity
- Internal link graph
- JavaScript-rendered content (we audit the raw HTML response, the same as Googlebot’s first pass)
Versioning & Updates
We review the scoring rules quarterly against any updates to Google’s Search Central documentation and web.dev recommendations. The current rule version is v1.2 (effective 2026-06-11). Material changes will be summarised here with the date of effect.
Report a Methodology Issue
If you spot what you believe is an inaccurate threshold or stale citation, please email support@rankifypro.com. We acknowledge methodology reports within 7 days and publish a correction (if confirmed) within 30 days.