Performance & SEO
Practical Website Performance Wins That Also Help SEO
Images, fonts, caching and semantic HTML: the unglamorous fixes that make pages feel faster and easier for search engines to understand.
Speed and search visibility are closely linked. Faster pages keep visitors around, and clean, well-structured markup helps search engines understand what a page is about. These are the fixes I check first on any site, whether it runs on Next.js or WordPress.
1. Treat images as the biggest budget item
Images are usually the heaviest part of a page.
- Serve modern formats (WebP or AVIF) at the size they are actually displayed.
- Always set width and height (or an aspect ratio) so the layout does not jump.
- Lazy-load anything below the fold, and prioritise only the main hero image.
In Next.js, the Image component handles resizing and lazy loading. On WordPress, a caching and optimisation plugin such as WP Rocket covers much of the same ground.
2. Load fonts without layout shift
Self-host fonts or use a framework helper so they are served from your own domain, and limit yourself to the weights you really use. next/font does this automatically and avoids the flash of re-flowing text.
3. Cache aggressively, invalidate deliberately
Static assets should be cached for a long time with hashed filenames. HTML can be cached too when content changes predictably. Page caching alone often turns a sluggish CMS site into a fast one.
4. Write semantic HTML
Search engines and screen readers both rely on structure.
<main>
<article>
<h1>One clear page title</h1>
<h2>Section heading</h2>
<p>Content…</p>
</article>
</main>One h1 per page, headings in order, real button and a elements, and descriptive alt text all count.
5. Get metadata right on every page
Every page deserves a unique title and description, a canonical URL and Open Graph tags for link previews. SEO plugins such as Yoast SEO and Rank Math make this manageable for editors; in Next.js, the Metadata API keeps it next to the page code.
6. Ship less JavaScript
Every kilobyte of JavaScript has to be downloaded, parsed and executed. Render on the server where possible, split heavy widgets into lazily loaded chunks, and question every third-party script.
Performance work is rarely one big win. It is a dozen small ones that add up.
Measure before and after each change — Lighthouse and real-user Core Web Vitals data will tell you which of these fixes matter most for your site.