Common SEO Mistakes to Avoid
Even experienced developers make SEO mistakes. This lesson covers the most common issues and how to fix them.
Technical Mistakes
1. Blocking Crawlers
# Bad: Blocking everything
User-agent: *
Disallow: /
# Good: Only block what's necessary
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /
Check your robots.txt: Verify crawlers can access important pages.
2. Missing or Duplicate Titles
// Bad: Generic title
export const metadata: Metadata = {
title: 'Page',
}
// Good: Unique, descriptive title
export const metadata: Metadata = {
title: 'SEO Best Practices for Next.js | Your Site',
}
Every page needs a unique, descriptive title.
3. No Meta Description
// Bad: Missing description
export const metadata: Metadata = {
title: 'Product Page',
}
// Good: Compelling description
export const metadata: Metadata = {
title: 'Premium Running Shoes | Your Store',
description: 'Discover our collection of premium running shoes. Free shipping on orders over $50. Shop now for the best selection.',
}
4. Broken Canonical Tags
// Bad: Wrong canonical
export const metadata: Metadata = {
alternates: {
canonical: 'https://example.com/old-url', // Points to wrong page
},
}
// Good: Correct self-referencing canonical
export const metadata: Metadata = {
alternates: {
canonical: 'https://example.com/current-page',
},
}
5. Missing Alt Text
// Bad: No alt text
<Image src="/product.jpg" alt="" width={400} height={300} />
// Good: Descriptive alt text
<Image
src="/product.jpg"
alt="Red running shoes with white sole, side view"
width={400}
height={300}
/>
Content Mistakes
1. Thin Content
Pages with very little content often don't rank well.
Signs of thin content:
- Pages with only a few sentences
- Duplicate content across pages
- Auto-generated content without value
Solution: Provide comprehensive, valuable content that answers user questions.
2. Keyword Stuffing
Bad:
"Our SEO services provide the best SEO for your SEO needs.
Our SEO experts use SEO techniques for SEO success."
Good:
"Our search optimization services help your website rank higher.
Our experts use proven techniques to improve your visibility."
3. Ignoring Search Intent
Match content to what users actually want:
| Query | Intent | Content Type |
|---|---|---|
| "buy running shoes" | Transactional | Product page |
| "best running shoes 2024" | Commercial | Review/comparison |
| "how to clean running shoes" | Informational | How-to guide |
| "nike.com" | Navigational | Brand page |
4. Not Updating Old Content
Old content can become outdated and lose rankings.
Best practices:
- Review content annually
- Update statistics and examples
- Fix broken links
- Add new relevant information
Performance Mistakes
1. Unoptimized Images
// Bad: Large unoptimized image
<img src="/huge-photo.jpg" />
// Good: Optimized with next/image
<Image
src="/photo.jpg"
alt="Description"
width={800}
height={600}
quality={80}
/>
2. No Lazy Loading
// Images below the fold should lazy load (default in next/image)
<Image
src="/below-fold.jpg"
alt="Feature"
width={400}
height={300}
loading="lazy" // Default behavior
/>
// Above-fold LCP images should NOT lazy load
<Image
src="/hero.jpg"
alt="Hero"
width={1200}
height={600}
priority // Disables lazy loading
/>
3. Render-Blocking Resources
// Bad: Blocking script in head
<script src="/heavy-script.js" />
// Good: Load after page is interactive
<Script
src="/heavy-script.js"
strategy="afterInteractive"
/>
4. No Caching Strategy
// Implement proper caching
export const revalidate = 3600 // Cache for 1 hour
// Or use fetch caching
const data = await fetch(url, {
next: { revalidate: 3600 }
})
Mobile Mistakes
1. Not Mobile-Friendly
Google uses mobile-first indexing. Ensure your site works well on mobile:
- Responsive design
- Touch-friendly buttons (48px minimum)
- Readable text without zooming
- No horizontal scrolling
2. Intrusive Interstitials
Avoid popups that block content on mobile:
// Bad: Full-screen popup on page load
useEffect(() => {
showFullScreenPopup()
}, [])
// Good: Non-intrusive banner
<div className="fixed bottom-0 p-4 bg-blue-100">
<p>Subscribe to our newsletter</p>
<button>Subscribe</button>
<button>No thanks</button>
</div>
3. Different Content on Mobile
Mobile and desktop should have the same content. Don't hide important content on mobile.
Link Mistakes
1. Broken Internal Links
Regularly audit for 404 errors:
// Create a custom 404 page
// app/not-found.tsx
export default function NotFound() {
return (
<div>
<h1>Page Not Found</h1>
<p>The page you're looking for doesn't exist.</p>
<a href="/">Return Home</a>
</div>
)
}
2. Poor Internal Linking
// Bad: No context
<a href="/guide">Click here</a>
// Good: Descriptive anchor text
<a href="/seo-guide">Complete SEO guide for beginners</a>
3. Nofollow on Internal Links
// Bad: Nofollow on internal link
<a href="/important-page" rel="nofollow">Important Page</a>
// Good: Let PageRank flow internally
<a href="/important-page">Important Page</a>
Only use nofollow for:
- User-generated content
- Paid/sponsored links
- Untrusted external links
Structured Data Mistakes
1. Invalid JSON-LD
// Bad: Invalid JSON
const schema = {
'@context': 'https://schema.org',
'@type': 'Article',
// Missing required properties
}
// Good: Complete, valid schema
const schema = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: 'Article Title',
author: {
'@type': 'Person',
name: 'Author Name',
},
datePublished: '2024-01-15',
image: 'https://example.com/image.jpg',
}
2. Mismatched Data
Structured data must match visible content:
// Bad: Price in schema doesn't match page
const schema = {
'@type': 'Product',
offers: {
price: '29.99', // But page shows $39.99
},
}
SEO Audit Checklist
Run through this checklist regularly:
| Category | Check |
|---|---|
| Crawlability | robots.txt allows important pages |
| Crawlability | XML sitemap submitted and valid |
| Crawlability | No orphan pages |
| On-Page | Unique titles on all pages |
| On-Page | Meta descriptions present |
| On-Page | H1 tags used correctly |
| On-Page | Images have alt text |
| Technical | Canonical tags correct |
| Technical | Hreflang tags (if multilingual) |
| Technical | HTTPS enabled |
| Technical | Mobile-friendly |
| Performance | Core Web Vitals pass |
| Performance | Images optimized |
| Content | No thin/duplicate content |
| Links | No broken links |
| Links | Good internal linking |
Summary
In this lesson, you learned:
- Common technical SEO mistakes
- Content mistakes that hurt rankings
- Performance issues to avoid
- Mobile optimization requirements
- Link building best practices
- Structured data validation
- How to audit your site regularly
Congratulations on completing this SEO course! You now have the knowledge to build SEO-optimized Next.js applications.

