Skip to content
AgileLogics

On Page SEO Checker

Fetches a page from our server (browsers can't do this due to CORS) and reports its title, meta description, meta robots directive, canonical URL, and H1 count.

How it works

Enter a URL and click Check.

What does an on-page SEO checker look at?

An on-page SEO checker downloads a page and pulls out the HTML elements search engines read first: the <title>, the meta description, any meta robots rules, the canonical link and the main headings. This one reports six of those facts for a single URL so you can confirm a page ships the tags you think it does.

The URL you enter is sent to our server, and our server fetches the page. Browsers block one site's JavaScript from reading another site's HTML (the same-origin policy), so a check like this can't run purely in your browser.

How to run a check

  1. Paste a full URL, including https://. A bare example.com is rejected with "Enter a valid http:// or https:// URL."
  2. Click Check.
  3. Read the report. If something looks wrong, view the page source in your browser to see the exact markup.

The fetch follows up to ten HTTP redirects and analyses whichever page it lands on, waits up to eight seconds for each response, and reads at most the first 2,000,000 bytes of HTML.

Example report

A product page with the basics in place returns:

Status: 200
Title: Trail Running Shoes | Example Outfitters
Meta description: Lightweight trail shoes tested on rocky terrain, with free returns.
Meta robots: (missing — defaults to index, follow)
Canonical: https://www.example.com/shoes/trail
H1 count: 1

A JavaScript single-page app that renders everything client-side often looks like this instead, because its server HTML is little more than a title and an empty <div>:

Status: 200
Title: Dashboard
Meta description: (missing)
Meta robots: (missing — defaults to index, follow)
Canonical: (missing)
H1 count: 0

Reading each line

Line Where it comes from What to look for
Status HTTP status of the final response Anything other than 200 on a page you want indexed
Title First <title> element, trimmed Missing, duplicated across pages, or not describing the page
Meta description <meta name="description"> content Missing, boilerplate, or copied from another page
Meta robots <meta name="robots"> content A stray noindex left over from staging
Canonical First <link rel="canonical"> href Pointing at a different page, or at an http:// or staging URL
H1 count Number of <h1> elements anywhere in the HTML 0, or several competing top-level headings

Some context from the primary sources on what these elements do:

  • Title. Google says its title links are generated automatically, and the <title> element is one of several sources it draws on (Google Search Central: title links). A specific, unique title gives it the best raw material.
  • Meta description. Google mostly builds snippets from page content but may use the meta description when it describes the page better (Google: snippets and meta descriptions). Write one per page, but don't expect it to be shown word for word.
  • Meta robots. When the tag is absent, the default rule (all) applies, which is why the report says "defaults to index, follow". Google also notes that if robots.txt blocks a URL, it never sees that page's meta robots rules at all (Google: robots meta tag).
  • H1. HTML allows more than one <h1>, but MDN recommends one per page describing its content, with nested headings below it (MDN: heading elements). Treat a count of 0 or 4 as a prompt to look at the heading outline, not as a ranking penalty.

Blind spots worth knowing

The checker reads markup literally, which produces a few false alarms:

  • Attribute spelling, not capitalisation. name="Robots", NAME="DESCRIPTION" and rel="Canonical" are all found, and a canonical is recognised when canonical is one of several space-separated rel values. A typo such as name="descripton", or property="description", still shows as missing.
  • No HTTP headers. A noindex sent as an X-Robots-Tag header, or a canonical sent in a Link header, isn't reported. Only the HTML is parsed.
  • No JavaScript. Tags written by a framework or tag manager after load don't exist in the HTML this tool sees. Google does render JavaScript, so a page can be fine for Google and still look empty here. The search engine spider simulator shows how much text is in the raw HTML.
  • First match only. If a page has two <title> or two canonical tags (a common side effect of two SEO plugins), only the first is shown. Search the page source for duplicates.
  • Bot blocking. The request comes from our server with a user agent naming this site. A site that blocks unknown bots may return a 403 or a challenge page, and the report then describes that page instead.

What to do with the results

If the title or description is missing, the meta tag generator builds correctly escaped <title> and <meta> markup you can paste into your template. When the canonical points somewhere unexpected, run that page through the canonical URL checker and confirm the target returns 200. If the status is a 404 or 5xx, the redirect checker shows whether a redirect chain is landing on the wrong URL.

Run the check again after deploying a fix. The report reflects whatever the server returns at that moment, so it's a quick way to confirm a template change actually reached production.

Last updated

Frequently asked questions

Can this check any URL, including internal or private addresses?
No. Before any request is made, the hostname is resolved and checked, and addresses in private, loopback, link-local and other reserved ranges are refused. Only public http:// and https:// URLs can be checked, and every redirect hop is checked the same way.
Does the checker give my page an SEO score?
No. It reports six facts about the page (status, title, meta description, meta robots, canonical and H1 count) and leaves the judgement to you. A single number would hide the detail you need to fix anything.
Why does it say my meta description is missing when the page has one?
The most common cause is a description added by JavaScript after the page loads, which the checker can't see because it reads the raw HTML without running scripts. Capitalisation isn't the problem; name="Description" and name="ROBOTS" are matched case-insensitively, as Google matches them. Also check that the tag uses name, not property, and isn't sent only as an HTTP header.
Does it see content that JavaScript adds to the page?
No. Our server downloads the HTML the site returns and parses it directly. Tags injected later by a JavaScript framework or tag manager aren't in that HTML, so they show as missing here.
Is the page I check stored or shared?
The URL is sent to our server, which makes the request and returns the report to your browser. The report isn't saved to an account, since there are no accounts.