On-page SEO on WordPress is really two jobs. There’s a handful of settings you fix once for the whole site, and a short list of things you check on every page you publish. Most on-page SEO checklists mix the two together, so you end up with a 30-item list where half the items only ever needed doing once.
A lot of those checklists are also written by companies that sell SEO plugins or SEO tools, so the advice tends to end with “install our plugin and get the score to green.” Google has never seen that score. What Google looks at is whether the page answers the search, whether the title, headings and content make it obvious what the page is about, and whether the site is easy to crawl without a pile of junk pages around it.
I’ve been building on WordPress for about 15 years, so this list is split the way the work actually happens there, with no plugin walkthroughs. Every major SEO plugin controls the same handful of tags, and you’ll find the right field in whichever one you use.
The short version
- Fix the site-wide stuff once. Make sure search engines aren’t blocked, use Post name permalinks and check that your theme uses the post title as the H1.
- For every page, pick the one topic it should rank for and look at what already ranks before you write.
- The title tag and the H1 do most of the on-page work. Make them say what the page is, in the words people search with.
- Answer the question early, use real subheadings, and link to the new page from your older pages.
- Name, resize and describe images before they go in, and only add schema that matches what’s on the page.
- Ignore the SEO plugin traffic lights, keyword density and word count targets. None of them are things Google measures.
What counts as on-page SEO
On-page SEO (you’ll also see it called on-page optimization) is everything on the page itself that helps search engines understand it and helps people decide to click and stay.
That’s the content, the title tag, the headings, the URL, the images, the internal links and the structured data. It’s the part of SEO you fully control, which is exactly why it’s the part to get right first.
Off-page SEO is what happens on other websites, mostly links and mentions pointing back at you (I covered that side in how to get backlinks).
Technical SEO is about whether search engines can crawl and index the site at all, so things like speed, sitemaps, redirects, crawling, indexing, rendering, duplicate pages etc.
The lines between the three blur, and on WordPress they blur a lot, because a big chunk of your on-page SEO is decided by settings and by your theme rather than by what you type into the editor.
Set these once for the whole site
These are site-wide settings. Once they’re right they stay right, until someone changes a setting, switches themes or migrates the site. Check them now, and check them again after any of those.
Make sure the site isn’t hiding from Google
Go to Settings > Reading and look at “Search engine visibility.” If the box that says “Discourage search engines from indexing this site” is ticked, WordPress adds a noindex tag to every page, and Google will drop the site from its results.
Nobody ticks that box on a live site on purpose. It gets ticked on a staging copy while the site is being built, and then the staging copy gets pushed live with the box still ticked.
It takes ten seconds to check, and it’s the first thing worth ruling out when a WordPress site loses its traffic right after a redesign.
Use a clean permalink structure
Settings > Permalinks decides what your URLs look like. On a fresh install, WordPress picks the “Day and name” structure by default whenever the server supports it, which puts the full date into every post URL (yoursite.com/2026/09/25/post-name/).
Switch it to “Post name” before you publish much. Short URLs with the topic in them are easier to read and share, and they don’t make an evergreen guide look three years old in the search results. Google’s URL structure guidelines ask for readable words instead of ID numbers and hyphens instead of underscores, and Post name gives you both without any extra thought.
On an established site, don’t flip this setting casually. Changing the structure changes every post URL at once, which makes it a migration, and it deserves a redirect map and a crawl afterward like any other.
On a new site it’s a two-second fix.
Check what your theme or page builder does with headings
Your theme decides which HTML tag the post title gets, and not every theme gets it right. On a single post or page, the title you type at the top of the editor should come out as the H1, and it should be the main headline on the page.
The two usual problems are the logo and the page builder. Some older themes wrap the site logo or site name in an H1 on every page, so every post on the site has the same H1 sitting above its real one.
Page builders like Elementor, Divi or Bricks let you pick any heading level for any piece of text, which makes it easy to end up with a page that has no H1 at all, or a hero section where the H1 says “Welcome” and the actual topic is an H3 further down.
Checking takes a minute. Open a post, right-click the title, choose Inspect, and see which tag it’s wrapped in. Do the same on a page and on the homepage. If you want to see the whole site at once, a crawler like Screaming Frog lists every page’s H1, and the free version crawls up to 500 URLs.
More than one H1 isn’t a disaster, by the way. Google has said multiple H1s are fine. The real problem is a page where the most prominent heading doesn’t say what the page is about, because Google uses that heading as one of its sources when it rewrites your title in the results.
Use one SEO plugin and let it do the boring part
WordPress on its own does more than people give it credit for. Core already outputs a canonical tag on posts and pages, noindexes your internal search results, builds an XML sitemap and redirects old post URLs when you change a slug.
What it doesn’t give you is a field for the title tag or the meta description, and that’s the main reason everyone installs an SEO plugin.
Which one you pick matters a lot less than the arguments online would suggest. Yoast, Rank Math, All in One SEO, SEOPress and The SEO Framework all control the same small set of tags, which is the title tag, the meta description, the canonical, the robots meta tag (index or noindex), the XML sitemap, Open Graph tags for social sharing and some basic schema.
Pick the one you find easiest to use and stick with it.
What you shouldn’t do is run two. Two SEO plugins can mean two title tags, two descriptions and two sets of schema on the same page, and then you’re guessing which one Google reads.
The usual way it happens is a site switching plugins and nobody deactivating the old one. View the page source, search for “<title” and “description”, and make sure each one shows up once.
Stop WordPress from creating pages nobody should land on
WordPress creates extra URLs without asking. Every tag gets its own archive page, every author gets one, every month gets one, and on older sites every image you upload gets its own attachment page with nothing on it but the image.
Those pages don’t hurt you just by existing, but they’re thin, they duplicate each other, and they compete with your real posts for Google’s attention. A tag archive for “seo tips” with three posts on it has no business competing with the actual guide. Every major SEO plugin has a switch to noindex or disable each of these.
| What WordPress creates | What to do with it |
| Attachment pages (one per uploaded file) | Sites installed on WordPress 6.4 or later redirect these to the file by default. Older sites still have them, so turn them off or redirect them. |
| Tag archives | Use tags sparingly. On most business sites I’d skip them entirely. Noindex tag archives unless a tag page is something you’d actually want to rank. |
| Category archives | Keep them indexed if they’re real topic hubs with an intro and a sensible list of posts. Otherwise noindex them. |
| Author archives | On a one-author site they duplicate the blog page, so noindex them and point your byline at an About page instead. On a multi-author site, keep them and turn them into proper author pages. |
| Date archives | Nobody searches for “September 2026 posts.” Noindex or disable them. |
| Internal search results | Core already noindexes these. Leave that alone. |
Submit your sitemap
WordPress has had its own XML sitemap built into core since 5.5, at yoursite.com/wp-sitemap.xml. Most SEO plugins switch that one off and replace it with their own (Yoast and Rank Math use /sitemap_index.xml), which is fine, as long as you know which one is live.
Open the sitemap, check that it lists your posts and pages and not the archives you just noindexed, and submit it in Google Search Console under Sitemaps. After that, glance at it every few months to make sure Google can still fetch it. That’s the whole job.
The checklist for every page you publish
This is the list you run through for every post, page, product or category you want to rank. It goes in the order I’d do it, from before you start writing to a few weeks after the page goes live.
1. Know what the page should rank for, and what that search wants
Every page you want to rank should be built around one main topic. That means one main keyword, plus the close variations people use to say the same thing.
Before you write, search that keyword and look at the first page of results. Google is already showing you what it thinks the searcher wants. If the top results are all step-by-step guides, a sales page won’t rank there, and if they’re all product and category pages, your blog post won’t either. Match the type of page first, then beat what’s there on depth, clarity or usefulness. I went through this properly in my keyword research guide, and the process is the same outside eCommerce.
The common trap here is cannibalization. Blogs that have been running for a few years tend to collect three or four posts on nearly the same topic, all half-ranking and none of them winning.
Before you write a new post, search your own site (site:yoursite.com plus the topic on Google) and check whether you already have a page for it. If you do, improve that page instead of writing a new one.
2. Write the title tag
The title tag is the clickable headline in the search results, and it’s still one of the strongest on-page signals you control.
In WordPress it’s not the same thing as the post title. The post title is what shows on the page, usually as your H1. The title tag is the “SEO title” field in your SEO plugin, and if you leave that field empty, the plugin builds one from a template, usually the post title plus your site name.
A good title tag says what the page is in the words people search with, with the main keyword near the start. Aim for roughly 50 to 60 characters. Google’s title link documentation says there’s no length limit and that it simply truncates titles to fit the screen, but length does affect whether Google keeps your title at all. Zyppy analyzed 80,959 titles and found Google rewrote 61.6% of them. Titles between 51 and 60 characters were rewritten the least, 39 to 42% of the time, while titles over 70 characters were rewritten 99.9% of the time. That’s where the 50 to 60 range comes from. It’s simply the length Google leaves alone most often.
Two smaller things from that study are worth copying. Google removed or replaced pipes as separators about twice as often as dashes, so put a dash between your title and your brand name.
And don’t write a lazy title that’s just a string of keyword variations, because Google’s own documentation singles that out as keyword stuffing and it’s exactly the kind of title that gets replaced.
3. Make the H1 say the same thing
The H1 is the headline on the page itself, and in WordPress it’s almost always the post title field at the top of the editor. It doesn’t have to match the title tag word for word, but it should be about the same thing and use the same main phrase.
This matters because Google doesn’t only read your title tag. The same documentation lists the main visual title on the page and heading elements like the H1 among the sources it uses to write the title link, so when your title tag and your H1 agree, Google has much less reason to rewrite anything. In the Zyppy study, when both the title and the H1 had a number in them, Google kept a number in the displayed title 97.3% of the time.
The H1 can be a little longer and more natural than the title tag, since nothing gets truncated on the page. The title tag is for the results page, and the H1 is for the person who already clicked.
4. Trim the slug
WordPress builds the slug (the last part of the URL) from your post title, so a title like “The On-Page SEO Checklist for WordPress (What Actually Matters)” becomes a slug with every one of those words in it. Before you publish, cut it down to the topic, something like /on-page-seo-checklist/.
Get the slug right before you publish, because changing it later has a WordPress catch.
When you change the slug of a post, WordPress remembers the old one and redirects it for you.
When you change the slug of a page, it doesn’t. The function that handles those redirects skips hierarchical post types, and pages are hierarchical.
So if you rename a page’s slug, add a 301 redirect from the old URL yourself (most SEO plugins and redirect plugins can do it), or every link pointing at the old URL ends up on a 404.
5. Write a meta description for the pages that matter
The meta description is the short summary under your title in the search results. It doesn’t affect rankings. It can affect whether people click.
It also gets ignored a lot. Ahrefs looked at 192,656 pages and found Google rewrote the meta description 62.78% of the time, pulling text from the page instead. Google’s snippet documentation is upfront about why.
Snippets are “primarily created from the page content itself,” and the meta description gets used when it describes the page more accurately than the page’s own text does.
So is it worth writing one? For your important pages, I’d say yes. It takes two minutes, and on the searches where Google does show it, it’s your pitch.
Write it for a person, say what they’ll get on the page, and don’t obsess over an exact character count, since Google says there’s no length limit and it just cuts the text to fit. For the 300th product variation or an old news post, let the plugin’s template or Google handle it. The same Ahrefs study found 25.02% of top-ranking pages don’t have a meta description at all, and they rank anyway.
6. Answer the search early and use real subheadings
Content is the part of on-page SEO that decides most of the outcome, and it’s the one part your plugin can’t check. Google’s guidance on helpful, people-first content is basically a list of questions about whether a real person would find the page useful, and none of them are about keywords.
Answer the main question in the first few lines instead of warming up for three paragraphs, because the person searching wants the answer, and Google often lifts it straight into a featured snippet or an AI Overview.
Break the page into sections with H2s that describe what’s in them, and use H3s under those when a section has parts. Use the list and table blocks in the WordPress editor when you’re comparing things or laying out steps, instead of cramming it all into paragraphs.
And stop worrying about length. Google’s helpful content page literally asks, “Are you writing to a particular word count because you’ve heard or read that Google has a preferred word count?” and then answers its own question with “No, we don’t.” A page should be as long as it takes to fully answer the search. For some searches that’s 300 words, and for others it’s 4,000.
7. Use the keyword like a person would
Your main keyword should show up in the title tag, the H1, the slug and somewhere early in the content, because those are the natural places to say what a page is about. After that, just write normally.
There’s no keyword density, and writing to a percentage is how you end up with sentences nobody would ever say out loud. Repeating a phrase over and over is listed as keyword stuffing in Google’s spam policies. The “focus keyphrase” box in your SEO plugin is only there to remind you what the page is for.
Use the variations people actually search with instead. A page about on-page SEO will naturally talk about title tags, meta descriptions, headings, internal links and images, and those related terms tell Google far more about the topic than the exact phrase repeated ten times.
8. Link to it, and link from it
Internal links are how Google finds your new page and how it works out which pages on your site matter most. There are two directions, and most people only do one of them.
Linking out from the new page to your related pages is the easy part, and most people remember to do it. The part people skip is going back to older pages that already get traffic and adding a link to the new one. A new post with nothing on your site linking to it is close to an orphan page, which gives Google fewer ways to find it and fewer signals that it matters.
Use anchor text that describes the page you’re linking to (“our guide to title tags,” not “click here”), and put the link where it’s actually useful to the reader. I wrote a full guide to internal linking on WordPress if you want the whole process, and it’s the exact problem Linkter, the internal linking tool I co-founded, was built around.
9. Link out when you cite something
If you mention a study, a statistic or somebody else’s tool, link to the source. It lets the reader check your claim, and it’s what a trustworthy page looks like. You don’t need to nofollow normal citations either. Google’s guidance on qualifying outbound links reserves nofollow, sponsored and ugc for links you were paid for, links users added, or links you don’t want to vouch for.
One habit I’d add. When the best source you can find is a competitor’s article quoting a study, go find the study and link to that instead, especially if that competitor is trying to rank for the same thing you are.
10. Get images right before you upload them
Rename the file before it goes anywhere near the Media Library. “IMG_4829.jpg” tells nobody anything, while “wordpress-permalink-settings.jpg” at least hints at what’s in the picture. Google’s image SEO guidelines say the filename gives it “very light clues” about the subject, so it’s a small thing, but once a file is uploaded, WordPress won’t let you rename it without a plugin.
Then resize and compress it. WordPress scales down big images (anything over 2,560 pixels) and creates several smaller sizes so browsers can load the right one, but it won’t do the compression work for you. Export images at roughly the size they’ll be shown, compress them, and use WebP or AVIF where you can. WordPress has supported WebP since 5.8 and AVIF since 6.5.
Last, write the alt text in the image block. Alt text is for people using screen readers first, and Google says it uses alt text “along with computer vision algorithms and the contents of the page” to understand what an image shows. Describe the image the way you’d describe it to someone over the phone, and only mention your keyword if it’s actually what the image shows.
One WordPress quirk matters if you’re fixing alt text on an existing site. The alt text you set in the Media Library and the alt text on an image already sitting in a post are two separate things. The block editor saves the alt text into the post itself when you insert the image, so fixing it later in the Media Library doesn’t touch posts where the image is already used. You have to fix it in each post.
11. Add schema where it earns something
Schema markup, or structured data, is code that tells Google what’s on the page in a format it can read without guessing. Your SEO plugin already adds the basics, usually Article or WebPage schema, breadcrumbs and your organization or author details. For most blog posts and service pages, that’s enough.
I wouldn’t add more unless it matches something visible on the page and Google actually does something with it. Product schema with price, availability and reviews is worth it for WooCommerce stores, because those details can show up right in the results. Recipe, event, job posting and local business schema are worth it when that’s genuinely what the page is.
A lot of older checklists still tell you to add FAQ schema to get the question dropdowns under your result. Google cut those back to government and health sites in 2023 and stopped showing FAQ rich results for everyone on May 7, 2026. HowTo rich results were deprecated in September 2023. If a plugin or a checklist is still selling FAQ schema as a rankings trick, it’s out of date. You don’t have to rip out markup that’s already there, though. Google said at the time that unused structured data doesn’t cause problems for Search, it just doesn’t do anything.
12. Show who wrote it and when
Google’s helpful content guidance asks whether pages carry a byline where you’d expect one, and whether that byline leads to more information about the author. This is the practical end of what SEOs call E-E-A-T (experience, expertise, authoritativeness and trust). On WordPress, it means showing the author’s name on posts, linking it to a page about that person, and making that page say who they are and why they know the subject. Plenty of themes show the name and link it to nothing more than the default author archive, which is just a list of posts.
Dates work the same way. Show the published date, and show an updated date when you’ve actually updated the page. What you shouldn’t do is bump the date to make an old post look fresh. Google asks directly, “Are you changing the date of pages to make them seem fresh when the content has not substantially changed?” That question isn’t on the list by accident.
13. Check the page on your phone
Google indexes the mobile version of your site, so the mobile version is the one that counts. Open the page on your phone and check that the text is readable without zooming, nothing is cut off, buttons aren’t cramped together, and no popup covers the content the moment the page loads.
Then check speed. Run the page through PageSpeed Insights and look at the Core Web Vitals. Google’s recommended targets are Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint under 200 milliseconds and Cumulative Layout Shift under 0.1. On WordPress, the usual culprits are heavy page builders, sliders at the top of the page, too many plugins loading scripts on every page, big unoptimized images and cheap hosting.
Keep speed in perspective, though. Google’s own page experience documentation says it “always seeks to show the most relevant content, even if the page experience is sub-par.” How much speed weighs against everything else is something Google has never put a number on, and I doubt a clean number exists. What’s clear is that a fast page that doesn’t answer the search won’t outrank a slower one that does, so fix what’s clearly broken and don’t sacrifice the content to chase a perfect 100.
14. Check in after you publish
Once the page is live, open Google Search Console, paste the URL into the URL Inspection bar at the top, and click Request Indexing. Google says requesting a crawl doesn’t guarantee anything, but it gets the page in front of Google sooner than waiting for it to be discovered.
Come back to it a few weeks later. In Search Console’s Performance report, filter by the page and look at the queries it’s getting impressions for. That’s Google telling you what it thinks the page is about. If it’s showing up for searches close to what you wanted, sharpen the title tag and headings toward them. If it’s showing up for something completely different, the page isn’t saying what you think it’s saying, and the fix is usually in the title, the H1 or the first few paragraphs.
What you can ignore
Most of what makes on-page SEO feel endless is plugin scores and old advice that never got updated.
| What you’re told to do | Why you can skip it |
| Get every dot in your SEO plugin green | The score is the plugin’s own checklist. Google never sees it, and chasing it leads to awkward, repetitive writing. |
| Hit a readability score | Readability matters to readers. A Flesch score and warnings about sentences over 20 words aren’t what Google ranks. |
| Hit a keyword density | There’s no ideal percentage, and repeating a phrase too much is keyword stuffing. |
| Fill in meta keywords | Google has ignored the keywords meta tag since at least 2009. |
| Get the title length to the exact character | Google has no official limit and truncates by screen width. Aim for about 50 to 60 characters and move on. |
| Hit a word count | Google says it doesn’t have a preferred word count. |
| Add FAQ schema for rich results | Google stopped showing FAQ rich results in May 2026. |
| Update the date to look fresh | Google specifically asks whether you do this. |
| Panic about multiple H1s | Multiple H1s are fine. Just make sure the main one says what the page is. |
| Put the exact keyword in every subheading | Subheadings should describe their section. Variations read better and cover more searches. |
The plugin score is the one people lose the most time on, and I’d go as far as saying it’s made a lot of WordPress content worse, because people end up writing for the dots instead of the reader. The content analysis in Yoast, Rank Math and the rest works like a spellchecker for SEO basics. It’s handy for catching a missing meta description or a title that’s way too long. It has no idea whether your page is better than the ten that already rank, and that’s the thing that decides where you end up.
A few questions people ask
Do you need an SEO plugin for on-page SEO?
Not strictly, but it’s the easiest way to get a title tag and meta description field on every page, plus control over which pages get indexed. WordPress core already handles canonicals, a basic sitemap and noindex on search results, so the plugin mostly fills the gaps. Any of the big ones will do. The plugin gives you the fields, and you still have to fill them in well.
Which tools do you need for on-page SEO checks?
Three free ones cover almost everything on this list. Google Search Console tells you what’s indexed and which searches each page shows up for. Your SEO plugin gives you the fields and flags the obvious misses. A crawler like Screaming Frog shows every title, description, H1 and broken link across the whole site in one list, which is how you catch the site-wide problems a page-by-page check never will. Ahrefs and Semrush add keyword data and competitor research on top, but you don’t need either one to do anything on this checklist.
Does on-page SEO still matter with AI search?
Yes, and for the same reasons it always did. There are not many additional requirements to show up in AI Overviews or AI Mode, and that the usual SEO fundamentals still apply. AI answers get built from pages that were crawled and indexed like any other, and a page that states its topic clearly in the title and headings and answers the question directly is easy for a search engine and a language model to pull from alike.
If anything, AI search makes the basics on this list matter more. A page that a person can skim in ten seconds and know exactly what it covers is the same page an AI tool finds easy to quote, and there’s no plugin setting that gets you there.
