cd /news/developer-tools/seo-for-developers-a-practical-check… Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-27388] src=dev.to β†— pub= topic=developer-tools verified=true sentiment=Β· neutral

SEO for Developers: A Practical Checklist That Actually Helps Pages Rank

A developer published a practical SEO checklist aimed at helping developers ensure their websites are crawlable and rank well in search engines. The checklist covers foundational elements like robots.txt, sitemaps, canonical URLs, title tags, headings, content quality, and internal linking, emphasizing that technical soundness alone is insufficient without addressing user intent.

read7 min publishedJun 15, 2026

Most SEO advice aimed at developers is either too vague or weirdly obsessed with tiny details that barely matter.

This tutorial is the checklist I wish more developers used before launching a website.

It is not about gaming Google. It is about making sure search engines can:

If you build websites for clients, SaaS products, local businesses, or your own projects, this will keep you from shipping a technically nice site that search engines quietly ignore.

Before worrying about keywords, schema, or blog posts, check the boring foundation.

If Google cannot crawl the site, nothing else matters.

robots.txt

Your robots.txt

file should not block important pages.

A basic version looks like this:

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

Do not ship something like this to production:

User-agent: *
Disallow: /

That blocks the entire site.

It happens more often than people admit.

Your sitemap should be available at:

https://example.com/sitemap.xml

A good sitemap includes your important indexable pages:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-01-15</lastmod>
  </url>
  <url>
    <loc>https://example.com/services/</loc>
    <lastmod>2026-01-15</lastmod>
  </url>
</urlset>

Do not include:

A sitemap is not a magic ranking button. It is a clean list of pages you actually want search engines to consider.

Duplicate versions of the same page can split signals and confuse crawlers.

Pick one canonical version of the site:

https://example.com

Then make sure these redirect properly:

http://example.com
http://www.example.com
https://www.example.com

They should all point to the preferred version.

For each page, add a canonical tag:

<link rel="canonical" href="https://example.com/services/" />

Canonical tags are especially important when pages can be reached through multiple URLs.

Examples:

/services
/services/
/services?ref=nav

The canonical tells search engines which version should count.

Your title tag is one of the most important on-page SEO elements.

It should explain the page clearly and give people a reason to click.

Bad:

<title>Home</title>

Also bad:

<title>SEO SEO Company Best SEO Services SEO Agency Near Me</title>

Better:

<title>SEO Services for Local Businesses | Example Agency</title>

For local service pages, this structure usually works well:

Primary Service in City, State | Brand Name

Example:

<title>Plumbing Repair in Ogden, UT | Example Plumbing</title>

Keep it specific. Keep it readable.

The H1 should describe the main topic of the page.

Bad:

<h1>Welcome</h1>

Better:

<h1>Website Design and SEO for Local Businesses</h1>

For most pages, use one H1.

Then use H2s and H3s to structure the rest of the content:

<h1>Website Design and SEO for Local Businesses</h1>

<h2>What We Help With</h2>
<h3>Website Design</h3>
<h3>Local SEO</h3>
<h3>Google Ads</h3>

<h2>Who We Work With</h2>
<h2>Frequently Asked Questions</h2>

Headings are not just visual styling. They help users and crawlers understand the page.

This is where a lot of technically solid sites fail.

A page can load fast, have schema, pass Lighthouse, and still not rank because it does not answer the searcher’s actual question.

Before building a page, ask:

For a local service page, users usually want:

A thin page with 200 words and a contact form usually will not cut it.

Internal links help search engines discover pages and understand which pages matter most.

Do not only link from the header and footer.

Add contextual links inside page content.

Example:

<p>
  We also help local businesses improve their visibility with
  <a href="/local-seo/">local SEO services</a>
  after the new website launches.
</p>

Good internal links use descriptive anchor text.

Bad:

<a href="/services/">Click here</a>

Better:

<a href="/services/">website design and SEO services</a>

A simple internal linking structure for a service business might look like this:

Home
β”œβ”€β”€ Services
β”‚   β”œβ”€β”€ Website Design
β”‚   β”œβ”€β”€ Local SEO
β”‚   └── Google Ads
β”œβ”€β”€ Industries
β”‚   β”œβ”€β”€ HVAC Marketing
β”‚   β”œβ”€β”€ Plumbing Marketing
β”‚   └── Contractor Marketing
β”œβ”€β”€ Blog
└── Contact

