On-Page SEO Checklist: The Complete Guide for 2026

On-page SEO isn’t glamorous. Nobody brags about it at conferences. But after optimizing 850+ client websites over 18 years, I can tell you this: on-page SEO is the single biggest lever most site owners ignore. They chase backlinks. They obsess over domain authority. They spend thousands on content. Then they wonder why page 3 is the best they can manage.

The answer is almost always on the page itself. A missing H1 tag. A bloated URL. Images without alt text. Title tags that read like they were written by a robot. I’ve seen a single title tag change push a page from position 14 to position 5. Not in theory. On a real client site, within 3 weeks.

This checklist is everything I check on every page I optimize. It’s the same process I use on gauravtiwari.org (1,800+ articles and counting) and on every client project that comes through my door. I’ll give you the what, the why, and the exact WordPress setup for each item.

Title Tag Optimization

Your title tag is the first thing Google reads and the first thing searchers see. It carries more weight than any other single on-page element. Get this wrong, and nothing else matters. Get it right, and you’re already ahead of 60% of your competition.

I’ve rewritten thousands of title tags across client sites. The patterns are clear. Here’s what actually works in 2026.

Keep It Under 60 Characters

Google truncates title tags around 580-600 pixels wide. That’s roughly 55-60 characters for most fonts. Go longer, and your title gets cut off with an ugly ellipsis. I aim for 50-55 characters as my sweet spot. Short enough to display fully, long enough to include what matters.

Check your existing titles in Google Search Console. Go to Performance, sort by impressions, and look at your top 20 pages. If any title is getting truncated in the SERPs, fix it today. This takes 5 minutes and can improve CTR by 10-15%.

Put Your Primary Keyword First

Front-load your target keyword. “On-Page SEO Checklist: 47 Factors to Optimize” beats “The Complete Guide to Optimizing Your On-Page SEO Checklist” every time. Google gives slightly more weight to words that appear early in the title. But more importantly, searchers scan from left to right. Your keyword needs to be the first thing they see.

I tested this on a client’s e-commerce site last year. We moved the primary keyword from the end of 23 product page titles to the beginning. Average position improved by 2.3 spots across those pages within 6 weeks. No other changes. Same content, same links, same everything else.

Write for Clicks, Not Just Rankings

A title that ranks but doesn’t get clicked is useless. Add a number, a year, or a power word to boost CTR. “On-Page SEO Checklist (47 Points) for 2026” tells the searcher exactly what they’re getting. It’s specific. It’s current. It promises a clear deliverable.

In Rank Math, you can set your title tag independently from your H1. I do this on every single post. My H1 might be “The Ultimate On-Page SEO Checklist” while my title tag is “On-Page SEO Checklist: 47 Factors (2026 Edition).” Different jobs require different titles. Your H1 is for readers already on the page. Your title tag is for people deciding whether to click.

Meta Description Optimization

Meta descriptions don’t directly affect rankings. Google has said this many times. But they massively affect click-through rates, and CTR absolutely affects rankings over time. A compelling meta description is free advertising in the search results.

Here’s what I’ve learned from writing (and rewriting) thousands of meta descriptions across 850+ client sites.

Write 140-155 Characters

Google displays roughly 155 characters on desktop and about 120 on mobile. I target 140-155 characters as the ideal range. This gives you enough room to make a compelling pitch without getting truncated on either device.

Don’t leave your meta description blank. I still see this on 30-40% of client sites during audits. When you leave it empty, Google pulls a random snippet from your content. Sometimes it picks something decent. Most of the time, it picks garbage. You lose control of your message entirely.

Include Your Target Keyword Naturally

When your target keyword appears in the meta description, Google bolds it in the search results. This visual emphasis catches the eye and signals relevance to the searcher. But don’t stuff it. Write a natural sentence that includes the keyword once. That’s enough.

Here’s a meta description I’d write for this very article: “Complete on-page SEO checklist with 47 optimization points. WordPress-specific steps, plugin recommendations, and real examples from 850+ client sites.” That’s 152 characters. Keyword appears once. It tells you exactly what you’ll get.

Accept That Google Rewrites Descriptions

Google rewrites meta descriptions about 63% of the time, according to Ahrefs data. This frustrates people. It frustrated me too, until I realized something: Google rewrites descriptions when they don’t match the search query well enough. If someone searches “on-page SEO for WordPress” and your description doesn’t mention WordPress, Google will pull a snippet that does.

