Skip to content

On-Page SEO Checklist: 18 Checks to Run Before You Publish

On-Page SEO Checklist: 18 Checks to Run Before You Publish

An on-page SEO checklist is a short list of checks you run on one page before it goes live. It helps search engines and readers understand the page fast. It covers titles, descriptions, headings, URLs, content, images, links, speed and schema, and each check takes a minute or two.

This version is built from tests and every rule is traced to its source. In October 2026 I ran every check below on three live DevDiggers posts with curl and Chrome and measured the titles in pixels. I also matched each rule to Google Search Central or web.dev to show where it comes from.

You get 18 checks grouped by area, the real numbers from that test, and the mistakes it turned up. You also get a quick routine for running the list in WordPress with Rank Math, plus answers to the questions people ask most.

What Is an On-Page SEO Checklist?

An on-page SEO checklist is a repeatable list of the elements you control on a single page. It covers the words, the HTML tags, the images and the links that sit inside that page. You run it before publishing and again whenever a page drops in search results or gets a major edit.

On-page SEO is one of three parts of search work. Technical SEO covers the whole site, such as crawling, sitemaps and HTTPS. Off-page SEO covers signals from other sites, mostly links and mentions.

To see how the two sides differ and which one to fix first, read technical SEO vs content SEO.

A slow server is a technical problem, and a missing link from a trade site is an off-page problem. A vague title on one post is an on-page problem.

On-page is the part you can fix today, in the editor, without anyone else. That is why a checklist works so well here. The items rarely change, and missing one is usually a simple slip in the editor.

The list also works as an on-page optimization checklist for old content. Most sites have posts that rank on page five for a phrase they barely mention, and those are the cheapest wins you have.

Here is the whole list on one screen. The sections below explain each line, show the source and give the number I measured.

On-page SEO checklist at a glance with targets for title, meta, headings, URL, images, links, speed and schema

Note: Google’s SEO Starter Guide says it does not use the keywords meta tag. So that old checklist item is gone from this list, and you can leave the field empty.

Keyword and Search Intent Checks

Keyword and intent checks decide what the page is about before you touch a single tag. Pick one main phrase and confirm the page type matches what searchers want. Then place the phrase where it counts. Get this wrong and every later check polishes a page aimed at the wrong query.

1. Pick One Primary Keyword per Page

Every page needs one main phrase that sums up what it answers. Two pages on your site chasing the same phrase compete with each other, and both usually rank lower.

Search your own site for the phrase before you write. If an older post already targets it, update that post instead of starting a new one. Add two to four close variants as secondary keywords, and use each one once where it reads naturally.

Once the keyword is set, write a blog post outline that maps each heading to one question.

Rank Math focus keyword field set to on-page SEO checklist in the WordPress editor

2. Match the Search Intent

Search intent is what the person wants when they type the query. Some want a definition, some want steps, some want to compare options, and some want to buy.

Look at the first page of results for your keyword before you write. If every result is a numbered checklist, a long essay will struggle.

If every result is a product page, a blog post will struggle too. Match the format that already wins. Then do it better.

For this keyword, two of the three top pages I checked were checklists:

H1 titles of three top results for on-page SEO checklist fetched with curl

3. Place the Keyword in Key Spots

The primary keyword belongs in a few places that carry weight. Put it in the title tag, the H1, the first sentence and one H2.

Add it to the URL slug and one image alt text as well. Outside those spots, use natural variations.

Rank Math Basic SEO tests confirming the keyword in the title, meta description, URL and opening

Google’s starter guide warns that keyword stuffing is against its spam policies. Repeating the same phrase in every paragraph makes a page tiring to read, and readers leave. There is no density target worth chasing.

Title Tag, Meta Description and URL Checks

The title tag, meta description and URL are what a searcher sees before they click. Google uses the title for the blue link, often uses the meta description for the snippet and shows the URL above both. Each one needs to be unique, readable and short enough to show in full.

4. Write a Unique Title Tag

The title tag is the HTML title element, and Google mostly uses it for the clickable title link in results. Google’s title link guidelines ask for descriptive, concise text and warn against keyword stuffing and boilerplate.

Google title link best practices on descriptive and concise titles
Source: Google Search Central

Google sets no character limit, but it cuts long titles to fit the screen. So I measure titles in pixels instead of characters. My checker renders the text in Arial at 20 px and fails anything over 565 px, which leaves room on a desktop result. You can run the same pixel measurement on your own titles with a free title and meta description checker.

