Free tool
SEO checker: test your page on 15 points
Enter a URL and see, point by point, whether Google is allowed to crawl and index the page, whether the title and description fit, and how fast it loads on a phone. Each of the 15 points shows the measured value, a status and a short explanation.
- No sign-up
- No email address
- Result right in your browser
Example: garden furniture category
A count, not a grade- Indexabilityindexable, no noindexOk
- Title“Order Garden Furniture in Wood, Metal and Rattan Online | Example.com…” · 82 characters, likely truncatedNeeds work
- Meta descriptionno meta description setError
- LCP3.1 s (field data)Needs work
How the SEO checker works
Enter a URL
The checker looks at exactly one page, for example your most important service page or a category in your shop. The address has to be publicly reachable; the checker can’t fetch pages behind a login or a firewall.
Run the 15 checks
My server fetches the page, follows up to 5 redirects and reads the HTML exactly as it is delivered, plus the HTTP headers and the robots.txt file. It doesn’t run JavaScript. Loading speed is measured by Google’s PageSpeed Insights API for the mobile view.
Read the status
Each point shows the measured value and one of four statuses.
- OkNothing to do on this point.
- Needs workThe page works but leaves something on the table here. Read the value before you act. Some yellow results are intentional, such as a canonical that deliberately points to another URL.
- ErrorSomething is missing, invalid, contradictory or blocks the page, for example a noindex. For loading speed, Error means the value falls in the range Google rates as poor. An error does not mean Google is penalizing the page.
- No dataThe value could not be measured. This happens with loading speed, and with every point that needs the HTML when the page doesn’t answer with 200 or doesn’t return HTML. It counts neither as Ok nor as an error.
All 15 checks and their thresholds
| Check | Ok | Needs work | Error |
|---|---|---|---|
| Status code and redirects | 200, at most 1 permanent redirect | more than 1 redirect, or a temporary one | no 200, or more than 5 redirects |
| HTTPS | encrypted, no file loaded over http | encrypted, but files loaded over http | page runs without HTTPS |
| Indexability | no noindex | – | noindex in the meta tag or the X-Robots-Tag header |
| robots.txt | crawling allowed, or no robots.txt (4xx other than 429) | robots.txt unreachable (5xx, 429 or no response) | crawling blocked for Googlebot |
| Canonical | points to itself | missing, or points to another URL | several different canonicals |
| hreflang | no hreflang links in the HTML, or with self-reference | language versions without self-reference | invalid language code |
| Title | 20 to 60 characters, exactly one | over 60, under 20, or several | missing or empty |
| Meta description | 70 to 160 characters, exactly one | over 160, under 70, or several | missing |
| Headings | at least one H1, no skipped level | no H1, or a skipped level | – |
| Alt attributes | every image has an alt attribute | images without an alt attribute | – |
| Structured data | readable JSON-LD, or Microdata present | none found | JSON-LD not readable |
| Mobile display | viewport with width=device-width | viewport without width=device-width | no viewport |
| LCP | up to 2.5 s | over 2.5 to 4 s | over 4 s |
| INP | up to 200 ms | over 200 to 500 ms | over 500 ms |
| CLS | up to 0.1 | over 0.1 to 0.25 | over 0.25 |
The character counts for title and meta description are the checker’s rules of thumb. The thresholds for LCP, INP and CLS are Google’s, as set out in the PageSpeed Insights documentation. The checker reads at most 2 MB of HTML and waits at most 12 seconds per request for your server to respond.
Don’t want to tackle these points yourself? I can fix the technical issues for you.
Indexing and technical setup
- Status code and redirectsDoes the page answer with 200, and how many redirects come before it?Pending
What does this mean?
Ok means a 200 response with no redirect, or after exactly one permanent redirect (301 or 308). More than one redirect, or a temporary one (302, 303, 307), is rated “Needs work.” According to Google’s documentation on redirects, only a permanent redirect signals that the target is the URL that counts. If a sixth redirect follows the first 5, the checker stops and reports an error. In your internal links, point straight to the final address.
- HTTPSIs the page encrypted, and does it still load files over http?Pending
What does this mean?
Without HTTPS you get “Error.” “Needs work” means the page itself is encrypted, but images, scripts, stylesheets, videos or iframes are still loaded with http:// in the source code. The checker tells you how many. Change those addresses to https:// in the source.
- IndexabilityDoes a noindex in the meta tag or the HTTP header block the page?Pending
What does this mean?
If the checker finds “noindex” or “none” in the robots or googlebot meta tag or in the X-Robots-Tag header, you get “Error,” and it tells you where it found it. That’s only correct if the page really shouldn’t appear in search. Google only sees a noindex if robots.txt allows the page to be crawled. More on this under indexing and crawling.
- robots.txtDoes robots.txt allow Googlebot to crawl the page?Pending
What does this mean?
The checker applies the rules the way Google interprets robots.txt: the longest matching rule wins, and in a tie the allowing one does. If the page is blocked, it shows the rule that applies. If the file is missing (a 4xx response other than 429), crawling is allowed and the point is Ok. If the server answers with 5xx or not at all, you get “Needs work,” because Google then stops crawling the whole site for the first 12 hours. A 429 (“too many requests”) is also rated “Needs work,” because Google doesn’t treat it as a missing file. A block in robots.txt prevents crawling. It does not remove a page from the index.
- CanonicalDoes the canonical point to the page itself or to another URL?Pending
What does this mean?
Ok is a canonical that points to the page itself, meaning the final URL after any redirects. Google recommends the self-reference. The checker reads the link in the HTML and the HTTP header. “Needs work” appears when the canonical is missing or points to another URL. In the second case you’re asking Google to show the other address, so check whether that’s intentional. Two different canonicals are an error because they contradict each other.
- hreflangAre language versions marked up, and does the page list itself?Pending
What does this mean?
If the checker finds no hreflang links in the HTML, the point is Ok. It doesn’t see annotations in the HTTP header or the XML sitemap. If there are hreflang links in the HTML, it checks the spelling of the language codes and whether the page lists itself. Each language version has to list itself and all the others. The checker can’t see whether the other versions link back, because it fetches only one URL. If the return link is missing, Google ignores the annotations.
Content and search snippet
- TitleIs there exactly one title, and how long is it?Pending
What does this mean?
A missing or empty title is an error. “Needs work” appears with more than one title tag, with more than 60 characters and with fewer than 20. Both numbers are the checker’s rules of thumb. Google states no length limit and truncates the title in the search result to fit the width of the device. At 63 characters you don’t need to change anything, as long as the important part comes first.
- Meta descriptionIs a description set, and how long is it?Pending
What does this mean?
If the description is missing, you get “Error.” That is a strict rating, because Google builds the snippet mainly from the page content and sometimes uses the meta description when it describes the page better. Without one, you give up that option. “Needs work” appears with more than one description, with more than 160 characters and with fewer than 70. These are rules of thumb too. Google has no fixed limit.
- HeadingsDoes the page have an H1, and does the heading order skip a level?Pending
What does this mean?
Without an H1 you get “Needs work.” Several H1s are rated Ok. If an H2 is followed directly by an H4, you also get “Needs work,” and the checker names the first jump. The reason is accessibility: assistive tools such as screen readers use headings to navigate within the page, and the W3C advises against skipped levels. To Google, the order makes no difference. This point turns yellow at most, never red.
Images, markup and mobile
- Alt attributesHow many images have no alt attribute?Pending
What does this mean?
Only images with no alt attribute at all are counted. An empty
alt=""is not a defect, because an empty alt is correct for decorative images: screen readers then skip them. The checker can’t judge whether an existing alt text describes the image well. This point turns yellow at most, never red. - Structured dataIs there structured data as JSON-LD or Microdata, and which types are marked up?Pending
What does this mean?
Ok means the checker found readable JSON-LD or Microdata. For JSON-LD it lists the types, such as Product or Organization. For Microdata it only reports that it is there. A JSON-LD block the checker can’t read as valid JSON is rated an error. Google accepts JSON-LD, Microdata and RDFa; the checker doesn’t detect RDFa. Google’s Rich Results Test shows whether required properties are missing and whether a rich result is possible. My page on structured data covers which types are worth the effort.
- Mobile displayIs a viewport set with width=device-width?Pending
What does this mean?
Without a viewport declaration, a phone shows the page at desktop width, scaled down. The checker rates that as an error. “Needs work” appears when the declaration is there but
width=device-widthis missing. The checker doesn’t test whether text and buttons are actually easy to use on a phone.
Loading speed (Core Web Vitals, mobile)
- LCPHow long does it take for the largest visible element to appear?Pending
What does this mean?
A value up to 2.5 seconds is good. Above 4 seconds you get “Error.” The largest element is, for example, the main image or a block of text visible without scrolling. The source follows the value in parentheses: field data, origin field data or lab measurement.
- INPHow quickly does the page respond to clicks, taps and typing?Pending
What does this mean?
A value up to 200 milliseconds is good. Above 500 milliseconds you get “Error.” INP needs interactions; simply loading a page doesn’t measure it. That’s why the checker reads INP from field data only. If there is no INP value there, you get “No data.”
- CLSHow much does the layout shift unexpectedly while the page is open?Pending
What does this mean?
A value up to 0.1 is good. Above 0.25 you get “Error.” CLS rises when images without fixed dimensions, late-loading banners or fonts push the content someone is reading or about to tap out of place.
Loading speed comes from Google’s PageSpeed Insights API, measured for the mobile view. The checker first takes field data from real Chrome users over the last 28 days for this exact URL. If Google doesn’t have enough of it, the checker takes the field data for the whole website and labels it “origin field data.” If that is missing too, it shows a lab measurement for LCP and CLS, meaning a single simulated page load, labeled “lab measurement,” and INP shows “No data.” Field data and lab measurements often differ, which is why the source follows every value. The thresholds come from Google’s Core Web Vitals documentation and apply to the 75th percentile: three out of four page loads have to reach the value. If your values are red, page speed optimization helps.
What the checker doesn’t test
Green results mean that on these 15 points the page isn’t getting in Google’s way. The checker only sees the HTML your server delivers. If your page sets the title, headings or structured data with JavaScript, the checker won’t find them even though Google can see them, because Google renders JavaScript in a separate step. Whether the page ranks also depends on six things that no form with a single URL field can capture.
Search intent
Whether your page delivers what people expect when they search only becomes clear when you look at the search results for your keyword. The checker doesn’t know your keyword and shows no rankings.
Cannibalization
Whether two of your pages compete for the same query only becomes clear when you compare all pages and look at the Search Console data.
Content quality
The checker counts characters and reads tags. Whether a text reflects real experience and offers evidence and substance of its own is something no parser can measure.
The whole website
Internal linking errors, orphan pages and duplicate content only show up in a crawl of all URLs. A flawless homepage says nothing about 400 product pages.
Backlinks
Which websites link to your page, and whether those links help, isn’t in your page’s source code. That takes link data and judgment.
Priorities
The checker doesn’t weight anything. A noindex on your most important page and a missing alt attribute count the same in the total. What comes first depends on your goal, your budget and your system.
When the free check is enough and when you need an audit
The check is enough when you want to verify a single page, for instance after a template change or before a campaign starts. An audit pays off when rankings are dropping, a relaunch is coming up or you want to know what is holding the website back as a whole. In between sits the self-check with Search Console and Screaming Frog, if you want to put in the time yourself.
Free SEO checker
€0
For a quick look at one page
- One URL per check
- 15 checks with measured value and status
- Loading speed for the mobile view
- No review of search intent or text quality
- No action list, no prioritization
SEO audit
from €600
When you need more than a single page reviewed
- The whole website instead of a single URL
- Reviewed by me personally
- Prioritized action list
For what drives the price, see what an SEO audit costs.
Frequently asked questions about the SEO checker
Is the SEO checker really free?
Yes. You don’t need an account and you don’t enter an email address; the result appears in your browser. I built it myself: I’m Viktor Pásztor, an SEO freelancer. It costs nothing because it only tests what can be tested automatically. I make my living from what comes after: interpreting the findings and fixing them.
Are there free SEO analysis tools?
Yes, and the most important ones come from Google itself. Google Search Console shows which queries your pages appear for and which pages aren’t indexed. PageSpeed Insights measures loading speed, and the Rich Results Test checks structured data. This checker brings together 15 points for a single page. My own selection for daily work is under the tools I use every day.
What is a good SEO score?
This checker doesn’t give a score. “10 of 15 Ok” is an unweighted count: a noindex weighs as much in it as a title that is too long, even though one takes the page out of search and the other changes almost nothing. Other tools count and weight by their own rules, so two scores can’t simply be compared. Read the individual results. An SEO audit settles which points take priority on your website.
What happens to the URL I enter?
My server fetches the page and the robots.txt file. The site owner can see these requests in the server log under the name “VP-SEO-Check.” For loading speed, the URL goes from my server to Google’s PageSpeed Insights API. Your IP address is not passed along. Google then loads the page itself for the measurement. The HTML result stays in the cache for 15 minutes and the loading speed for 6 hours, then both expire. I keep your IP address only as a salted hash for one hour, to count the hourly limit. The bot check is a computing task your browser solves invisibly, with no cookies and no third parties. The details are in my privacy policy (in German).
Why doesn’t the checker show an INP value for my page?
Because Google has too little field data. INP needs interactions: it measures how quickly the page responds to clicks and input from real Chrome users. A lab test only loads the page and clicks nothing. That’s why pages with few visitors show “No data.” It isn’t a bad rating, and it’s left out of the count.
Why is the result still the old one after my change?
Because the checker caches results per URL: the HTML result for 15 minutes and the loading speed for 6 hours. If you have just changed a title, clear your website’s cache and check again after 15 minutes. With loading speed there is more to it: field data describes the last 28 days, and Google evaluates the 75th percentile there. So an improvement shows up only gradually over the following weeks.
How often can I run a check?
Ten checks per hour. Every check with a valid URL counts, including a repeat of the same URL served from the cache. On top of that there is a daily cap for all visitors combined, which protects the server and the measurement quota. Once it is reached, pages that aren’t already in the cache can be checked again after midnight UTC.
Red results and no time to fix them yourself?
In an intro call I go through your result with you. I tell you which points come first and which ones you can leave alone.
Go through my result in an intro call