You can’t prevent this entirely. But you can reduce rewrites by making your description closely match the primary search intent. Answer the implicit question behind the keyword. If someone searches “on-page SEO checklist,” they want to know what’s on the checklist and how many items it covers. Give them that.

Header Tag Hierarchy

Header tags are your content’s skeleton. They tell Google (and readers) how your page is organized. Mess up the hierarchy, and both get confused. I audit header structures on every site I touch, and the mistakes I see are shockingly common.

One H1 Tag Per Page. Period.

Every page needs exactly one H1 tag. Not zero. Not two. One. Your H1 should include your primary keyword and clearly state what the page is about. In WordPress, your post title automatically becomes the H1 in most themes. Check yours. Some themes wrap titles in H2 or even a div, which means you have no H1 at all.

I check this with a free Chrome extension called HeadingsMap. It takes 2 seconds. Open the extension, look at the hierarchy tree. If you see two H1s or no H1, fix it immediately. On one client site, the theme was outputting the site name as an H1 on every page. That meant every page had two H1s. We fixed this with a single line of CSS/PHP, and organic traffic increased 18% over 8 weeks.

Use H2-H6 Tags in Logical Order

Your H2s are main sections. H3s are subsections within an H2. H4s go inside H3s. Never skip levels. Don’t jump from H2 to H4. Don’t use headers for styling, that’s what CSS is for. I see bloggers slapping H3 tags on everything because they like how it looks. This confuses Google’s understanding of your content structure.

A solid header hierarchy for a blog post looks like this: H1 at the top, 4-8 H2 sections breaking up the main topics, and H3s within each H2 where you need to cover subtopics. Think of it like an outline. If your headers wouldn’t make sense as a table of contents, they need work.

Include Keywords in Headers (But Don’t Force It)

Put your primary keyword in the H1 and at least one H2. Put related keywords in other H2s and H3s. But read every header aloud. If it sounds unnatural, rewrite it. “On-Page SEO Checklist Factors Optimization Tips” is not a header. It’s keyword soup. “How to Optimize Your Title Tags” is a header. It’s clear, it includes a relevant keyword, and a human would actually say those words.

URL Structure and Permalinks

Your URL is a permanent address. Once it’s live and indexed, changing it creates redirect chains and potential traffic loss. Get it right the first time. I’ve cleaned up hundreds of messy URL structures, and it’s always harder than doing it correctly from the start.

Use Short, Keyword-Rich URLs

Keep URLs under 60 characters when possible. Include your primary keyword. Remove stop words like “the,” “a,” “and,” “in.” A good URL for this article would be /on-page-seo-checklist/. A bad URL would be /the-ultimate-guide-to-on-page-seo-checklist-for-beginners-2026-edition/.

Backlinko analyzed 11.8 million Google search results and found that shorter URLs tend to rank higher. My own testing confirms this. On a client’s blog with 200+ posts, we shortened 45 URLs (with proper 301 redirects) and saw an average position improvement of 1.8 spots over 3 months.

Set WordPress Permalinks Correctly

Go to Settings > Permalinks in WordPress and choose “Post name.” This gives you clean URLs like yoursite.com/your-post-title/ instead of yoursite.com/?p=123. If you’re running a new site, do this before you publish anything. If you’re on an existing site and your permalinks are already set to something ugly, be very careful. Changing permalinks on a live site breaks every existing URL unless you set up redirects.

I use Rank Math’s redirect manager for this. When you change a URL slug, Rank Math automatically asks if you want to create a 301 redirect from the old URL to the new one. Always say yes. Broken links from URL changes are one of the most common SEO mistakes I fix during audits.

Avoid Dates in URLs

Some WordPress permalink structures include the year and month: yoursite.com/2026/01/post-title/. Don’t use this. When your content ages and you update it, that 2026 in the URL makes it look outdated even if the content is fresh. Post name only. Clean, simple, evergreen.

Content Optimization

Content is where most people either overthink or underthink. They either stuff keywords like it’s 2010 or write 5,000 words of fluff that says nothing. Good content optimization sits in the middle: natural, thorough, and structured for both humans and search engines.

Forget Keyword Density. Think Topical Coverage.

