Want to Accelerate the Growth of Your Business with AI? Talk to Us
Technical SEO for a WordPress site in one afternoon
· Updated

Most of the technical SEO problems on a small WordPress site can be found in one crawl and fixed before the end of the working day.

The site in question has perhaps 50 to 300 pages, a theme someone bought in 2021, a dozen plugins and nobody who has looked at Search Console in months. That describes most of the sites that land with us.

This is the afternoon we would run on such a site, with a time box against each job. The order matters: the first jobs stop Google seeing the site at all, the middle jobs stop Google wasting what it sees, and the last job makes pages load faster.

After that comes a list of things people spend hours on that Google has said, in writing, it ignores. Every claim about what Google does is linked to the Search Central page that says it.

The free technical SEO tools you need before 1pm

You need three free tools and a WordPress admin login. The crawler is the Screaming Frog SEO Spider, a desktop program from a company in Henley-on-Thames. The free version crawls up to 500 URLs and includes broken link detection, redirect reporting, page title analysis and meta robots checks. The paid licence is £199 a year and only removes the crawl cap.

The other two are Google's: Search Console for what Google has indexed and refused, and PageSpeed Insights for Core Web Vitals. If the site has more than 500 URLs, crawl it anyway. The problems below tend to be site-wide, so a sample shows them.

1.00pm to 1.20pm: crawl the site

Put the homepage URL into Screaming Frog, press Start, and make a cup of tea. While it runs, open Search Console and look at the Pages report under Indexing. Note the "Not indexed" count and the reasons listed.

When the crawl finishes, do not start fixing. Export the Internal tab so you have a record of the site before you touched it. The rest of the afternoon works through the crawl, tab by tab.

1.20pm to 1.30pm: noindex mistakes

The first check is whether any page you want in Google carries a noindex tag. In Screaming Frog, open the Directives tab and filter by Noindex. On a healthy site this shows tag archives, author pages, maybe the search results page. If it shows your service pages or your best blog posts, that is the only problem that matters today.

Google is blunt about what the tag does. When Googlebot sees it, "Google will drop that page entirely from Google Search results", whether or not other sites link to it.

The usual WordPress cause is the "Discourage search engines from indexing this site" box under Settings, then Reading. Developers tick it on a staging site and forget it at launch. Since WordPress 5.3 that setting outputs a "noindex, nofollow" robots meta tag across the whole site.

The second cause is an SEO plugin's per-post setting, answered "No" by accident. Untick, save, and request a recrawl through Search Console.

1.30pm to 1.40pm: robots.txt

The second check is that robots.txt is not blocking anything Google needs. Load yoursite.co.uk/robots.txt in a browser. A standard WordPress file disallows /wp-admin/ and nothing else. If you see "Disallow: /" the site is telling every crawler to stay out.

Two things people get wrong here. Google says a robots.txt file "is not a mechanism for keeping a web page out of Google"; a blocked page can still be indexed from links on other sites.

And a page blocked in robots.txt cannot be noindexed, because the crawler never fetches it and so never sees the noindex rule. If you want a page gone, let Google crawl it and give it noindex.

1.40pm to 2.10pm: broken internal links

Thirty minutes goes on links inside the site that point at pages that no longer exist. In Screaming Frog, open the Response Codes tab and filter for Client Error (4xx). The Inlinks pane at the bottom shows which pages carry each broken link.

Google's guidance: "Every page you care about should have a link from at least one other page on your site", with anchor text that describes the page. A link that returns a 404 does neither. Getting internal links right is also how a small business site structure passes authority to the pages that sell.

Fix them at the source: edit the post or the menu and point the link at the page that replaced the old one. If the old page had external links coming in, add a 301 redirect too.

Do not install a plugin that silently redirects every 404 to the homepage. Google treats a redirect to an unrelated page as a soft 404, and it hides the problem from you.

2.10pm to 2.30pm: redirect chains

The next twenty minutes is for links that redirect more than once before reaching a page. In Screaming Frog, go to Reports, then Redirects, then Redirect Chains. A chain looks like http to https to the non-www version to the trailing slash version, four hops for one click.

Google's crawlers follow up to 10 redirect hops, so a chain of three or four will not break indexing. It does slow every visit, and each hop is a place for a future mistake.

Edit the internal link so it points straight at the final URL, and make the host-level redirects (http to https, www or not) happen in one step. Use 301 or 308 for permanent moves. Google treats the target of a permanent redirect as the canonical URL, while a temporary redirect keeps the source in search results.

2.30pm to 3.00pm: duplicate page titles

Half an hour on titles, because this is the fix most likely to show in the results page within weeks. In Screaming Frog, open the Page Titles tab and filter by Duplicate. WordPress produces these two ways: a theme that sets every title to the site name, and plugin templates that build the same title for every product in a category.

Google's title guidance asks for "distinct text that describes the content of the page" in every title element, and says to avoid boilerplate. When titles are identical or half-empty, Google rewrites the title link itself from headings or page text, and the result is rarely what you would have chosen.

Work from the pages that earn money first. Say what the page is, put the specific detail before the site name, and leave the tag archives alone. Do not lose time trimming long titles on pages nobody searches for.

3.00pm to 3.15pm: canonicals on paginated pages

Fifteen minutes on a mistake that SEO plugins make on your behalf. Open the Canonicals tab in Screaming Frog and look at the blog pages /page/2/, /page/3/ and so on, plus any WooCommerce category pages that paginate. If their canonical points to page 1, that is wrong.

Google's ecommerce guidance says: "Don't use the first page of a paginated sequence as the canonical page. Instead, give each page its own canonical URL." Pointing page 2 at page 1 tells Google the posts on page 2 are duplicates, and they can quietly drop out. The old rel="next" and rel="prev" tags are no longer used by Google, so do not add them back.

