
- Raw server logs reveal the precise path Googlebot takes, exposing hidden internal linking traps that crawler tools miss.
- Crawl budget is not a fixed number, but a resource allocation that expands when you eliminate redundant discovery paths.
- Redirect chains and orphaned internal links are the primary culprits for crawl budget wastage on legacy domains.
- Log file analysis should focus on identifying patterns of waste rather than chasing every individual 404 error.
Ask your DevOps or hosting team for raw access logs in Apache or Nginx format. Most modern hosts provide these in your dashboard. If you are on a CDN like Cloudflare, you may need to export logs via their API. Ensure you have at least 30 days of data to see meaningful patterns, as daily fluctuations are often just noise.
How do I get my server logs for SEO?
Last Tuesday, a client came to me with a classic “legacy site” headache. They’d spent months pushing new content, but their rankings remained flat. We pulled their server logs and found Googlebot was spending 70% of its time crawling a defunct legacy directory structure from 2012. They were essentially paying for a Ferrari but driving it in first gear. Auditing raw crawl patterns on old domains is the messy, unglamorous work that separates SEOs who chase myths from those who actually move the needle.
Most people skip the raw logs because they are intimidating. They prefer the clean, visual charts of a crawler tool. But a crawler tool tells you what Google can see; your logs tell you what Google actually does. When you have a domain with a decade of history, the “crawl bloat” is real. You have orphaned pages, abandoned parameter-based URLs, and redirects that chain into oblivion. This is how you reclaim your crawl efficiency.
The difference between discovery and refresh crawling
When you look at your log files, you need to categorize every request. Googlebot isn’t just one person wandering around your site. It is a dual-purpose engine. Discovery crawling is when Googlebot hits new URLs to see what is out there. Refresh crawling is when it revisits known pages to check for updates.
On an old domain, the ratio between these two is often completely skewed. If you see thousands of hits on pages that haven’t changed in five years, you have a refresh crawl problem. This usually stems from poor internal link architecture or outdated sitemaps. A healthy site should have a high refresh rate on core content and a controlled, targeted discovery rate on new content. If your logs show massive spikes in hits on old, static pages, Google is wasting its time checking for updates that don’t exist, which keeps them away from your newer, more important pages.
| Crawl Type | Goal | Typical Symptom |
|---|---|---|
| Discovery | Find new content | High volume of 404s in logs |
| Refresh | Check for changes | Hits on static, legacy content |
| Redirect | Follow pathing | Chains leading to 200 or 404 |
Distinguishing signal from noise in log exports
You will be tempted to look at every single line in your log file. Don’t. It is a massive waste of time. Instead, focus on the user agent strings and the status codes. Use a tool like Screaming Frog Log File Analyzer or a simple grep command if you are comfortable in the terminal.
Look for the “junk” first. If your server is spitting out 404s for URLs that don’t exist, identify if those URLs are still being linked internally. If they are, you aren’t just wasting crawl budget; you are providing a poor user experience for Googlebot. A common mistake is using robots.txt to block these. If the URL is still linked, Googlebot will still try to visit it, see the block, and then keep the URL in the crawl queue anyway.
When auditing, group your logs by path. If you see a specific folder, like /archives/2014/, getting 500 hits a day, that is a clear signal. You don’t need to look at every hit. You just need to realize that the folder itself is a source of leakage. Once you group by path, the “noise” disappears, and the structural failures become obvious.
Mapping the legacy URL graveyard
Every old domain has a graveyard. These are the categories or tags that were abandoned years ago. When you audit these, look for patterns. Is Googlebot hitting old calendar archives? Are there thousands of URLs generated by an old search feature?
We typically see this on sites that have migrated CMS platforms multiple times. The old URL patterns linger in the database or the sitemap files. If you find a pattern, don’t just fix one URL. Fix the template or the sitemap generation logic. This is the only way to scale the cleanup. You can learn more about this in our guide on why most crawl frequency factors advice is outdated for small teams.
When mapping the graveyard, categorize the pages into three buckets: 1. Redirectable: Pages with genuine backlink value that should move to a new home. 2. Prunable: Dead weight with no value that should 404 or 410. 3. Ghost: Pages that exist only because of a CMS bug or a lingering sitemap entry.
Implementation checklist for log cleanup
Follow this sequence to ensure you aren’t breaking anything while clearing out the noise:
- Request at least 30 days of raw server access logs from your hosting provider (Apache/Nginx format).
- Filter the logs to show only requests from Googlebot (verify the IP addresses against official Googlebot ranges).
- Aggregate the requests by path or directory to identify the top 50 most frequently crawled URLs that provide no business value.
- Use a crawler like Screaming Frog to check if these high-crawl URLs are internally linked in your current theme, footer, or sidebars.
- Manually remove those internal links or update them to point to relevant, modern pages.
- Implement 301 redirects for any high-authority legacy pages that Googlebot is still hitting heavily to preserve the backlink juice.
- Use the URL Inspection tool in Search Console to verify that the “junk” pages are no longer being prioritized in the index.
Handling the redirect chains
One of the most common ways to break a site’s crawlability is to create a “redirect web.” You have a legacy URL, which redirects to a different legacy URL, which finally goes to the homepage. Googlebot hates this, and it eats through your crawl budget like wildfire.
When you audit your raw crawl patterns on old domains, specifically filter for 301 and 302 status codes. If you see a sequence, flatten it. Every redirect adds a round-trip to the server. If your server is slow, that delay adds up. You can read more about how to manage these in how to google crawl budget (step by step).
| Action | Impact on Crawl Budget | Priority |
|---|---|---|
| Remove internal links to 404s | High | Immediate |
| Resolve redirect chains | Medium | High |
| Robots.txt disallow (no links) | Low | Low |
| Audit sitemaps for legacy URLs | Medium | Medium |
Monitoring the aftermath of your audit
After you implement these changes, wait. Crawl patterns don’t shift overnight. Googlebot is a creature of habit. It will continue to try and hit those old URLs for a few weeks, even after you remove the links.
Watch the log files over the next two to three months. You should see a slow decay in the number of requests to the junk directories. If the requests persist, check your XML sitemaps. Sometimes, we find that these old pages are still buried in an ancient sitemap that we forgot to update. For more on this, check out our piece on what nobody tells you about google crawl budget.
If you see a sudden spike in 404s after your cleanup, don’t panic. That is expected. It means Googlebot is finally hitting the dead ends you created. As long as you have removed the internal links, these 404s will eventually drop off as Googlebot updates its internal crawl queue.
Avoiding common traps in log analysis
The biggest trap is over-optimizing. You do not need to aim for a perfect crawl. You just need to ensure the most important content—your money pages—are crawled and refreshed regularly. If you block everything, you might inadvertently block pages that Google finds useful for context.
Be careful with noindex tags as well. While they tell Google not to index the page, they don’t always stop Google from crawling it. A noindex page still consumes crawl budget. If you really want to stop the crawl, the combination of internal link removal and a 404 status code (or a specific robots.txt block if you have removed the internal links) is the gold standard.
Another mistake is ignoring your search parameters. If your site uses filters, Googlebot might be creating infinite combinations of them. Check your log files for URL parameters that look like ?color=red&size=large&sort=price. If you see hundreds of variations of these, implement a canonical tag or use the parameter handling features if they are still relevant, but ideally, you want to stop these from being linked in the first place.
Why structural fixes always beat configuration hacks
Newer SEOs often look for a “quick fix” in the robots.txt file. They think that by adding a few lines of disallow, they can save their crawl budget. In reality, robots.txt is the last resort, not the first line of defense. If your site structure is messy, robots.txt will just hide the symptoms while the disease—your bad internal links—continues to spread.
A clean internal linking architecture acts as a roadmap for Googlebot. When you remove the dead ends and the circular redirects, you are effectively guiding the bot toward your most valuable content. This is why we focus so heavily on the audit phase. By understanding how the bot moves, you can build a structure that naturally encourages it to prioritize your core pages without needing to micromanage every line of your robots.txt file.
Remember that Googlebot is constantly learning from your site’s history. If you have years of content that was never pruned, you are dealing with a bot that expects to find “garbage” on your domain. It takes patience to retrain that expectation. Keep the audit process regular and, more importantly, keep the internal architecture clean.
The reality of auditing these domains is that it is never truly “finished.” You fix one layer of the onion, and you find another beneath it. It is a cycle of discovery and maintenance. If you stay consistent with your log reviews, you will eventually find that your crawl budget is being spent on things that actually drive revenue. It is not about tricking the bot; it is about cleaning up the digital debris so the bot can see the value you have built. If you find the manual process of cross-referencing your sitemaps with log data too slow, look into how OptiLink automates the identification of these wasted crawl paths.
Log file analysis can be overwhelming, but start small by targeting the top 10% of your most-crawled, least-valuable pages. Consistent, incremental improvements are better than a single, massive site overhaul that might break your current rankings. Use these tools to guide your decision-making and stay focused on the user experience. You have the power to control how the search engines see your domain, one URL at a time.
Frequently asked questions
How do I get my server logs for SEO?
Ask your DevOps or hosting team for raw access logs in Apache or Nginx format. Most modern hosts provide these in your dashboard. If you are on a CDN like Cloudflare, you may need to export logs via their API. Ensure you have at least 30 days of data to see meaningful patterns, as daily fluctuations are often just noise.
Does Googlebot ignore my robots.txt if I have bad links?
Yes. Robots.txt is a suggestion, not a wall. If your site has thousands of legacy internal links pointing to non-existent pages, Googlebot will continue to attempt to crawl them. You must remove the links or fix the redirects to stop the crawl demand effectively.
What is the difference between crawl budget and crawl demand?
Crawl budget is the amount of resources Google allocates to your site based on its health and popularity. Crawl demand is Googlebot's desire to visit your site based on content freshness and relevance. You cannot force Google to crawl more, but you can prevent them from wasting their budget on 'junk' pages.
How often should I audit raw logs?
For an old domain with a history of neglect, audit them quarterly. If you are actively migrating content or cleaning up thousands of 404s, move to a monthly cadence until the noise in the logs drops significantly. Once the architecture stabilizes, an annual check is usually sufficient unless you experience a sudden shift in indexing coverage.
Should I use 301 redirects for every 404 found in logs?
Only if the legacy URL has external backlinks or is still being referenced in your internal architecture. If the page is dead and has no value, a 404 is technically correct. However, if the page is still being crawled heavily, a 301 to the most relevant category page can help consolidate the crawl path and preserve any lingering authority.
What is a 'crawl trap' in log files?
A crawl trap is any dynamic URL structure, such as infinite calendar filters or faceted navigation combinations, that creates thousands of unique URLs. Googlebot gets stuck in these loops, spending its entire allocated time on useless pages instead of your core content. You identify these by seeing a repetitive pattern of URL parameters in your log file exports.
Frequently asked questions
What is the ideal anchor text ratio for a new site?
A safe starting ratio is 50% branded, 30% naked URLs, 15% partial-match, and 5% exact-match, but adjust based on your niche competitiveness.
Can I use exact-match anchor text after a penalty?
Yes, but only after you’ve disavowed toxic links and rebuilt the profile with 80%+ branded anchors for 3–6 months to restore trust.
How many variations of anchor text should I use per linking domain?
Limit to 2–3 variations per domain to avoid looking manipulative; rotate them across your outreach campaigns.
Is it okay to ask for a specific anchor text in outreach?
You can suggest it, but most editors will ignore the request or rewrite it; focus on providing value so they naturally use your brand or URL.
Frequently asked questions
What is the best anchor text for SEO?
The best anchor text describes the linked page's content clearly and naturally, using relevant keywords without stuffing.
How many types of anchor text are there?
There are six primary types: exact match, partial match, branded, naked URL, image alt, and generic.
What is the best practice for anchor text?
Use varied, contextually relevant anchors that accurately reflect the destination content while avoiding repetitive patterns.
Why is anchor text important in SEO?
It helps search engines understand the topic and relevance of linked pages, boosting topical authority when done correctly.
Frequently asked questions
What is the ideal anchor text ratio for SEO?
Most teams find a 3:1 ratio of partial-match to branded anchors works without triggering filters, but the real answer depends on your niche and existing profile.
Can I use exact-match anchor text after a penalty?
Yes, but only sparingly and usually after rebuilding trust with a heavy branded and partial-match base first.
How many different anchors should I use per page?
There is no magic number, but aiming for at least 5–7 unique variations per target page keeps the profile looking organic.
Is it safe to use naked URLs as anchors?
Absolutely; they are the safest anchor type and often look natural in editorial content, especially for homepages and high-authority references.
Should I nofollow all keyword-rich anchors?
No, a natural mix includes some follow links, but keep the ratio low—around 10–15%—to avoid over-optimization signals.
Frequently asked questions
How do I check my anchor text distribution?
Open Google Search Console, go to Links to your site, and click the 'Anchor text' report. It shows your top anchors and their share of the profile, though it caps at 1,000 links.
What is a healthy anchor text distribution?
Most sites we audit fall into a 50-70% branded/natural mix with exact match anchors under 10%. If your exact match ratio creeps past 15%, it’s a red flag for over-optimization.
Can too much exact match anchor text hurt rankings?
Yes. Google’s Penguin and manual spam filters flag profiles where exact match anchors exceed 15-20%. The safest approach is to keep them under 10% and rely on brand, URL, and related variations for the bulk of your links.
How often should I audit anchor text?
We recommend a light audit after every major link insertion campaign and a full deep-dive quarterly. If you’ve just recovered from a penalty, check monthly until the profile stabilizes.