Keyword density is dead. Stop counting how many times your target keyword appears per 100 words. Google’s algorithms have moved far beyond simple keyword matching. They understand topics, entities, and semantic relationships between words.

Instead of obsessing over exact-match keyword usage, focus on covering your topic thoroughly. If you’re writing about on-page SEO, Google expects to see related concepts like title tags, meta descriptions, header hierarchy, internal linking, and schema markup. Miss any of these, and your content looks incomplete compared to competitors who cover them.

I use Surfer SEO to check topical coverage on important articles. It shows me which terms and concepts competing pages include that I might’ve missed. But you don’t need a paid tool. Read the top 5 results for your keyword. Note the subtopics they all cover. Make sure your content addresses each one.

Write for E-E-A-T

Experience, Expertise, Authoritativeness, and Trustworthiness. These aren’t just buzzwords from Google’s Quality Rater Guidelines. They’re signals that increasingly influence rankings in 2026, especially for YMYL (Your Money or Your Life) topics.

Show your experience by including specific examples from your own work. “I tested this on 12 client sites” beats “studies show” every time. Link to your author page. Include credentials where relevant. Add dates to show your content is current. On gauravtiwari.org, every article has my author box with my bio, photo, and links to my social profiles. This isn’t vanity. It’s E-E-A-T.

Format for Readability

Nobody reads 500-word paragraphs. Break your content into scannable chunks. Use short paragraphs (3-6 sentences max). Add subheadings every 200-300 words. Use bold text to highlight key points. Include images and screenshots to break up text walls.

I target an 8th-grade reading level for all my content. You can check this in Hemingway Editor (free) or in Rank Math’s content analysis. This doesn’t mean dumbing down your content. It means using shorter sentences and simpler words. “Use” instead of “utilize.” “Before” instead of “prior to.” Clear writing respects your reader’s time.

Internal Linking Strategy

Internal links are the most underused on-page SEO tactic I see. Backlinks get all the glory, but internal links are 100% within your control and can move rankings within days. I’ve seen a single internal link push a page up 5 positions on Google. Not a backlink from the New York Times. An internal link from another page on the same site.

Link to Related Content With Descriptive Anchor Text

Every page on your site should link to 3-5 other relevant pages. Use descriptive anchor text that tells both Google and readers what the linked page is about. “Click here” is worthless anchor text. “Our guide to WordPress permalink structure” tells Google exactly what to expect on the other end of that link.

I audit internal links quarterly on gauravtiwari.org. With 1,800+ articles, orphan pages (pages with zero internal links pointing to them) are a constant problem. I use Screaming Frog to find orphan pages and then add internal links from relevant posts. Last quarter, I found 47 orphan pages. After adding 2-3 internal links to each, 31 of them saw ranking improvements within 4 weeks.

Build Topic Clusters

Think hub-and-spoke. Your pillar page (the hub) covers a broad topic. Supporting articles (the spokes) cover subtopics in depth and link back to the pillar. This builds topical authority and helps Google understand the relationship between your pages.

For example, my SEO pillar page links to individual articles about on-page SEO, technical SEO, link building, keyword research, and local SEO. Each of those articles links back to the pillar and to each other where relevant. This structure has helped gauravtiwari.org rank for over 12,000 keywords in the SEO niche alone.

Use a WordPress Plugin to Find Opportunities

Link Whisper is the internal linking plugin I recommend for WordPress. It suggests relevant internal links as you write and shows you which pages need more links. It costs $77/year for a single site. That’s worth it if you have more than 50 articles. For smaller sites, manual linking is fine.

Rank Math also suggests internal links in its content editor panel, though it’s less sophisticated than Link Whisper. If you’re already using Rank Math (and you should be), start there before buying another plugin.

Image Optimization

Images affect page speed, accessibility, and search visibility. Most site owners upload images straight from their camera or screenshot tool without any optimization. A single unoptimized hero image can add 3-4 seconds to your load time. I’ve audited sites where images alone accounted for 80% of the page weight.

Write Descriptive Alt Text for Every Image

Alt text serves two purposes: it tells screen readers what’s in the image (accessibility) and it tells Google what the image shows (SEO). Every image needs unique alt text. “Screenshot” is not alt text. “Screenshot of Rank Math SEO settings panel showing title tag configuration” is alt text.

