Help Center

What is On-Page SEO score and how is it calculated?

onpage_score is an OnPage API proprietary metric that estimates the quality of technical page optimization. It considers critical on-page errors and warnings detected on the page.

The score is provided on a 100-point scale. 100 is the highest possible score indicating that the page doesn’t have any critical errors and warnings and thus is well optimized. 0 is the poorest score, meaning that the page accumulates all the possible errors and warnings and thus is not optimized at all.

The metric can be found in the following endpoints:


In the majority of endpoints, onpage_score provides the score for a single page. However, in the Summary endpoint, the score is related to all pages of a domain. To learn how the onpage_score of a domain is calculated, refer to this article.

How is On-Page Score calculated?

OnPage API divides on-page issues into two categories: critical errors and warnings. Each issue has its own value that is used as a variable in the calculation.

The score is calculated by the following formula:

Sc = 100 – ∑(En/78) x 55 – ∑(Wn/123) x 45

  • Sc — OnPage score of a page;
  • 100 — the maximum OnPage score the page can receive;
  • En — the value of an error the page has (see the table below);
  • 78 — the total value of all errors we take into account;
  • 55 — the maximum OnPage score of the Errors category;
  • Wn — the value of a warning the page has (see the table below);
  • 123 — the total value of all warnings we take into account;
  • 45 — the maximum OnPage score of the Warnings category.

Assume that the page didn’t pass two checks from the Errors category (let it be high_loading_time and is_http) and two checks from the Warnings category (duplicate_title, no_image_alt). In this case, the calculation will be performed as in the following example:

1 First, we calculate the score of each check.



10 / 78 * 55 = 7.05.


8 / 78 * 55 = 5.64



10 / 123 * 4 = 3.65


8 / 123 * 45 = 2.92

2 Then, we sum up the check scores.


7.05 + 5.64 = 12.69


3.65 + 2.92 = 6.57

3 Finally, we subtract the resulting values from the maximum possible OnPage score:

100 – 12.69 – 6.57 = 80.74

4 The onpage_score in this case is 80.74

Critical errors:

Error name Error description Value if true Value if false
high_loading_time page loads longer than 3 seconds 10 0
redirect_loop page has a redirect chain that starts and ends at the same URL (e.g., Page A redirects to Page B, Page B redirects to Page C, and Page C redirects back to Page A) 10 0
canonical_to_broken page with the canonical link element points to a 404 page 9 0
recursive_canonical page contains rel=”canonical” tag to another page, which in turn, refers back to the initial page 9 0
is_http page has an insecure HTTP protocol 8 0
no_title page has no title tag 7 0
duplicate_title_tag page has more than one title tag 5 0
broken_links page has links to broken pages 5 0
links_relation_conflict page has a mix of both follow and nofollow incoming internal links 5 0
canonical_to_redirect canonical page points to a page that redirects elsewhere 3 0
canonical_chain canonical page points to a page that has a canonical pointing elsewhere 3 0
duplicate_content page has duplicate content 4 0
Total value of all errors = 78
Maximum OnPage score = 55


Warning name Warning description Value if true Value if false
duplicate_title page has duplicate title tags 10 0
broken_resources page contains broken resources 10 0
large_page_size the size of a page exceeds 256 kbytes 10 0
duplicate_description page has duplicate description tags 9 0
no_image_alt page has images without alt tags 8 0
seo_friendly_url page with SEO-friendly URL 0 7
flash page has flash elements 5 0
no_description page has an empty description tag 5 0
duplicate_meta_tags page has more than one meta tag of the same type 5 0
no_h1_tag page has an empty h1 tag 5 0
irrelevant_description description tag of a page is irrelevant to its content 5 0
title_too_long title tag of a page exceeds 65 characters 5 0
is_orphan_page page has no internal links pointing to it 5 0
irrelevant_title title tag of a page is irrelevant to its content 5 0
title_too_short title tag of a page is shorter than 30 characters 5 0
no_doctype page has no doctype 4 0
high_content_rate page has the plaintext size to page size ratio of more than 0.9 3 0
low_character_count page has less than 1024 characters 3 0
high_character_count page has more than 256,000 characters 3 0
low_readibility_rate page scored less than 15 points on the Flesch–Kincaid readability test 3 0
deprecated_html_tags page has deprecated HTML tags 3 0
lorem_ipsum page has lorem ipsum content 3 0
Total value of all warnings = 123
Maximum OnPage score = 45