Broken Links
What This Means
Broken links (also called dead links) are hyperlinks that point to pages or resources that no longer exist or cannot be accessed, resulting in 404 errors or other error status codes. These can be internal links (pointing to pages on your own site) or external links (pointing to other websites).
Types of Broken Links
404 Not Found:
- Page has been deleted
- URL has been changed
- Page never existed (typo in link)
- Most common broken link type
500 Server Errors:
- Internal server error
- Server temporarily down
- Database connection failed
- Server misconfiguration
Other Error Codes:
- 403 Forbidden - Access denied
- 410 Gone - Permanently removed
- 503 Service Unavailable - Temporary issue
- Timeout - Server not responding
Redirect Chains:
- URL → 301 → 301 → 301 → Final page
- Multiple redirects slow loading
- Can break or cause timeouts
Impact on Your Business
User Experience:
- Frustration when clicking broken links
- Damaged trust in website quality
- Users may leave site entirely
- Professional credibility suffers
- Harder to navigate and find information
SEO Impact:
- Wastes crawl budget on dead pages
- Link equity lost from broken internal links
- External sites may remove links to you
- Signals poor site maintenance to Google
- Can indirectly hurt rankings
Link Equity:
- Broken internal links waste "link juice"
- Authority not passed to important pages
- Broken incoming links lose value
- Orphaned pages may not get indexed
Conversion Rates:
- Broken product links lose sales
- Broken CTAs prevent conversions
- Poor UX reduces engagement
- Users abandon broken workflows
How to Diagnose
Method 1: Google Search Console (Recommended)
- Log into Google Search Console
- Navigate to "Coverage" or "Page Indexing" report
- Click "Not found (404)" section
- Review list of URLs returning 404
- Check "Referring URLs" to see which pages link to them
What to Look For:
- High-value pages returning 404
- Recently broken links (weren't 404 before)
- Internal pages linking to 404s
- External sites linking to broken pages
- Patterns (whole sections deleted)
Method 2: Screaming Frog SEO Spider
- Download Screaming Frog
- Enter your website URL
- Click "Start" to crawl
- Navigate to "Response Codes" → "Client Error (4xx)"
- Review "Inlinks" tab to see which pages link to broken URLs
- Check "External" tab for broken external links
What to Look For:
- 404 Not Found errors
- Number of internal links pointing to 404s
- Broken external links
- Redirect chains
- Server errors (5xx)
Method 3: Online Broken Link Checkers
Dead Link Checker:
- Visit Dead Link Checker
- Enter your website URL
- Click "Check"
- Review broken links found
W3C Link Checker:
- Visit W3C Link Checker
- Enter page URL
- Review broken links report
What to Look For:
- Number of broken links
- Which pages contain broken links
- HTTP status codes
- Internal vs external broken links
Method 4: Chrome DevTools
- Open your website
- Press
F12to open DevTools - Navigate to "Console" tab
- Look for 404 errors (red text)
- Or use "Network" tab:
- Refresh page
- Filter by "All" or "Doc"
- Look for red status codes (404, 500)
What to Look For:
- Failed resource loads (images, scripts, CSS)
- Broken page links
- Missing assets
- Status codes in Network tab
Method 5: Manual Link Testing
For critical pages:
- Navigate through your website
- Click all navigation links
- Click footer links
- Test forms and CTAs
- Verify all buttons work
- Check product/category pages
What to Look For:
- 404 error pages
- Unexpected redirects
- Loading failures
- Broken images or assets
General Fixes
Fix 1: Fix Internal Broken Links
Update or remove broken internal links:
Find all pages linking to broken URL:
# Using Screaming Frog or Search Console # Identify which pages link to the 404Update links to correct URL:
<!-- Before --> <a href="/old-page-url/">Click here</a> <!-- After - fixed link --> <a href="/correct-page-url/">Click here</a>Or remove link if no longer relevant:
<!-- Before --> <p>Read more about <a href="/deleted-page/">this topic</a>.</p> <!-- After - link removed --> <p>Read more about this topic.</p>Batch fix common patterns:
# Find and replace across files # Example: Update domain change find ./ -type f -name "*.html" -exec sed -i 's/oldomain.com/newdomain.com/g' {} \;
Fix 2: Implement 301 Redirects for Moved Pages
Redirect old URLs to new locations:
Single page redirect:
# Nginx location /old-page/ { return 301 /new-page/; }# Apache .htaccess Redirect 301 /old-page/ https://www.example.com/new-page/Multiple redirects:
# Apache .htaccess Redirect 301 /old-about/ /about/ Redirect 301 /old-contact/ /contact/ Redirect 301 /products/old-category/ /products/new-category/Pattern-based redirects:
# Nginx - redirect entire section location /old-blog/ { rewrite ^/old-blog/(.*)$ /blog/$1 permanent; }# Apache .htaccess RedirectMatch 301 ^/old-blog/(.*)$ /blog/$1Redirect to most relevant alternative:
# If exact replacement doesn't exist, redirect to category/parent Redirect 301 /old-product-page/ /products/category/
Fix 3: Create Custom 404 Page
When redirects aren't appropriate:
Design helpful 404 page:
<!DOCTYPE html> <html> <head> <title>Page Not Found | Your Site</title> </head> <body> <h1>Page Not Found</h1> <p>The page you're looking for doesn't exist or has been moved.</p> <h2>Try these instead:</h2> <ul> <li><a href="/">Home Page</a></li> <li><a href="/products/">Products</a></li> <li><a href="/blog/">Blog</a></li> <li><a href="/contact/">Contact Us</a></li> </ul> <h2>Or search our site:</h2> <form action="/search/" method="get"> <input type="text" name="q" placeholder="Search..."> <button type="submit">Search</button> </form> </body> </html>Include site navigation
Add search functionality
List popular pages/categories
Maintain branding and design
Return proper 404 status code (not 200 or 302)
Fix 4: Fix Broken External Links
Update or remove links to external sites:
Check if page moved:
- Try finding page on site
- Check site's sitemap
- Use Wayback Machine to find last known URL
Update to new URL if found:
<!-- Before --> <a href="https://example.com/old-page/">External resource</a> <!-- After --> <a href="https://example.com/new-page/">External resource</a>Replace with alternative source:
<!-- If original source gone, find alternative --> <a href="https://better-source.com/article/">Alternative resource</a>Remove link if no alternative:
<!-- Before --> <p>Learn more at <a href="https://broken.com/">this resource</a>.</p> <!-- After --> <p>Learn more about this topic from authoritative sources.</p>Add nofollow to questionable links:
<a href="https://might-break.com/" rel="nofollow">External Link</a>
Fix 5: Fix Broken Images and Assets
Repair broken image, CSS, and JavaScript links:
Broken images:
<!-- Before - broken image --> <img src="/images/old-folder/image.jpg" alt="Product"> <!-- After - fixed path --> <img src="/images/products/image.jpg" alt="Product">Use absolute URLs to prevent breaking:
<!-- Relative (can break) --> <img src="../images/product.jpg"> <!-- Absolute (more reliable) --> <img src="/images/product.jpg"> <!-- Or --> <img src="https://cdn.example.com/images/product.jpg">Fix CSS and JavaScript:
<!-- Update resource URLs --> <link rel="stylesheet" href="/assets/css/style.css"> <script src="/assets/js/script.js"></script>Verify resources exist:
# Check if file exists ls /var/www/html/images/product.jpg
Fix 6: Prevent Future Broken Links
Implement monitoring and best practices:
Use link monitoring tools:
- Schedule monthly Screaming Frog crawls
- Set up broken link monitoring (Dead Link Checker)
- Monitor Google Search Console weekly
- Use Ahrefs or SEMrush site audits
Implement redirects when deleting pages:
# Before deleting a page: # 1. Identify pages linking to it # 2. Set up 301 redirect # 3. Then delete pageMaintain redirect log:
# Keep record of all redirects /old-url/ → /new-url/ (Date: 2024-01-15) /deleted-page/ → /alternative/ (Date: 2024-02-20)Use content management workflow:
- Review before deleting pages
- Check for internal links
- Set up redirects
- Verify redirect works
- Monitor 404s after change
Avoid hard-coded URLs:
<!-- Bad - hard-coded --> <a href="https://example.com/page/">Link</a> <!-- Better - relative --> <a href="/page/">Link</a> <!-- Or use variables/config --> <a href="{{site.url}}/page/">Link</a>
Fix 7: Clean Up Redirect Chains
Simplify multiple redirects:
Identify redirect chains:
curl -I https://example.com/page/ # Shows: 301 → /page2/ → 301 → /page3/ → 200Consolidate redirects:
# Before (chain) Redirect 301 /page1/ /page2/ Redirect 301 /page2/ /page3/ # After (direct) Redirect 301 /page1/ /page3/ Redirect 301 /page2/ /page3/Update internal links to bypass redirects:
<!-- Don't link to redirecting URL --> <a href="/old-page/">Link</a> <!-- Link directly to final destination --> <a href="/current-page/">Link</a>
Platform-Specific Guides
Detailed implementation instructions for your specific platform:
Verification
After fixing broken links:
Re-crawl with Screaming Frog:
- Run new full site crawl
- Check Response Codes → 4xx tab
- Verify broken links eliminated
- Confirm redirects working (3xx codes)
Test redirects:
curl -I https://example.com/old-page/ # Should show: HTTP/1.1 301 Moved Permanently # Location: https://example.com/new-page/Google Search Console:
- Wait 1-2 weeks for re-crawling
- Check "Coverage" → "Not found (404)"
- Verify 404 count decreasing
- Monitor crawl errors
Manual testing:
- Click all navigation links
- Test updated links
- Verify redirects go to right place
- Check 404 page if it appears
Monitor ongoing:
- Schedule monthly link checks
- Review Search Console weekly
- Fix new broken links promptly
- Track 404 trends over time
Common Mistakes
- Deleting pages without redirects - Creates 404s
- Ignoring external broken links - Poor user experience
- Redirect chains - Multiple hops slow performance
- Custom 404 returning 200 status - Confuses search engines
- Not monitoring for new broken links - Issues accumulate
- Fixing links only once - Continuous monitoring needed
- Redirecting everything to homepage - Bad practice
- Leaving broken images - Hurts professional appearance
- No documentation of changes - Can't track redirect history
- Using JavaScript redirects - Not SEO-friendly
Broken Link Prevention Checklist
Regular Monitoring:
- Monthly Screaming Frog crawls
- Weekly Google Search Console checks
- Broken link checker runs quarterly
- Monitor 404 trends
- Review external link health
Content Management:
- Set up redirects before deleting pages
- Document all URL changes
- Check internal links when updating content
- Maintain redirect mapping file
- Review links in old content
Best Practices:
- Use relative URLs for internal links
- Implement custom 404 page
- Keep redirect log updated
- Test all new links before publishing
- Consolidate redirect chains
- Remove temporary redirects after migration
Technical Setup:
- 301 redirects properly configured
- 404 page returns correct status code
- Sitemap updated after URL changes
- Canonical tags prevent duplicates
- Link monitoring automated