In the test, the three live titles measured 458 px, 541 px and 561 px. All three fit.

Rank Math snippet editor title field showing a 47 character title at 458 px of 580 px

The 561 px one was “How to Submit Your Website to Google News in 7 Steps (2026)” at 59 characters. A title that long is close to the edge. Put the keyword at the start where it never gets cut.

A good title tag for this check reads like this:

  • Keyword first: “On-Page SEO Checklist: 18 Checks” puts the phrase where a cut title still shows it.
  • One page, one title: Never reuse a title across two pages or even product variants.
  • No brand stuffing: One short brand name at the end is fine when space allows.

5. Write a Meta Description That Sells the Click

A meta description is a short summary in the page head that Google may show under the title. Google’s snippet guide says there is no length limit, but the snippet is cut to fit the device width.

Google guidance on unique meta descriptions for each page
Source: Google Search Central

The same guide asks for unique descriptions on each page. Repeated descriptions across a site help nobody when two of your pages show up in one result.

I keep descriptions under 900 px at Arial 14 px, with the keyword and the main point in the first 120 characters.

Rank Math snippet editor meta description field at 893 px of 920 px

The three live posts in my test had descriptions of 133, 135 and 139 characters. The old version of this very page had a 146 character description that measured 908 px. Its last words were at risk of being cut.

Google rewrites descriptions when it finds a better match in the page text. That is normal, and you cannot force your version. A clear, specific description still wins the snippet more often than a vague one.

6. Keep the URL Slug Short and Readable

The URL slug is the last part of the address, such as /on-page-seo-checklist/. Google’s URL structure guide recommends readable words and hyphens between them instead of underscores.

Google recommends hyphens to separate words in URLs
Source: Google Search Central

In WordPress, this starts with the permalink setting. If your addresses still look like ?p=123, follow our guide to setting up pretty permalinks in WordPress first.

Then trim each slug to the keyword. Drop stop words like “the” and “a” when the slug still reads well. Never put a year in a slug you plan to update. Changing a slug later breaks old links unless you add a 301 redirect. Decide once.

Rank Math permalink field with a short keyword slug for an on-page SEO checklist post

Content and Heading Checks

Content and heading checks look at what the reader sees once they land. The page needs one clear H1, headings that map the topic and answers that come early. Google’s helpful content guidance is the measure, and it favors pages written for people first.

7. Use Exactly One H1 With the Topic

The H1 is the main visible title on the page. In WordPress it comes from the post title field. You rarely add it by hand.

One H1 title and author byline on a live DevDiggers blog post

Every page in my test had exactly one H1. That is the theme doing its job, but page builders and copied blocks often add a second one. Check the page source or the outline view in the block editor before publishing.

The H1 and the title tag can differ. The title tag is written for the result page, and the H1 is written for the reader who already clicked. Keep the keyword in both.

8. Build a Logical H2 and H3 Outline

Headings split the page into sections a reader can scan. The H2s should cover the main questions, and the H3s should sit inside them.

Google’s SEO Starter Guide says heading order is great for screen readers but does not matter to Google Search. So the reason to keep order is the reader, plus anyone using assistive tech. On the posts I tested, the outlines ran from 7 to 12 H2s and 24 to 34 H3s.

WordPress block editor Outline tab showing the H2 and H3 heading order of a draft

A quick test works well here. Read only the headings from top to bottom.

If they tell the story of the page without the paragraphs, the outline is good. If two headings say the same thing, merge them.

9. Answer the Question Early

Readers decide in seconds whether a page has their answer. Put the direct answer in the first paragraph. Then explain.

DevDiggers post section that answers its H2 question in the first sentence

The same goes for every section. Open each H2 with two or three sentences that answer its heading on their own. A reader who jumps in from the table of contents should not need the paragraph above.

This check also catches padding. If the first paragraph under a heading only restates the heading, cut it and start with the answer.

10. Cover the Topic Fully and Show How You Know It

Depth means answering every question a reader has on the topic. Google’s SEO Starter Guide says content length alone does not matter for ranking. A word count is never the goal.

Look at the top results and list the subtopics they all cover. Then look for what none of them cover, and add that. Real test results, screenshots of real screens and worked numbers are the gaps competitors leave most often.

Google’s helpful content guidance asks whether content shows first-hand expertise. It also asks you to think about “Who, How, and Why” for every page. That is why each section in this checklist names its source and the test behind it.

DevDiggers post intro stating it was tested in October 2026 on WordPress 7.1.3