Include your target keyword in alt text when it’s natural and accurate. If the image actually shows something related to your keyword, include it. If it doesn’t, don’t force it. Google can detect when alt text doesn’t match the image, and stuffing keywords into every alt tag looks spammy.

Compress and Convert to WebP

Before uploading any image to WordPress, compress it. I use ShortPixel, which automatically compresses and converts images to WebP format on upload. WebP files are 25-35% smaller than equivalent JPEGs with no visible quality loss. My target is under 100KB for blog images and under 200KB for hero images.

ShortPixel costs $4.99/month for 5,000 image credits. It’s the best value in image optimization plugins. Imagify works well too but costs more for the same volume. EWWW Image Optimizer is a solid free alternative if budget is tight, though the compression isn’t quite as aggressive.

Use Descriptive File Names

Name your image files before uploading. on-page-seo-checklist-title-tag.webp is a good file name. IMG_4523.png tells Google nothing. I rename every image before uploading it. This adds 10 seconds per image and creates one more signal for Google to understand what the image shows.

Enable lazy loading for images below the fold. WordPress has native lazy loading built in since version 5.5. Most modern themes support it out of the box. This means images only load when a visitor scrolls down to them, which dramatically improves initial page load time. Just make sure your above-the-fold hero image is NOT lazy loaded, or it’ll hurt your LCP score.

Schema Markup

Schema markup helps Google understand your content’s structure and context. It won’t directly boost your rankings, but it can earn you rich results in the SERPs, which dramatically increase click-through rates. FAQ schema can double the space your listing takes up in search results. Review schema adds star ratings. Article schema shows your author photo and publish date.

Add Article Schema to Every Blog Post

Article schema tells Google who wrote the content, when it was published, when it was last updated, and what image represents it. This information powers rich results and helps Google’s E-E-A-T evaluation. Rank Math adds Article schema to all blog posts automatically. Just make sure your author profile is complete with your name, photo, and social links.

I’ve tested removing and re-adding Article schema across multiple sites. Pages with proper Article schema consistently show better rich snippet treatment in the SERPs. One client saw their search listing include the author name, publish date, and thumbnail image after we added Article schema. CTR jumped 22% for that page within a month.

Use FAQ Schema Where It Makes Sense

FAQ schema marks up your frequently asked questions so Google can display them directly in search results. This is powerful. Your listing takes up more real estate, pushing competitors further down the page. But Google has gotten stricter about FAQ schema in the last two years. They now only show FAQ rich results for authoritative sites on certain queries.

Add FAQ schema to pages where you genuinely answer common questions. Don’t add fake FAQs just for the schema benefit. Google will ignore them, or worse, see it as manipulation. I add 5-8 real FAQs to every major article on gauravtiwari.org. Rank Math makes this dead simple with its FAQ block in the WordPress editor.

Don’t Overcomplicate Schema

You don’t need to manually write JSON-LD for schema markup. Rank Math handles Article, FAQ, Breadcrumb, Organization, and Person schema automatically. It’s one of the main reasons I recommend Rank Math over Yoast. Yoast’s schema setup is more basic, and many schema types require their premium version. Rank Math gives you everything in the free version.

If you need custom schema types (Product, Event, Recipe, etc.), Rank Math Pro handles those too. But for a standard blog or business site, the free version covers everything you need. I’ve been using Rank Math on gauravtiwari.org since 2020, and I’ve never needed to touch raw schema code.

Core Web Vitals and Page Speed

Google has confirmed that Core Web Vitals are a ranking factor. Not the biggest factor, but a real one. More importantly, slow pages lose visitors. 53% of mobile users leave a page that takes more than 3 seconds to load. That’s not a Google stat. That’s a “your revenue disappears” stat.

Fix Your Largest Contentful Paint (LCP)

LCP measures how long it takes for the largest visible element (usually a hero image or heading) to load. Google wants this under 2.5 seconds. I aim for under 2 seconds. The most common LCP killers on WordPress sites are unoptimized hero images, render-blocking CSS/JS, and slow server response times.

Start with your hosting. If you’re on cheap shared hosting, no plugin will save you. I recommend Cloudways with DigitalOcean or Vultr for WordPress. It costs $14-28/month and delivers server response times under 200ms. After that, install a caching plugin. I use FlyingPress on most client sites. It handles page caching, CSS/JS optimization, and image lazy loading in one plugin.

