WordPress is SEO-friendly out of the box — clean permalinks, semantic HTML, and a sane document structure. The gap between a default install and a well-optimized site comes down to a handful of deliberate habits, not exotic tricks.
Permalinks and URL structure
Set permalinks to /postname/ (Settings → Permalinks) instead of the default query-string format. Clean, descriptive URLs are easier for both users and crawlers to understand, and they don't change if you later restructure categories — which query-string URLs effectively force you to redo.
Titles and meta descriptions that earn the click
The <title> tag is still one of the strongest on-page signals, and the meta description — while not a ranking factor itself — directly affects click-through rate from the results page. Write both for the specific page, not a site-wide template. Front-load the primary keyword phrase naturally, and make the description an actual pitch for why someone should click, not a truncated first paragraph.
One clear heading hierarchy
Use exactly one <h1> per page (your post title, typically handled by the theme automatically), then a logical <h2>/<h3> structure for subsections. This isn't just for search engines — screen readers and users skimming the page rely on it too. Avoid skipping levels (h2 straight to h4) purely for font-size reasons; style headings with CSS, not by picking whichever heading level looks right.
Internal linking is underused
Every new post is an opportunity to link back to relevant older content, and to update older posts to link forward to it. This does two things: it distributes page authority through the site, and it gives crawlers a path to discover the new content faster. Don't rely on your XML sitemap alone to get pages indexed — internal links are a much stronger signal of importance.
Image optimization: alt text and file weight both matter
Alt text serves accessibility first and SEO second — describe what the image actually shows, don't keyword-stuff it. Separately, compress and correctly size images; large unoptimized images hurt Core Web Vitals, which is itself a ranking factor. Use WordPress's built-in responsive srcset output rather than hand-rolling image tags.
Structured data, used honestly
Schema markup (Article, Product, Review, FAQ, etc.) helps search engines understand content type and can unlock rich results. Most modern SEO plugins add this automatically for common content types — verify it validates with Google's Rich Results Test, and don't mark up content that isn't actually visible on the page; that's a guideline violation, not a hack.
XML sitemaps and robots.txt: get the basics right, then leave them alone
Make sure your sitemap is actually submitted in Search Console and that robots.txt isn't accidentally blocking assets or entire sections (a common mistake after a staging-to-production migration). Beyond that, these are largely "set correctly once" items, not ongoing optimization targets.
Content quality is still the foundation
None of the above compensates for thin, duplicate, or low-value content. Write for the person actually searching, answer the query completely, and don't publish a page whose only purpose is to target a keyword. Search engines have gotten much better at recognizing content written for algorithms rather than readers — and it shows in rankings.
The takeaway
On-page SEO on WordPress is mostly discipline, not tooling: clean URLs, honest titles and descriptions, a real heading structure, deliberate internal linking, optimized images, and content that's actually worth ranking. A plugin can automate the mechanics; it can't do the thinking for you.
