Przejdź do treści
SEOMaster SEOMaster

Scoring engine changelog

When your score moves between scans, the answer is either that your site changed or that we did. This page exists so the second possibility can be checked rather than assumed.

Why we publish this

A tool that grades other people's transparency cannot be a black box itself. When we raise the bar — and with the security pillar we raised it sharply — a drop in your score is not your fault, and you should have a way to establish that.

Entries marked as able to move a score are the ones after which an existing, unchanged site could receive a different number. Neutral entries change presentation or the order of recommendations, but not the scoring itself.

Every entry cites the phase identifier of the migration that shipped it. That is a deliberately checkable reference rather than a vague "we improved the algorithm".

Security: weights now describe discrimination, not consequence

· phase199 · Reweighting · Could move a score with no site change

A site with none of the six security headers could still score 82/100 in this pillar, because a valid certificate, correct TLS and no mixed content accounted for 43% of the weight — all of it for "has HTTPS and broke nothing". In 2026 a certificate is table stakes and separates nobody from anybody. Weights now describe how much each signal actually discriminates between sites, while genuinely exploitable failures (a rejected or expired certificate, mixed content, no HTTPS, server software with published CVEs) cap the whole pillar instead. Floors moved too: "0 of 6 headers" scored 52, a pass mark for doing nothing, and now scores 16; absent HSTS scored 40 and now scores 20.

Every finding now carries an effort estimate

· phase197 · Method change · Score-neutral

Recommendations stopped being a list ordered by weight alone. Each check now carries effort metadata — from "a minute" (a header to paste) to "a day or two" (a rendering-architecture change) — and a quick-win flag. The score does not change as a result; the order in which the report suggests acting does.

New checks: font-display and near-duplicate content

· phase196 · New check · Could move a score with no site change

Two checks computed from data the scan had already downloaded: performance.font_display (whether self-hosted fonts declare font-display, without which text can stay invisible for seconds) and seo.duplicate_content (sub-pages with near-identical content within the sampled set). No additional requests.

New check: soft 404s

· phase195 · New check · Could move a score with no site change

The non-existent-path probe had run on every scan for a long time, but its result never reached the score. seo.soft_404 now reports servers returning a 200 status for pages that do not exist — which leads search engines to index nothing-pages and spend crawl budget on them.

New checks: SEO integrity and security extras

· phase194 · New check · Could move a score with no site change

seo.dup_meta (duplicate titles and descriptions across the sampled pages), seo.sitemap_robots (whether your sitemap and robots.txt contradict each other), security.cross_origin (the COOP, CORP and COEP headers, which the "six headers" check never covered) and security.cookie_prefix (__Host- and __Secure- cookie prefixes).

New checks: images, orphan pages and internal redirects

· phase193 · New check · Could move a score with no site change

performance.img_dimensions and performance.img_srcset (image dimensions that prevent layout shift, and responsive variants), seo.orphans (pages in your sitemap that no internal link points to), seo.internal_redirects (internal links aimed at a redirect rather than the destination) and security.consent (consent banners blocking content).

Indexability now reads the X-Robots-Tag header

· phase192 · Method change · Could move a score with no site change

The seo.indexable check only ever read the <meta robots> tag. A site excluded from the index by an X-Robots-Tag: noindex HTTP header passed it cleanly — meaning the single most serious SEO problem there is stayed invisible. Both sources are now read, with the header taking precedence, as Google treats it.

An eighth pillar: AI readiness

· phase171 · New check · Could move a score with no site change

A new pillar answering a question customers had started asking: can ChatGPT, Perplexity and AI Overviews read this page? Six checks: AI crawler policy in robots.txt, content extractability, content present in raw HTML, structured data, the llms.txt file, and author and date. The SEO and performance pillar weights were reduced to make room, so existing sites' scores could move without anything changing on their side.

Full Lighthouse harvest from the PageSpeed call

· phase170 · Method change · Could move a score with no site change

Every scan was already paying for a PageSpeed Insights request, which runs a real headless Chrome, yet we used a fraction of the response. We now harvest the full audit set, including axe-core violations mapped to specific WCAG criteria. No extra requests and no extra cost.

The check registry: weights and thresholds become public

· phase102 · Method change · Score-neutral

The starting point of this log. Weights, thresholds, explanations and remediation advice moved out of the scanner's code into a versioned registry in the database. From then on every point in a report could be traced to a named check, and any change of method bumps the engine version — which is what made it possible to tell a change in your site apart from a change in our method at all.