The Developer's SEO Checklist
A practical, code-level SEO checklist for developers: crawling and indexing, metadata, structured data, performance, internal linking, and monitoring.
SEO advice usually arrives as a content strategy document. For developers, most of the wins are much closer to the code: a page that renders clean HTML, declares one canonical URL, loads fast, and links to its neighbors. This checklist covers the technical side, in the order problems usually appear.
Scope
This is a technical checklist, not a growth strategy. It assumes the content is worth ranking, and focuses on removing the engineering reasons it might not.
Crawling and Indexing
A page that cannot be crawled cannot rank.
- Keep important content in server-rendered HTML. If it appears only after hydration, treat it as invisible.
- Use
robots.txtto block noise (admin, search result pages), never to hide content you want indexed. - Keep staging behind authentication or a
noindexheader. A password-protected page is not indexed because it cannot be fetched; a staging site with no protection is a duplicate-content problem. - Generate a sitemap and reference it from
robots.txt. - Return proper status codes:
301for permanent moves,404for gone,410if you mean it. - Avoid orphan pages. If nothing links to a page, it is unlikely to be discovered.
Metadata and Canonicals
Every indexable page needs three things:
<title>Unique, descriptive page title</title>
<meta name="description" content="One sentence that earns the click." />
<link rel="canonical" href="https://example.com/the-one-true-url/" />
- One canonical URL per piece of content. Query parameters, trailing-slash variants, and paginated archives are the usual offenders.
- The
<h1>should match the topic; the<title>can add context or the brand. - Open Graph and Twitter card tags should point at a 1200×630 image.
noindex, followon thin archives or filtered listing pages you do not want ranked.
Content Structure
Search engines read the outline, not just the words.
- One
<h1>per page, then a logicalh2/h3hierarchy. Skipping levels makes the outline harder to parse. - Descriptive link text: “read the VPS guide,” not “click here.”
- Images with meaningful
alttext when they carry information, and emptyalt=""when they are decorative. - Tables and lists where the content is tabular or list-shaped.
- Short, human-readable URLs.
Structured Data
JSON-LD helps search engines understand what the page is, which can unlock rich results:
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "The Developer's SEO Checklist",
"datePublished": "2026-09-08",
"dateModified": "2026-09-08",
"author": { "@type": "Person", "name": "Dragos" },
"image": "https://example.com/card.png"
}
Add BreadcrumbList for navigation and WebSite on the homepage. Validate the output; broken markup is worse than none.
Performance
Core Web Vitals are a ranking signal and a user-experience signal at the same time.
- Ship the LCP image with
fetchpriority="high"and explicit dimensions. - Keep JavaScript off the critical path; hydrate lazily.
- Reserve space for images, embeds, and banners to protect CLS.
- Cache static assets with long-lived fingerprints, and serve them compressed.
- Test on a throttled, mid-range device, not a developer laptop.
Internal Linking
Internal links are the only ranking signal entirely under your control.
- Link from every post to its pillar or index page, and from the index back to the posts.
- Add “related posts” based on real relevance, not a random shuffle.
- Fix orphan pages the moment they appear in a crawl.
- Keep anchor text descriptive and varied; exact-match repetition looks manufactured.
Monitoring
Set up feedback before you need it:
- Google Search Console: coverage, queries, and Core Web Vitals.
- Server logs or analytics: crawling, 404s, and which posts actually get read.
- Uptime and certificate expiry alerts.
- A monthly check of titles, descriptions, and canonical tags on new templates.
The Checklist
- Important content is server-rendered HTML
- One canonical URL per page
- Unique title and meta description
- Logical heading hierarchy
- Sitemap generated and referenced
- robots.txt blocks the right things
- JSON-LD for articles, breadcrumbs, and the site
- LCP image prioritized and sized
- Images have width/height and sensible alt text
- Internal links point both ways
- 404s and redirects monitored
- Search Console connected and checked monthly
Common quick wins when a page still will not index
Check these in order: the page returns 200, it is not blocked by robots.txt or a meta robots tag, it is linked from somewhere crawlable, the canonical points at itself, and the content actually differs from other pages on the site. Most “not indexed” reports resolve at one of those five steps.
What not to optimize
Do not chase keyword density, do not create pages for every query permutation, and do not buy links. Those tactics either do nothing or actively harm the site. Spend the effort on content and page speed instead.
Conclusion
Technical SEO is a small number of habits applied consistently: clean HTML, one canonical, honest metadata, fast pages, and links between related content. Put this checklist in the pull request template and the boring parts take care of themselves.