Image and link checks make sure every picture and every link helps the page instead of slowing it or confusing it. Images need clear file names, alt text and set dimensions. Links need descriptive anchor text, internal links to related pages and outbound links to the sources behind your claims.

11. Name Images and Write Alt Text

Google reads the page around an image, the file name and the alt text to understand it. Its image SEO guide gives my-new-black-kitten.jpg as a better name than IMG00023.JPG.

Google image SEO guidance on descriptive filenames and alt text
Source: Google Search Central

Rename files before you upload them, because WordPress keeps the original name in the URL. Our post on how to name images for SEO covers the pattern I use.

Alt text describes the image for people who cannot see it. Keep it short and specific.

WordPress Media Library Alternative Text field filled in for an uploaded image

Put the keyword in one alt text on the page and describe the rest plainly. If you need the steps, see adding alt tags to images in WordPress.

12. Set Image Size and Lazy Loading

Every image tag should carry width and height. Without them, the browser does not know how much space to reserve, and the text jumps when the image arrives.

In my test, every image on all three posts had width and height set, from 17 of 17 up to 21 of 21. Layout shift came out at 0 on each one. Lazy loading was on for 13 to 17 images per page, with the top images loading right away.

Image check of a live DevDiggers post with curl that shows image size and lazy loading on every image

WordPress adds width, height and lazy loading to images in post content by default. Problems usually come from images added by page builders or custom HTML. Compress large files too, which our WordPress image optimization guide covers step by step.

Internal links help readers find the next page and help Google find and understand your other pages. Google’s link guidance says anchor text tells people and Google what the linked page is about.

Google anchor text guidance with good and bad link examples
Source: Google Search Central

Use the name of the destination’s topic as the anchor. “Submit your website to Google” beats “click here” every time.

WordPress block editor link dialog suggesting an internal post for the anchor text

For example, once a page is finished, you still have to get it found. Our guide on how to submit your website to Google Search walks through Search Console. For news content, the steps to submit your website to Google News are different.

After launch, a monthly SEO report shows whether these checks moved traffic.

Link only to pages that are indexed. A link to a page marked noindex spends the reader’s click on a page that will never rank.

Pages that no other page links to count as orphans, and you can find and fix orphaned content in WordPress with Rank Math.

Outbound links show where a claim comes from. Link the official documentation, the original study or the vendor page, and skip other blogs that repeat them.

Three or more sources on a guide like this is a good floor. Every rule in this checklist links to the Google or web.dev page behind it, which lets you check my reading.

WordPress block editor link dialog adding a Google Search Central source link

Never link a competitor’s article on the same topic. It sends your reader away for the exact answer you wrote.

Page Experience Checks

Page experience checks measure how the page loads and behaves on a real phone. The three Core Web Vitals cover loading, response to input and layout stability. A page can pass every content check and still lose readers if it takes four seconds to show its main text on mobile.

15. Pass the Core Web Vitals

Core Web Vitals are three metrics Google defines for user experience. The web.dev Core Web Vitals page sets the good thresholds below.

Core Web Vitals good thresholds for LCP, INP and CLS on web.dev
Source: web.dev
  • Largest Contentful Paint (LCP): 2.5 seconds or less.
  • Interaction to Next Paint (INP): 200 milliseconds or less.
  • Cumulative Layout Shift (CLS): 0.1 or less.

The same page says to measure at the 75th percentile of page loads, on mobile and desktop. Field data from real visitors comes from Search Console or PageSpeed Insights.

For a quick lab check, I loaded each test post in Chrome with a Pixel 7 profile, 4x CPU slowdown and a 1.6 Mbps connection. LCP came out at 1.13 s, 1.15 s and 1.32 s, all under the 2.5 second line. HTML size ran from 112 KB to 126 KB, and the server answered in under 0.1 seconds from cache.

A Lighthouse 12.8 mobile run on the Submit to Google post, with its default throttling, showed 2.1 s LCP and 0 CLS:

Lighthouse mobile report with a 97 performance score, 2.1 s LCP and 0 CLS on a DevDiggers post

Lab numbers are a guide only. Real visitors on slower phones can see slower results. Check the field data once the page has traffic. For a store, our list of ways to speed up a WooCommerce website covers the usual fixes.

16. Check the Page on a Phone

Most searches happen on phones. Read the page on one before publishing. Check that text is readable without zooming and buttons are easy to tap.