Eliminate Cumulative Layout Shift (CLS)

CLS measures how much your page layout shifts while loading. You know that annoying experience when you try to click something and the page jumps? That’s layout shift. Google wants CLS below 0.1. The biggest culprits are images without dimensions, ads that load late, and web fonts that cause text reflow.

Fix images first. Make sure every tag has width and height attributes. WordPress adds these automatically for images uploaded through the media library, but manually inserted images often miss them. For web fonts, use font-display: swap and preload your primary fonts. This alone fixed CLS issues on 70% of the client sites I’ve audited.

Improve Interaction to Next Paint (INP)

INP replaced FID as a Core Web Vital in March 2024. It measures how responsive your page is to user interactions, specifically how long it takes for the browser to respond after a click, tap, or key press. Google wants INP under 200 milliseconds. Heavy JavaScript is the number one INP killer.

On WordPress, the usual suspects are bloated page builders (Elementor, Divi), too many plugins running JavaScript on every page, and poorly coded themes. I stripped Elementor from a client site and rebuilt with Kadence Blocks. INP went from 380ms to 90ms. Page speed score went from 42 to 94. It was a lot of work, but the traffic increase justified it within 2 months.

Mobile Optimization

Google uses mobile-first indexing. That means Google primarily crawls and ranks the mobile version of your site. If your desktop site looks great but your mobile experience is terrible, your rankings will suffer. This has been the case since 2023 for all sites, no exceptions.

Test Your Mobile Experience Regularly

Pull out your phone and actually use your site. Not the Chrome DevTools mobile emulator. Your actual phone. Tap the navigation. Read an article. Fill out a form. If anything feels clunky, fix it. I test every client site on both iPhone and Android before signing off on any project.

Common mobile issues I find during audits: text too small to read without zooming (font size should be at least 16px for body text), buttons too close together (tap targets need at least 48px of space), and horizontal scrolling caused by images or tables that don’t resize. All of these hurt rankings and user experience.

Ensure Responsive Design Actually Works

Most WordPress themes claim to be responsive. Many aren’t, at least not well. Tables break on mobile. Sidebars stack awkwardly. Pop-ups cover the entire screen with no way to close them. Google specifically penalizes intrusive interstitials (full-screen pop-ups) on mobile.

Use Google’s PageSpeed Insights to check your mobile score. Anything below 50 needs immediate attention. Between 50-80 is acceptable. Above 80 is good. I’ve gotten gauravtiwari.org’s mobile score to 92 using FlyingPress, Cloudways hosting, and the flavor theme. That combination handles mobile rendering beautifully with minimal custom work.

Optimize Touch Elements

Make buttons and links easy to tap. Increase button padding to at least 12px on all sides. Add spacing between clickable elements so users don’t accidentally tap the wrong link. This sounds minor, but I’ve seen mobile bounce rates drop 15-20% just from making navigation links properly tappable.

Your mobile menu matters more than your desktop menu. Most of your traffic is probably mobile (check Google Analytics, I’d bet it’s 60-70% for most sites). Spend more time testing and refining the mobile menu than the desktop version. A hamburger menu that’s smooth and fast will outperform a fancy mega menu that’s sluggish on a phone.

The Complete On-Page SEO Checklist

Here’s everything in one place. Print this out. Tape it next to your monitor. Check every point before publishing any page.

Title Tag Checklist

  • Primary keyword appears in the first half of the title
  • Title is between 50-60 characters
  • Title includes a number, year, or power word for CTR
  • Title tag differs from H1 (optimized separately in Rank Math)

Meta Description Checklist

  • Description is 140-155 characters long
  • Primary keyword appears once, naturally
  • Description tells the reader exactly what the page delivers
  • Every page has a manually written meta description (no blanks)

Header and Content Checklist

  • One H1 tag per page containing the primary keyword
  • H2-H6 tags follow logical hierarchy (no skipped levels)
  • Target keyword appears in at least one H2
  • Content covers the topic as thoroughly as top-ranking competitors
  • Paragraphs are 3-6 sentences for readability
  • Reading level is at or below 8th grade