Important pages should not be buried five clicks deep.

Images are one of the easiest ways to ruin performance.

Use:

Bad file name:

IMG_4829.jpg

Better:

ogden-roof-repair-before-after.webp

Example image markup:

<img
  src="/images/ogden-roof-repair-before-after.webp"
  alt="Before and after roof repair on a home in Ogden"
  width="1200"
  height="800"
  ="lazy"
/>

Alt text should describe the image. Do not keyword-stuff it.

Bad:

alt="best roof repair Ogden Utah roofing company roof contractor"

Better:

alt="Roof repair crew replacing damaged shingles on an Ogden home"

Performance is not just an SEO checkbox. It affects conversions too.

Pay attention to:

Targets:

LCP: under 2.5 seconds
INP: under 200 milliseconds
CLS: under 0.1

Common fixes:

A beautiful site that takes six seconds to load is not beautiful. It is expensive decoration.

Schema markup helps search engines understand entities on the page.

For local businesses, LocalBusiness

schema is usually useful.

Example:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Example Business",
  "url": "https://example.com",
  "telephone": "+1-801-555-0123",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "Ogden",
    "addressRegion": "UT",
    "postalCode": "84401",
    "addressCountry": "US"
  },
  "areaServed": [
    "Ogden",
    "Layton",
    "Clearfield",
    "Roy"
  ]
}
</script>

For articles, use Article

or BlogPosting

.

For FAQs, only use FAQ schema if the questions and answers are visible on the page.

Do not add fake reviews, fake ratings, fake locations, or schema that does not match the page content.

That is not SEO. That is asking for a mess.

Open Graph tags control how pages look when shared on social platforms.

Basic example:

<meta property="og:title" content="Website Design and SEO for Local Businesses" />
<meta property="og:description" content="Practical website design, local SEO, and Google Ads support for service businesses." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://example.com/" />
<meta property="og:image" content="https://example.com/images/og-image.jpg" />

<meta name="twitter:card" content="summary_large_image" />

This may not directly improve rankings, but it can improve click-through and sharing.

That matters.

Old SEO was often about cramming one keyword onto one page.

Modern SEO works better when your site covers a topic well.

Example for a local HVAC company:

/ac-repair/
/furnace-repair/
/heat-pump-installation/
/indoor-air-quality/
/service-areas/ogden/
/service-areas/layton/
/blog/how-often-should-i-service-my-furnace/
/blog/why-is-my-ac-blowing-warm-air/

Each page should have a distinct purpose.

Avoid making five pages that all target basically the same thing:

/best-seo-services/
/top-seo-services/
/affordable-seo-services/
/professional-seo-services/
/seo-company/

That usually causes keyword cannibalization.

One strong page beats five weak ones.

Search engines and users both need reasons to trust the page.

Useful trust signals include:

For local businesses, consistency matters.

Your name, address, and phone number should match across:

Small inconsistencies are not always catastrophic, but clean data helps.

robots.txt

allows important pagesnoindex

After launch, submit the sitemap in Google Search Console.

Then monitor:

SEO does not end at launch. Launch is just when the real data starts.

Week 1: Check indexing and crawl errors
Week 2: Review Search Console impressions
Month 1: Improve pages getting impressions but few clicks
Month 2: Add supporting content and internal links
Month 3: Review rankings, conversions, and content gaps

Build pages that search engines can access, understand, trust, and confidently show to users.

That means your job is not just clean code.

It is clean structure, useful content, fast pages, clear metadata, smart internal links, and fewer technical surprises.

If you want a practical starting stack:

That alone puts you ahead of a shocking number of websites.

SEO is not magic. It is mostly removing confusion.

Confusion for crawlers.

Confusion for users.

Confusion in site structure.

Confusion in page intent.

Confusion in technical signals.

Remove enough of that, and rankings become a lot less mysterious.

The sites that consistently perform well in search are usually not doing anything revolutionary. They are simply making it easy for search engines to crawl the site, understand the content, and trust that the page provides value to users.

Focus on strong fundamentals:

For businesses looking to improve their websites, local search visibility, or digital marketing performance, Techpros Marketing, a digital marketing, SEO, and web development agency, publishes practical resources focused on SEO, web development, local search, and lead generation.

Ship clean. Measure what happens. Improve based on real data.

── more in #developer-tools 4 stories Β· sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/seo-for-developers-a…] indexed:0 read:7min 2026-06-15 Β· β€”