Watch for wide tables and code blocks that force sideways scrolling. A table with five columns often fits on a laptop and breaks on a phone. Test the widest one on the page. Also check that pop-ups do not cover the content the reader came for.

DevDiggers post on an iPhone 13 viewport with readable text and a table that fits without sideways scrolling

Every page I tested had a viewport meta tag and a language attribute set to en-US. Both are small, but a missing viewport tag makes a page render like a desktop site shrunk onto a phone.

Schema and Trust Checks

Schema and trust checks tell search engines who wrote the page, what it is and when it changed. Structured data describes the page in a format machines read. Author names, dates and sources show readers and Google that a real person stands behind the content.

17. Add Valid Structured Data

Structured data is code in the page, usually JSON-LD, that labels what the content is. Google’s structured data introduction says Google uses it to understand the content of the page.

On WordPress, an SEO plugin such as Rank Math writes this for you. Each post in my test output BlogPosting, BreadcrumbList, Organization, Person and WebSite types, plus Question and Answer types for the FAQ block. Nobody wrote that code by hand.

Schema only describes what is already on the page. Google’s structured data guidelines ask that marked-up content be visible to readers. Never mark up a rating or a price the page does not show.

So the check is validation. Run the URL through the Rich Results Test and fix any errors. If you need a type your plugin skips, such as a local business, our guide to adding local business schema to WordPress shows one way.

The free Schema.org validator runs the same kind of check and lists every type it finds:

Schema.org validator showing BlogPosting with 0 errors and 0 warnings for a DevDiggers post
Source: Schema.org validator

18. Show the Author, the Date and the Sources

Trust signals answer the “Who” in Google’s helpful content guidance. A reader should see who wrote the page, when it was last updated and where its facts come from.

Google Who How and Why questions about content and bylines
Source: Google Search Central

A byline only helps when it leads somewhere real. Link each author name to a bio page that lists what that person works on, and keep it current when roles change.

Put a real author byline on every post, linked to a bio page. Show the published and updated dates. Never move the updated date without a real change, because a date that moves on its own is fake freshness.

DevDiggers post byline with author name, published date and updated date

How to Run an SEO On-Page Checklist in WordPress

Running the checklist in WordPress takes about ten minutes per page with Rank Math and a browser. Set the title, description and keyword in the Rank Math panel and check the outline and images in the editor. Then test the live URL. Save the results so the next audit starts from a baseline.

Here is the routine I follow on each page:

  1. Set the SEO fields: Open the post and its Rank Math panel and fill in the title, description and focus keyword.
  2. Check the outline: Open the List View in the block editor and read the headings top to bottom.
  3. Check every image: Click each image block and confirm the alt text. Then check the file name in the Media Library.
  4. Check every link: Hover each link and confirm the target is a live, indexed page.
  5. Test the live page: Run the URL through PageSpeed Insights and the Rich Results Test after publishing.
  6. Submit the URL: Request indexing for the page in Search Console once the checks pass.

For product pages, run the same list on the description too. Our guide on writing product descriptions using ChatGPT shows how to draft them quickly. This checklist is how you review the draft before it goes live.

Keep a simple record of each audit in a spreadsheet. Note the date, the URL, the checks that failed and what you changed. When rankings move a month later, you can match the change to the edit.

Rank Math also shows a score out of 100 in the editor. Treat it as a reminder list. It makes no ranking promise because it only counts what it can read in the post.

If you would rather hand the audit to someone else, our WordPress SEO services team runs these checks across a whole site. For store-wide issues, the WooCommerce SEO guide covers category and product pages in more depth.

What My On-Page SEO Test Found on Three Live Posts

My on-page SEO test checked three live DevDiggers guides with curl and Chrome on 9 October 2026. All three passed the title, meta, H1, image size and layout shift checks. The biggest lesson came from the older version of this checklist page, which failed two checks of its own list.

On-page SEO check results for three live DevDiggers posts

These are the numbers from that test:

CheckSubmit to GoogleGoogle NewsChatGPT descriptions
Title width458 px561 px541 px
Meta length139 characters135 characters133 characters
H1 tags111
Images with width and height19 of 1921 of 2117 of 17
Mobile LCP (lab)1.32 s1.15 s1.13 s
Layout shift000
Internal links on page919289

The internal link counts look high because they include the menu, footer and related posts. Only a handful sit inside the article body, which is the number that matters for this check.

The older version of this page was the real lesson. Its meta description measured 908 px, past my 900 px cap, and it used a filler word my checker blocks.

