After fifteen-plus years of looking at WordPress sites, the same on-page SEO mistakes come up again and again. Most of them aren’t technical. They’re structural — the kind of thing that’s easy to fix once you know what to look for, and almost invisible if you don’t. This post walks through the ten I see most often, what each one actually costs you, and how to fix it without a developer in most cases.
If you’d rather think about why these problems keep happening on WordPress builds, SEO tasks vs SEO decisions covers that ground. And if you want the case for fixing these things at build time rather than after launch, that’s in why WordPress SEO starts at the build. This post is about the symptoms — the on-page SEO mistakes on WordPress sites that are already live and need attention now.
1. Multiple H1s on the same page
An H1 is the main heading of a page — the one that tells search engines and screen readers what the page is about. There should be exactly one per page.
On WordPress sites, this rule gets broken constantly. The page title is an H1. Then the editor adds another H1 inside the content because it “looked right” in the visual editor. Then a sidebar widget uses an H1 for its title. Suddenly the page has three.
It’s not a catastrophic ranking issue — Google has said it can handle multiple H1s — but it’s a clear signal of a sloppy template, and on a competitive page it’s a margin you don’t need to give away.
How to check. Open the page in Chrome, right-click, choose “View Page Source”, and search for <h1. If there’s more than one match, you have a problem. Or install a free browser extension like SEO Meta in 1 Click and look at the headings tab.
How to fix. The fix is almost always in the template, not the content. If your theme renders the page title as an H1 and your blocks also use H1, change the blocks to H2. If a widget area uses H1, change it. The page title should be the only H1.
2. Title tags that don’t match the page
The title tag is what shows in the browser tab and as the blue link in Google search results. It’s the single most important on-page signal you control.
The mistakes here are usually one of three things. The first is generic titles — “Home”, “Services”, “About Us” — which tell Google nothing and give nobody a reason to click. The second is duplicate titles, where every page on the site ends up titled “Acme Corp — Best in Class Solutions” because that’s the site-wide default and nobody ever wrote unique ones. The third is bait-and-switch titles, where the page is titled “Free Quote in 60 Seconds” but the page is actually a long service description with a form at the bottom.
How to check. Crawl your site with Screaming Frog (free up to 500 URLs) or look at the Pages report in Google Search Console. Sort by title tag and look for duplicates, missing entries, or titles that don’t describe the page.
How to fix. Every page gets a unique title that describes what’s on the page in language a real person would search. Keep it under about sixty characters or Google will truncate it in the results. If you’re using Rank Math or Yoast, the title tag field is on every page and post — fill it in.
3. Missing or auto-generated meta descriptions
The meta description is the snippet of text under the blue link in search results. It doesn’t affect rankings directly — Google has confirmed this — but it heavily affects click-through rate, which is the whole point of ranking in the first place.
If you don’t write a meta description, Google picks one. Sometimes it picks well. Often it picks the first 155 characters of the page, which on a service page is usually a generic intro paragraph or a cookie banner.
What good looks like. A meta description should describe what’s on the page, who it’s for, and ideally give the reader a reason to click. Around 150 characters. No keyword stuffing — it’s a sales line, not a signal.
A bad one: “Welcome to our website. We provide professional services to businesses in Toronto and the surrounding area. Contact us today for more information.”
A better one: “Custom WordPress builds for agencies and B2B companies in Ontario. Clean code, baked-in SEO, no page builder bloat. See recent work and pricing.”
How to fix. Write one for every page that gets organic traffic — service pages, key blog posts, the homepage, the contact page. The ones that don’t get organic traffic don’t matter.
4. Images with no alt text, or alt text that’s stuffed with keywords
Alt text serves two audiences. People using screen readers, who hear it read aloud in place of the image. And search engines, which use it to understand what the image shows and what the surrounding content is about.
The mistakes I see are usually one of two extremes. Either alt text is missing entirely — WordPress doesn’t enforce it, and editors don’t fill it in — or it’s stuffed with keywords that have nothing to do with the image, in the hope that this somehow helps SEO. It doesn’t.
What good looks like. Alt text describes the image, plainly, in a sentence. If the image is decorative — a divider, a background pattern — it can be left blank (an explicitly empty alt="" attribute, which tells screen readers to skip it).
A bad one: alt="seo toronto wordpress developer best agency 2026"
A better one: alt="Bar chart showing organic traffic doubling between January and June 2025"
How to check. Run a crawl in Screaming Frog and look at the Images tab — it lists every image and its alt text. Or use the Web Accessibility Evaluation Tool (WAVE) on a single page.
How to fix. Add alt text to every meaningful image on the site, working from the most-trafficked pages down. Going forward, make filling in alt text part of the content publishing process — your CMS can be configured to prompt for it.
5. Internal links that say “click here”
When you link from one page to another, the text of the link — the anchor text — is one of the strongest signals search engines use to understand what the linked page is about. A link that says “WordPress SEO services” passes the meaning of that phrase to the linked page. A link that says “click here” passes nothing.
This is a free win that most sites give up. Every internal link is an opportunity to tell Google what the linked page is for. “Click here” wastes it.
How to fix. When you write internal links, describe what’s on the page you’re linking to. “See our WordPress SEO services” instead of “Click here to see our SEO services”. Don’t overdo it — anchor text stuffing is its own problem — but make every link earn its place.
6. Pages trying to rank for multiple unrelated topics
One of the more common WordPress SEO mistakes I see on older sites is the “kitchen sink” page — a single page that tries to cover three or four loosely related services because someone, at some point, didn’t want to make a separate page for each.
The result is a page that ranks for nothing in particular. Search engines work best with one page per topic, where the topic is clear, the content is focused, and the page is the obvious answer to a specific query.
How to spot it. Look at the page’s organic landing report in Google Search Console. If a page is showing up for ten different unrelated queries with low click-through on each, it’s trying to be too many things at once. If it ranks on page two or three for several terms but page one for none, that’s the same signal.
Split vs consolidate. The general rule: if the topics are genuinely distinct, split into separate pages. If you have multiple pages competing for the same intent, consolidate them into one strong page and redirect the others. The decision-led version of this is covered in more depth in SEO tasks vs SEO decisions — most sites benefit from fewer, better pages, not more pages.
7. Thin pages left indexed
WordPress generates a lot of pages you never asked for. Tag archives. Author archives. Date archives. Attachment pages for every image. Thank-you pages after form submissions. Most of these have little or no unique content, but unless you tell search engines otherwise, they get indexed alongside your real pages.
The cost isn’t catastrophic but it’s real. Each thin page dilutes the site’s overall quality signal. Google has been increasingly clear that low-quality pages on a site can affect how the site as a whole is treated.
How to check. In Google Search Console, look at the Pages report. Click “Indexed” and scan the list. Pages like /tag/marketing/, /author/admin/, /2018/03/, and /thank-you/ are the usual suspects. Anything that’s indexed but shouldn’t be ranking for anything is a candidate for noindex.
How to fix. In Rank Math or Yoast, you can set tag archives, author archives, date archives, and attachment pages to noindex with a single setting. For thank-you pages and other one-off URLs, set them to noindex individually. Don’t delete the pages — they still need to work for users — just tell search engines not to index them.
8. No schema markup at all
Schema is structured data — code added to a page that tells search engines exactly what the page represents. A service. An organisation. An article. A person. A FAQ.
Most WordPress sites have none of it, or have whatever Yoast adds by default and nothing else. This isn’t a ranking factor in the traditional sense, but it’s increasingly important for two reasons. First, it’s what generates rich results in search — the star ratings, FAQ accordions, sitelinks, and other extras that make a result stand out. Second, it’s a major signal for AI search tools like ChatGPT and Perplexity, which rely on structured data to confidently cite a source.
What basic schema looks like for a service business. Organisation schema on the homepage, describing who you are, where you’re based, and how to contact you. Service schema on each service page, describing what the service is. Article schema on blog posts. FAQ schema on any page with a Q&A section.
How to fix. Rank Math and Yoast both have schema modules — Rank Math’s is more comprehensive on the free tier. Configure the schema for your page types once, and it applies automatically to every page of that type going forward. Then validate a few pages in Google’s Rich Results Test to confirm it’s working.
9. Changing URLs without redirects
This is the silent ranking killer. A page ranks well. Someone — a developer, a marketer, a CMS migration — changes the URL. The old URL now returns a 404. Within a few weeks, the ranking is gone, the backlinks point to a dead page, and nobody can quite remember when the traffic disappeared.
It happens on almost every WordPress site I audit. Sometimes it’s during a redesign. Sometimes it’s because someone “tidied up” the page slugs. Sometimes it’s because the site was migrated to a new domain or a new permalink structure and the redirects weren’t set up.
How to prevent it. Two things. First, decide your URL structure at the start of a build and stick to it. Service pages, blog posts, category structure — these decisions should be made once, deliberately, and lived with. Second, when URLs do have to change (and sometimes they do), always set up a 301 redirect from the old URL to the new one. The Redirection plugin handles this for free.
How to check whether it’s already happened. In Google Search Console, look at the Pages report under “Not found (404)”. If there are URLs there that used to have traffic, set up redirects to the most relevant live page. Don’t just redirect everything to the homepage — Google treats that as a soft 404 and ignores it.
10. Treating SEO as a one-time job
This is the mistake that contains all the others. SEO isn’t something you do once when the site launches and then stop thinking about. Search results change. Competitors update their pages. Google updates its ranking models. Content that ranked in 2023 may not rank in 2026 if nobody has touched it.
The fix isn’t constant tinkering. It’s the opposite — a maintenance mindset. Once or twice a year, look at the pages that bring in organic traffic and ask: is this still the best version of this page? Is the information current? Are the internal links still relevant? Does the title still match what the page does?
For pages that aren’t bringing in traffic, the question is different: should this page still exist? Sometimes the right answer is to update it. Sometimes it’s to consolidate it into another page and redirect. Sometimes it’s to noindex it and let it quietly serve its purpose for the users who land on it directly.
The sites that perform well in search over the long run are the ones where someone owns this maintenance — not as a project, but as a habit.
Where to learn more
If you want to go deeper on any of this, the On-Page SEO for Website Owners course covers exactly this territory in detail — twenty-seven lessons working through the on-page SEO mistakes above and the fixes for each, written for site owners and marketing managers rather than developers.
For the related context: why WordPress SEO starts at the build is the case for getting these decisions right before launch, and SEO tasks vs SEO decisions is about why these mistakes keep happening even on sites where someone is doing the work.
If you’d rather have someone audit your site and fix the problems for you, that’s what my WordPress SEO service is for. Most of the fixes above take less time than identifying which ones apply to your site in the first place.
FAQ
How long does it take to fix on-page SEO mistakes on a WordPress site?
Most individual fixes — alt text, meta descriptions, internal anchor text — take minutes per page. The work is in identifying which pages need attention and doing it consistently across the site. A small site (under fifty pages) can be audited and fixed in a day or two. A larger site is usually a multi-week project, but most of the impact comes from fixing the top twenty or thirty pages.
Will fixing these mistakes improve my rankings? It depends what’s holding the site back. If your title tags are generic and your pages are competing with themselves for the same keywords, fixing these things can move rankings meaningfully. If your site has deeper problems — thin content, no authority, technical performance issues — on-page fixes alone won’t solve them. On-page SEO is one layer of the work, not all of it.
Do I need a developer to fix these on-page SEO mistakes?
Most of them, no. Title tags, meta descriptions, alt text, internal anchor text, and noindex settings can all be handled by anyone with editor access and Rank Math or Yoast installed. Heading hierarchy and URL changes sometimes need template-level work, which is where a developer comes in.
What’s the difference between on-page SEO and technical SEO?
On-page SEO is everything on the page itself — content, headings, meta tags, internal links, images. Technical SEO is everything that affects how search engines crawl and render the site — site speed, mobile rendering, structured data, sitemap, robots.txt, indexation settings. The two overlap, but on-page is what most site owners can fix themselves; technical usually needs a developer.
Is schema markup worth setting up if I’m using Rank Math or Yoast?
Yes. The defaults are a starting point but they’re rarely complete. Service schema on service pages, FAQ schema on FAQ sections, and Article schema on posts all need to be configured deliberately. The work takes an afternoon and is increasingly important for AI search tools, which rely on schema to confidently cite sources.