Coding SEO
What technical SEO looks like with nothing between you and the HTML — no theme, no plugin, no abstraction layer.
Why hand-code any of this?
WordPress and its plugins are convenient precisely because they generate this markup for you. Building it by hand once is what makes that convenience legible — you can see exactly which line of HTML a plugin setting eventually produces.
What lives in HTML vs. what doesn't
Some technical SEO controls are pure markup; others require server or hosting configuration that no amount of HTML can substitute for:
- In HTML: title, meta description, canonical link, Open Graph tags, robots meta tag, structured data (JSON-LD), semantic headings, image
alt/width/height. - Not in HTML: HTTP status codes, redirects, HTTP security headers, compression, and caching — these live at the server or CDN layer.
Example: a complete, minimal <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Technical SEO Basics | SEO Practice Lab</title>
<meta name="description" content="A practical introduction to technical SEO.">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://seopracticelab.example/blog/technical-seo-basics/">
The one JavaScript rule that matters most
Anything a search engine needs to see — navigation links, article content, pagination — exists as real HTML on this site, not something injected by JavaScript after the page loads. JavaScript here is limited to small UI behavior: the mobile menu toggle, the footer's copyright year, and a couple of form-status messages.