While you are in the tab, check that normal pages carry a canonical pointing to themselves, which Google recommends and both Yoast and Rank Math do by default.

3.15pm to 3.25pm: XML sitemap submitted

Ten minutes to confirm Google has a sitemap it can read. WordPress generates one at /wp-sitemap.xml, and Yoast or Rank Math replace it with /sitemap_index.xml. Open whichever exists in a browser, then go to Search Console, open Sitemaps, and submit it if it is not already there.

Google says a site of "about 500 pages or fewer" whose pages are properly linked usually does not need one. Submit it anyway: the Sitemaps report then tells you when Google last fetched it and whether it found errors. Check that it does not list pages you have just noindexed, which sends Google two contradictory messages.

3.25pm to 3.45pm: HTTPS and mixed content

Twenty minutes on the padlock. In Screaming Frog, the Security tab lists pages that load any resource over plain http: an image uploaded before the SSL certificate went on, a font from an old CDN, a tracking script hard-coded in the theme.

Browsers now automatically upgrade images, audio and video to https where the secure version exists, and block scripts and iframes that do not. The visible symptom is a missing image or broken embed, plus a "Not secure" label in the address bar.

Google has counted HTTPS as a ranking signal since 2014, describing it then as "a very lightweight signal" affecting fewer than 1% of queries. The reason to fix it is the label, not the ranking.

On WordPress the fix is a database search and replace of http://yoursite.co.uk for https://yoursite.co.uk, which Better Search Replace or WP-CLI will do.

3.45pm to 4.35pm: Core Web Vitals and image sizes

The last fifty minutes goes on speed, because it is the slowest job with the least certain pay-off. Run the homepage and your three most important pages through PageSpeed Insights and read the field data at the top, not the lab score underneath.

Google measures three things. Largest Contentful Paint should happen within 2.5 seconds, Interaction to Next Paint under 200 milliseconds, and Cumulative Layout Shift under 0.1.

Google says Core Web Vitals "are used by our ranking systems", and on the same page says chasing a perfect score for SEO "may not be the best use of your time". Get the three metrics to green and stop.

On a WordPress site, the LCP failure is almost always one image. Google notes that "images are often the largest contributor to overall page size". Screaming Frog's Images tab, filtered to over 100KB, gives you the list.

Resize hero images to the width the theme displays, convert them to WebP, and set width and height attributes so the layout does not jump while they load. That one task usually clears LCP and CLS together.

The afternoon on one page

Fix Time What it changes
Crawl and baseline export 20 min Nothing yet; gives you the list
Noindex mistakes 10 min Pages invisible to Google become visible
robots.txt 10 min Stops a blanket block or a pointless one
Broken internal links 30 min Readers and crawlers stop hitting 404s
Redirect chains 20 min Faster clicks, fewer places for a future break
Duplicate page titles 30 min Results page shows your title, not Google's rewrite
Canonicals on paginated pages 15 min Page 2 onwards stays indexed
XML sitemap submitted 10 min Search Console reports fetch errors to you
HTTPS mixed content 20 min Padlock back, broken images and embeds fixed
Core Web Vitals and images 50 min Three metrics green, mostly from image sizes

That is three hours and 35 minutes, with the rest for recrawl requests. If you only have an hour, do the first four rows.

The checks that eat an afternoon and change nothing

Some technical SEO advice refuses to die, and each item below has a Google page that contradicts it. On a retainer these belong with the other SEO services that are theatre.

Meta keywords. Google's list of supported tags is explicit.

The meta-keyword tag is not used by Google Search, and it has no effect on indexing and ranking at all. (Google Search Central)

Do not fill the field in, and do not pay anyone to.

Exactly one H1. The SEO Starter Guide says that from a Google Search perspective "it doesn't matter if you're using them out of order", and that there is no ideal number of headings on a page. Use one H1 because it helps screen readers, then stop counting. A theme that outputs two H1s is not costing you rankings.

Schema on every page. Structured data makes a page eligible for rich results, and Google says it "might" encourage clicks, with no promise that it will. For Google's AI features it is not required at all; we tested what schema markup does for AI search separately. Let the SEO plugin add Article markup to posts and Organization to the homepage, and skip the plugin that adds FAQ and HowTo blocks to every page.

Word count. Google says "there's no magical word count target, minimum or maximum", and its AI search guidance repeats that there is no ideal page length. A 400-word page that answers the question beats the 2,000-word one that circles it.

When one afternoon is not enough

The afternoon above fixes the site that exists. If the crawl stopped at 500 URLs and the Pages report shows thousands of "Crawled, currently not indexed" entries, or WooCommerce filter URLs are multiplying in the index, the job is bigger than a time box. That multiplying-URL problem is particular to ecommerce sites, where faceted navigation can spin up thousands of near-duplicate pages on its own. A bloated, low-value archive is often a content pruning job rather than a technical one.

The rule we use: if the same crawl error repeats across more than a fifth of the pages, stop fixing pages and fix the template or plugin that generates them. Everything else can wait for next month's afternoon.

Where technical work sits in a full retainer is covered in our guide to what a UK SEO agency should cost and deliver. If you would rather hand the crawl to someone who does this every week, our technical SEO service starts with this SEO audit. Get in touch with the site URL to see what the first crawl finds.

Share this post
Vijay Rathee
Vijay Rathee
Co-Founder

Open your inbox right now. Count the unread emails. If you are like most people, there are dozens of marketing emails sitting there, untouched, slowly sliding toward the archive button. Not because email marketing is broken.

View Bio