URL and Link Checklist

  • URL is short (under 60 characters) and includes the primary keyword
  • WordPress permalinks set to “Post name”
  • 3-5 internal links to relevant pages with descriptive anchor text
  • No orphan pages (every page has at least one internal link pointing to it)
  • All links work (no 404 errors)

Image and Media Checklist

  • Every image has descriptive alt text
  • Image files are named descriptively before uploading
  • All images compressed to under 100KB (blog) or 200KB (hero)
  • Images served in WebP format
  • Lazy loading enabled for below-the-fold images
  • Hero image is NOT lazy loaded (protects LCP)

Technical Checklist

  • Article schema markup present (Rank Math handles this)
  • FAQ schema added where genuine FAQs exist
  • LCP under 2.5 seconds (aim for under 2)
  • CLS below 0.1
  • INP under 200ms
  • Mobile PageSpeed score above 50 (aim for 80+)
  • No intrusive interstitials on mobile

Frequently Asked Questions

How long does on-page SEO take to show results?

Most on-page changes start showing results within 2-6 weeks. I’ve seen title tag changes move rankings in as little as 3 days for pages Google crawls frequently. Bigger changes like restructuring content or fixing header hierarchy typically take 4-8 weeks to fully impact rankings. The timeline depends on how often Google recrawls your site and how competitive your keywords are.

Is Rank Math better than Yoast for on-page SEO?

I switched from Yoast to Rank Math in 2020 and haven’t looked back. Rank Math’s free version includes features that Yoast charges premium prices for: advanced schema markup, redirect manager, keyword rank tracking, and more. The content analysis is more detailed, and the interface is cleaner. Yoast still works fine, but you’ll pay $99/year to match what Rank Math gives you for free.

Does keyword density still matter in 2026?

No. Keyword density hasn’t been a meaningful ranking factor for years. Google uses natural language processing to understand topics, not count exact keyword matches. Write naturally. If your target keyword appears 3-5 times in a 2,000-word article, that’s probably fine. Focus on covering the topic thoroughly with related terms and concepts instead of hitting a specific percentage.

How many internal links should each page have?

I recommend 3-5 internal links per page as a baseline. But context matters more than a specific number. A 3,000-word article naturally supports more internal links than a 500-word page. The links should add value for the reader, not just exist for SEO purposes. If a link helps the reader go deeper on a related topic, include it. If it feels forced, leave it out.

Should I optimize old content or focus on new articles?

Both, but start with old content. Updating and optimizing existing pages with established authority often delivers faster results than publishing new content from scratch. I spend about 40% of my content time updating old articles on gauravtiwari.org. Some of my biggest traffic gains have come from updating a 3-year-old article with fresh information, better headers, and improved internal links.

Do meta descriptions affect rankings?

Not directly. Google has confirmed that meta descriptions aren’t a ranking factor. But they heavily influence click-through rate, and CTR is a user behavior signal that can indirectly affect rankings over time. A page with a 5% CTR will generally outperform a page with a 2% CTR for the same query, assuming other factors are similar. Write your meta descriptions for humans, not algorithms.

What’s the most important on-page SEO factor in 2026?

Content relevance and quality. You can optimize every technical on-page element perfectly, but if your content doesn’t answer the searcher’s question better than competing pages, you won’t rank. Title tags, headers, and schema markup are important multipliers, but they multiply the value of your content. If the content is thin, multiplying it doesn’t help much.

How do I check if my on-page SEO is working?

Track three things in Google Search Console: average position, click-through rate, and total impressions for your target keywords. After making on-page changes, give it 4-6 weeks and compare those numbers to the previous period. I also run Screaming Frog crawls monthly to catch technical issues like missing alt text, duplicate titles, or broken internal links. For individual page analysis, Rank Math’s content scoring gives you a quick snapshot of on-page optimization quality.

Your Next Step

Don’t try to optimize your entire site at once. Start with your top 10 pages by traffic. Run each one through this checklist. Fix what’s broken. I guarantee you’ll find at least 3-5 issues on every page, even if you think they’re already optimized. I find issues on my own pages constantly, and I’ve been doing this for 18 years.

On-page SEO isn’t a one-time task. It’s ongoing maintenance. Google changes how they weight factors. Competitors improve their pages. Your content ages and needs refreshing. Set a reminder to audit your top pages quarterly. It takes a few hours each time and consistently delivers the best ROI of any SEO activity I do.