Can I use Screaming Frog for free, and what do I set up first?
Before I change a plugin, a redirect or a title on a WordPress site, I crawl it. It's the first thing I run when I'm finding what's actually broken on a site before anything gets touched, and it's the baseline I measure every later change against.
You can start free. Screaming Frog's product page says the free version crawls 500 URLs and a licence removes the limit; on 28 September 2026 it listed a licence at 279 US dollars a year, or 199 pounds on the UK pricing page, per user. That isn't the only limit. The same page's comparison marks crawl configuration, saving crawls, JavaScript rendering and the Search Console integration as paid. The free version is fine for a quick broken link check on a small site, but the method below needs the licence.
With a licence, I set up storage before the first crawl. The vendor's getting started guide recommends database storage, the default, on a computer with an SSD, and memory storage without one. Database storage lets it crawl more URLs and keeps every crawl saved automatically.
Which Screaming Frog settings do I change before the first crawl?
A crawl that runs on the defaults misses half of what I want, so I change a handful of settings first and save them as a profile. Screaming Frog's own user guide is the reference for each one. Most Screaming Frog tutorials walk through the defaults tab by tab, which suits a quick look at any site, but not the comparison I care about, which needs the sitemaps and Search Console inside the same crawl.
| Setting | Default | What I do |
|---|---|---|
| Rendering | Text Only, which reads the raw HTML | Leave it for the first crawl, then run JavaScript rendering on a sample later |
| Crawl Linked XML Sitemaps | Off in regular Spider mode | Turn it on, with auto discovery through robots.txt |
| Respect robots.txt | On | Leave it on, because blocked URLs are something I want listed, not hidden |
| Respect noindex and canonical | Unticked, and ticking them drops those URLs from the report | Keep both unticked, because noindexed pages are what I'm hunting for |
| Search Console API | Not connected | Connect the property and tick Crawl New URLs Discovered In Google Search Console |
| Speed | 5 threads | Lower it with Max URI/s on cheap shared hosting, so the crawl doesn't slow the live site |
Since version 5.5, WordPress core has served a sitemap index at /wp-sitemap.xml and named it in the robots.txt it generates. An SEO plugin often replaces that with its own index, so I read robots.txt before the crawl and check which sitemap the site really serves.
Exclude takes partial regex, and I only use it for URL patterns that multiply without adding pages, like add-to-cart links on a WooCommerce store. Excluding real sections to make the crawl shorter defeats the point of running it.
How I use Screaming Frog to crawl a WordPress site, step by step
Most advice on how to crawl a website starts with pasting in the homepage and pressing Start. On WordPress I start a step earlier, and nothing on the site changes until the last step's written down.
- Step 01
Read robots.txt and the sitemap index
I open both in the browser first. I'm checking which sitemap is live, whether anything important is disallowed, and whether the sitemap index lists child sitemaps for post types that shouldn't be public, like attachment pages.
- Step 02
Load the saved profile
The settings from the table above, saved once and reused, so every client's crawl starts from the same place and two crawls of the same site can be compared fairly.
- Step 03
Crawl from the version Google should use
I start from the homepage exactly as it should be indexed, https with or without www. If the other versions don't redirect to it in one hop, that's the first finding, and it goes on the list before anything else.
- Step 04
Run Crawl Analysis when the crawl finishes
The Sitemaps filters stay empty until Crawl Analysis has run. It's the step people skip, and then they wonder why Orphan URLs shows nothing at all.
- Step 05
Export three lists
The crawl's HTML pages, every URL in the sitemaps, and the pages Search Console has data for. Screaming Frog shows all three through its filters, but I keep the exports too, because a spreadsheet's easier to sort.
- Step 06
Compare the lists before reading any single report
A URL that's in all three is usually fine. A URL that's in one or two is where I look first, and the next section explains what each gap tends to mean.
- Step 07
Run a JavaScript crawl on a sample
I pick a few templates, a page, a post, a product and an archive, and crawl them again with JavaScript rendering. If the links or the word count change a lot between the two, the theme or page builder is doing something in the browser that a text only crawl can't see.
- Step 08
Write the findings, then keep the crawl file
Every fault goes on a list with the URLs it affects before I touch anything. The saved crawl is the before picture, and a crawl after the fixes is the after. The same crawl also feeds the redirect map when a site moves platforms.
Don't crawl a staging copy and assume it matches the live site. Staging usually has search engines discouraged, and WordPress switches its sitemap off when that setting's ticked, so the sitemap comparison won't work there.
Rather have me do this? One person, whole job.
Book a call on UpworkWhy compare the crawl with the sitemap and Search Console?
Because each list tells you something different, and none of them is the whole site. The crawl is what the site links to. The sitemap is what the site says it wants indexed. Search Console is what Google has actually found. When the three agree, the site's coherent. When they don't, the gap is almost always a fault somebody didn't know about.
Google's sitemap guidance is plain: include the URLs you want to see in search results. So a sitemap listing a redirect, a 404 or a noindexed page sends Google a mixed message, and those 404s are where I start when I fix 404 errors in WordPress. A page that's in the sitemap but that nothing links to is a linking problem long before it's an indexing one, which is the gap my internal linking service closes. That crawl file feeds my internal link audit.
| Where the URL is | Screaming Frog filter | What it usually means |
|---|---|---|
| Crawl only, not the sitemap | Sitemaps: URLs Not In Sitemap | A page the sitemap left out, or a page that shouldn't exist at all |
| Sitemap only, not the crawl | Sitemaps: Orphan URLs | Nothing links to it, so it needs links or it needs to leave the sitemap |
| Sitemap, but not indexable | Sitemaps: Non-Indexable URLs In Sitemap | A redirect, error, noindex or canonical that points somewhere else |
| Search Console only | Search Console: Orphan URLs | Google knows an address the site no longer links to |
| All three | None | The normal case, and most of a healthy site |
Search Console's Page indexing report helps from the other side. Its filter switches between all known pages, all submitted pages and unsubmitted pages only, so I can see whether the pages Google isn't indexing are ones the sitemap asked for. Its example list stops at 1,000 URLs, though, so on a big site it's a sample, not the full picture. When sitemap pages sit in Discovered or Crawled, currently not indexed for weeks, those two statuses have their own diagnosis.
Which reports do I open first?
Screaming Frog has dozens of tabs, and reading them in order is how a crawl turns into a week. These are the six I open first on a WordPress site, because each one points at a fault that affects real pages.
- i.
Response Codes: anything that isn't a 200
Client errors, server errors and redirects linked from inside the site. An internal link to a redirect isn't broken, but it's a hop the site doesn't need, and a redirect chain is two.
- ii.
Sitemaps: Non-Indexable URLs In Sitemap
Every URL here is one the sitemap asks Google to index and the page itself says no to. The Indexability Status column gives the reason. For noindexed sitemap URLs, the fix is deciding which one's wrong, the sitemap or the tag.
- iii.
Directives: Noindex
I read the whole list, not just the count. Tag archives with noindex are often deliberate. A service page with noindex almost never is, and it's often a leftover from staging or a plugin setting that got flipped.
- iv.
Page Titles: Duplicate and Missing
WordPress sites repeat titles in predictable places: paginated archives, near-identical location pages, and templates that print a placeholder instead of a real title.
- v.
Sitemaps: Orphan URLs
Pages the sitemap lists but no crawled page links to. Some are old pages that should go. Others are good pages the menu and the posts never point at.
- vi.
Search Console: Orphan URLs
Addresses Google's shown in search that the crawl never reached. That's where old URLs, forgotten landing pages and accidental publishes tend to surface.
Sort every export by Search Console clicks before fixing anything. A duplicate title on a page that earns clicks every day matters more than fifty on pages nobody's ever seen.
What can a crawl find that no other tool will?
Mistakes that nobody links to and nobody visits. Search Console reports what Google's done with a page, and an SEO plugin checks the page you're editing. Neither one reads every URL the site serves and lines them up side by side.
Scrap a Vehicle is the example I use. It's a UK scrap car site with 487 location pages generated with Lpagery, and a full crawl turned up two things you'd never find clicking around. The first was /region_name/, live and indexable, with the literal title {seo_title} and the heading {h1_heading}. It's the template page, published by accident, and it only stands out when its title sits in a list next to hundreds of real ones.
The second was /scrap-my-car-edinburgh-2/, a duplicate Edinburgh page. A slug ending in -2 usually means the page was generated twice, so two pages end up competing for one town. Neither fault shows up for someone clicking through the menus.
That's also why I don't fix as I go. On a site with hundreds of generated pages, one change to a template touches every page built from it, so I want the whole list first.
If you want one person to run the crawl, do the comparison and fix what it finds on your WordPress site, that's the audit work I do, remotely, with the crawl file handed over at the end.
Book a call on Upwork
