About the SEO Content Checker
Paste a title, meta description and your HTML, and the SEO content checker scores the on-page basics: title and description length, focus keyword use, word count, headings, links, image alt text and sentence length. Each problem comes with a short fix, so you can clean up a draft before it goes live.
It's a pre-publish check, not a full audit: backlinks, page speed, structured data and rankings are out of scope. Manual Input runs in your browser and sends nothing. Analyze URL sends the address to the toolo server, which fetches the public page once and returns only the scores, without saving the URL or the page.
- On Manual Input, fill in Page Title, Meta Description, Focus Keyword and Content (HTML). Load Sample fills all four with a short example article.
- Paste the content as HTML, from your CMS's code view or the page source. Plain text still gets word count, keyword density and readability, but loses 90 points across the Headings, Links and Images checks.
- Click Analyze SEO. The first card shows the Overall SEO Score, rated Good, Average or Poor, with Word Count, Readability and Top Keywords under it.
- Work through the Title, Meta Description, Headings, Links, Images and Content Analysis cards, fix your draft, and click Analyze SEO again.
- To check a page that's already online, open Analyze URL, type the full address, such as
https://example.com/blog/post, and click Analyze URL.
InputPage Title: 10 Essential SEO Tips for Bloggers in 2024
Meta Description: Learn the top 10 SEO strategies that will help boost your blog's visibility in 2024. Practical tips for beginners and advanced bloggers alike.
Focus Keyword: seo tips
Content (HTML): a 118-word article with 1 H1, 3 H2, 1 H3, 1 image with alt text, 1 internal and 1 external linkOutputOverall SEO Score: 93%
Word Count: 118
Readability: Easy to read (Score: 100%)
Top Keywords: tips 2.5%, optimization 2.5%, focus 2.5%
Title: 100%, 42 characters
Meta Description: 90%, 142 characters
Description doesn't contain the target keyword
Headings: 100% (H1: 1 | H2: 3 | H3: 1)
Links: 100% (Internal: 1 | External: 1)
Images: 100% (Total: 1 | With Alt: 1)
Content Suggestions:
Content is too short (118 words). Aim for at least 300 wordsThe description lacks "seo tips", so it loses 10 points. The content score (70) has no card but counts: (100 + 90 + 70 + 100 + 100 + 100) ÷ 6 = 93.
InputPage Title: Kubernetes CronJob Guide
Meta Description: How Kubernetes CronJobs work: schedule syntax, time zones, missed runs and concurrency policy, with a YAML example you can copy and adapt.
Focus Keyword: kubernetes cronjob
Content (HTML):
Kubernetes CronJobs run a container on a schedule. You write the schedule in cron syntax in the spec. The controller creates a Job at each run time. If a run is missed, the controller can start it late, within startingDeadlineSeconds. Set concurrencyPolicy to Forbid if two runs must never overlap.OutputOverall SEO Score: 77%
Word Count: 50
Title: 80%, 24 characters
Title is too short (24 chars). Aim for 30-60 characters
Meta Description: 100%, 138 characters
Headings: 60% (H1: 0 | H2: 0 | H3: 0)
Links: 70% (Internal: 0 | External: 0)
Images: 80% (Total: 0 | With Alt: 0)
Content Suggestions:
Content is too short (50 words). Aim for at least 300 wordsWithout tags, Headings, Links and Images can't pass. The keyword appears only as "Kubernetes CronJobs", but matches inside longer words count, so density is 1 in 50, or 2%.
InputPage Title: Jollof Rice Recipe
Meta Description: How to cook West African jollof rice in one pot.
Focus Keyword: jollof rice
Content (HTML):
<h1>Jollof Rice</h1>
<p>Jollof rice is a one-pot rice dish cooked in a tomato and pepper base that is popular across West Africa, and every family in Lagos, Accra and Dakar seems to have its own version that they will tell you is the only correct one.</p>
<h1>Ingredients</h1>
<p>You need long grain rice, tomatoes, red bell peppers, scotch bonnet, onions, stock and a little oil. Jollof rice tastes better with a smoky bottom.</p>
<img src="/jollof.jpg">
<a href="/recipes/stock"><img src="/icons/arrow.svg" alt=""></a>
<a href="https://example.org/history-of-jollof">History of jollof</a>OutputOverall SEO Score: 74%
Word Count: 75
Top Keywords: jollof 5.3%, rice 5.3%, that 2.7%
Title: 80%, 18 characters
Title is too short (18 chars). Aim for 30-60 characters
Meta Description: 80%, 48 characters
Description is too short (48 chars). Aim for 120-155 characters
Headings: 70% (H1: 2 | H2: 0 | H3: 0)
Multiple H1 headings found. Use only one main heading.
No H2 headings found. Use them to structure your content.
Links: 90% (Internal: 1 | External: 1)
Some links have no anchor text. Add descriptive text to all links.
Images: 85% (Total: 2 | With Alt: 1)
1 image(s) missing alt text. Add descriptive alt text for accessibility and SEO.
Content Suggestions:
Content is too short (75 words). Aim for at least 300 words
Target keyword density is too high (keyword stuffing)"jollof rice" appears 3 times in 75 words, 4%, so it's flagged as stuffing. Judge density on full-length text only. The icon link has no text, and alt="" counts as present.
How the score is calculated
Six checks start at 100% and lose points per problem: Title, Meta Description, Content, Headings, Links and Images. The Overall SEO Score is their rounded average: 80% or more is good, 60% to 79% average, below 60% poor.
- Title: 30 to 60 characters, or minus 20. Minus 10 if it doesn't contain the Focus Keyword. An empty title scores 0.
- Meta Description: 120 to 155 characters, with the same deductions.
- Content: under 300 words costs 30. Keyword density below 0.5% costs 20, above 2.5% costs 30.
- Headings: no H1 costs 30, more than one H1 costs 20, no H2 costs 10. H2s without an H3 get a tip but keep their points.
- Links: no internal link costs 20, no external link 10, and any link without text 10. Internal means a relative link such as
/pricingorpage.html. Links that start withhttp://,https://or//count as external, even a full link to your own site. - Images: no image costs 20, and each image without an
altattribute costs 15. An emptyalt="", the right choice for decorative images, counts as present.
Keyword density and readability
Keyword density is how often the Focus Keyword appears (in any letter case, also inside longer words) divided by the word count. Google publishes no ideal density and lists keyword stuffing in its spam policies, so treat the 0.5% to 2.5% range as a hint. Use the keyword in the title, the first paragraph and one heading where it reads naturally.
Top Keywords lists words longer than three letters that make up more than 0.5% of the text, common words like that included. Punctuation stays attached, so content. and content count separately.
Readability is the average number of words per sentence: over 20 is Moderately difficult, over 25 Difficult to read. It doesn't affect the overall score, but short sentences help phone readers and people reading in a second language. The Word Counter shows sentence count and reading time.
Getting accurate counts from your HTML
The checker reads HTML with simple patterns, not a browser. Headings count in any letter case and across line breaks, and every tag is read as a space, so words in neighboring elements stay separate. The one thing it can't know is your domain: a full https:// link to your own site counts as external. Paste links in the relative form (/pricing) if you want them counted as internal.
What Analyze URL reads, and its limits
The server reads the page's <title> and meta description (or og:description). For the content, it takes the first article, main, .content, .post or #content element, or else the body, without scripts, styles and comments. Its user agent contains tooloSeoChecker/1.0.
- There's no Focus Keyword field. The checker takes the first entry of the
keywordsmeta tag, or else the wholeog:title, which rarely appears word for word in the text. Use Manual Input for a specific keyword. - Headings, links and images outside the main content area aren't counted.
- JavaScript isn't run. A page that builds its content in the browser can look almost empty.
- Only public
httpandhttpsaddresses on the default ports work; private addresses and URLs with a password are refused. The page must be HTML, at most 2 MB, and answer within 8 seconds, after at most 3 redirects. - Sites behind bot protection may return a challenge page instead of the article; paste the HTML into Manual Input then.
What the checker can't tell you
A page can score 100% and still not rank, because the score can't judge whether it answers the search better than the pages already ranking. Before you publish, search your main query, see what the top results cover, and make sure your page covers that and adds something of its own. To write the title and social tags, use the Meta Tag Generator.
What is a good SEO score?
Here, 80% or more counts as good. It's a checklist, not a number Google uses, so a 93% page can rank below a 70% page that answers the query better.
What is the ideal keyword density?
There isn't one. Google doesn't publish a target and treats unnatural repetition as spam. The checker's 0.5% and 2.5% limits are a hint, and an unreliable one on short texts.
How long should a meta description be?
The checker looks for 120 to 155 characters. Google has no fixed limit; it cuts snippets to the screen width and often shows other page text instead.
Why does Analyze URL say there's no H1 when my page has one?
It counts only headings inside the main content area (article, main and similar). An H1 in a header outside that element, or one added by JavaScript, isn't found. Paste the page HTML into Manual Input instead.
Does it check backlinks, page speed or rankings?
No. It checks the text and HTML of one page. For links from other sites, Core Web Vitals, indexing and search positions, use Google Search Console.
Is my unpublished draft sent anywhere?
Not with Manual Input: it runs in your browser, so a draft under embargo stays on your machine. Only Analyze URL contacts the toolo server, and it can only reach public pages.