It also carried a noindex tag while it waited for this rewrite. That tag keeps a page out of search no matter how good the rest is.

The test also showed what a checklist cannot judge. A page can pass every mechanical check and still lose to a better answer. Content quality, competition and links decide the rest, which is why the content checks in this list matter as much as the tags.

Older posts need checks too, because content decay slowly drops clicks on pages that once ranked well.

The tag checks were the fast part. My script fetched each page and read its tags in under a second per URL. The slow work in an audit is reading the content.

Worth checking: Search your page source for noindex before you blame any other check. A single robots tag overrides every item on this list.

Common On-Page SEO Mistakes to Avoid

The most common on-page SEO mistakes are small and easy to miss in the editor. Titles run too long, descriptions repeat across pages, images ship without alt text and a stray noindex tag hides a page. Each one takes a minute to fix once you know to look for it.

These are the ones I see most often in audits:

  • A forgotten noindex: A page set to noindex during drafting never gets switched back.
  • Duplicate titles: Product variants and paginated archives share one title tag.
  • Keyword stuffing: The same phrase appears in every heading and alt text.
  • Generic anchors: Links say “click here” or “read more” instead of the topic.
  • Unsized images: Images from page builders arrive without width and height, and the layout jumps.
  • Stale dates: The updated date moves while the content stays the same.

A forgotten noindex is the costliest of the six because nothing else on the list matters while it is there. In WordPress it hides in two places: the Search engine visibility box under Settings > Reading and the robots setting in your SEO plugin.

Duplicate titles are the most common on stores. A shop with 40 variations of one product can end up with 40 pages that share one title. A searcher then sees the same blue link twice and cannot tell the pages apart.

Keyword stuffing usually comes from good intentions. A writer hears that the keyword must appear in headings. So it goes into every heading. Read the headings aloud. If they sound like a robot, rewrite them.

Stale dates are the quiet one. A plugin that bumps the modified date on every save makes a page look fresh while nothing changed. Readers notice when the screenshots are two years old.

The fix for most of them is the same habit. Run the checklist on every page before it goes live and again when traffic drops.

Conclusion

An on-page SEO checklist works because it turns a fuzzy goal into 18 checks you can tick in one sitting. Start with the keyword and intent. Next come the title, description and URL. Finish with the content, images, links, speed and schema.

My test showed that a solid theme and Rank Math handle much of the list for you. The checks that still fail are the human ones: a description that runs long, a noindex left on, a heading that says nothing. Run the list before every publish and you catch those before Google does.

Frequently Asked Questions (FAQs)

Q1. How many items should an on-page SEO checklist have?

There is no fixed number. This list has 18 checks because each one covers a separate element on the page. Fewer items usually means some elements, such as image size or schema, get skipped.

Q2. Is an SEO on-page checklist the same as a technical SEO audit?

No, they cover different layers. An SEO on-page checklist reviews one page at a time, while a technical audit covers site-wide items such as crawling, sitemaps and redirects. Most sites need both.

Q3. How often should I run an on-page optimization checklist?

Run it before you publish any page, and again when a page loses traffic or gets a major edit. A quarterly pass on your top 20 pages catches most problems early.

Q4. Does keyword density still matter for on-page SEO?

No. Google’s SEO Starter Guide warns that keyword stuffing is against its spam policies and it names no density target. Place the keyword in the title, H1, first sentence and one heading. Then write naturally.

Q5. What tools do I need for an SEO on-page optimization checklist?

A free set covers it. Rank Math or a similar plugin handles titles, descriptions and schema, and PageSpeed Insights covers speed. The Rich Results Test checks structured data, and Search Console shows how the page performs.

Q6. Can on-page SEO alone get a page to rank?

Sometimes for low competition queries, but rarely for competitive ones. On-page work makes a page clear and useful, while links from other sites and a healthy technical setup do the rest.

Q7. Why does Google show a different title or description than mine?

Google rewrites titles and snippets when it thinks other text on the page fits the query better. Clear, accurate titles and descriptions get rewritten less often, but no setting forces Google to use yours.

Yash Kapoor
Yash Kapoor

Yash Kapoor is the founder and WordPress expert at DevDiggers, where he builds WordPress and WooCommerce plugins for loyalty programs, point-of-sale systems, digital wallets and affiliate management. He writes about developer tools, site performance and the technical side of running a WordPress store. He draws on years of building and maintaining production plugin codebases.

Leave a Reply

Your email address will not be published. Required fields are marked *