Documentation

Everything CrawlDude does, from the first crawl to the last issue. For version 0.2 on macOS.

Install

CrawlDude runs on macOS 11 or later. Windows and Linux versions are coming.

  1. Download the installer for your Mac from the download page: Apple Silicon for M1 and newer, Intel for older Macs. If you're not sure, open the Apple menu, choose About This Mac, and look for "Chip" (Apple Silicon) or "Processor" (Intel).
  2. Open the downloaded .dmg file and drag CrawlDude to the Applications folder.
  3. Open CrawlDude from Applications.

Current builds aren't signed by Apple yet, so the first time you open CrawlDude, macOS says it can't be opened. Right-click CrawlDude in Applications, choose Open, then confirm. On macOS 15 and later, open System Settings, go to Privacy & Security, scroll down and click Open Anyway. You only need to do this once.

Your first crawl

CrawlDude opens on the projects screen. A project called "My crawls" is ready to use.

  1. Click the project card. An empty crawl view opens.
  2. Type the site's address in the bar at the top, for example https://example.com, and press Start.
  3. The table fills up as pages are crawled, and the issues list on the right updates every few seconds. Press Pause or Stop at any time.
  4. When the crawl finishes, click an issue in the sidebar to see the pages it affects, and click a row to see that page's details.

Every crawl is saved to its project automatically when it finishes or is stopped.

On a site you don't own, keep the speed down: set a time between requests in the project settings and leave "Respect robots.txt" on.

Projects and history

Everything in CrawlDude belongs to a project, usually one per website or client. Each project has its own start URL, crawl settings and crawl history.

  • Projects screen: one card per project, with its site, the latest health score, URL and error counts, and the number of crawls. Click a card to open its latest crawl. Open it any time from the breadcrumb at the top left or with ⇧⌘P.
  • Crawls: every crawl of the project, newest first. Open a crawl to load it, move it to another project, or delete it.
  • Settings: the project's name, start URL and crawl settings. Changes apply to the next crawl.
  • New crawl: opens an empty crawl view with the project's start URL filled in.

Deleting a project also deletes its saved crawls. Crawl history is stored on your Mac in ~/Library/Application Support/CrawlDude/library/.

Crawl settings

Open a project's settings from its card, from the gear button at the top right, or with ⌘,. Reset to defaults puts every crawl setting back, keeping the name and start URL.

SettingDefaultWhat it does
Time between requests0 msThe minimum gap between two requests. Use 500 ms or more on sites you don't own. If robots.txt sets a Crawl-delay and this is 0, CrawlDude uses the Crawl-delay (up to 10 seconds).
Concurrent requests5How many pages are fetched at the same time.
Timeout per request20,000 msHow long to wait for a response before recording a timeout.
Max URLs10,000Stops the crawl after this many URLs. Raise it for big sites; your computer's memory is the only limit.
Max depth20How many clicks from the start URL to follow.
Respect robots.txtOnSkips URLs that robots.txt disallows and reports them as blocked. Turn off only for your own sites.
Crawl subdomainsOffTreats subdomains such as blog.example.com as part of the site. www and non-www always count as the same site.
Follow nofollow linksOffAlso crawls links marked rel="nofollow", ugc or sponsored.
Ignore query stringsOffTreats /page?a=1 and /page as the same URL.
Check external linksOffRequests links to other sites to get their status codes, so broken external links show up.
Check imagesOffRequests the site's images to get their status codes and sizes.
Use XML sitemapsOnReads the site's XML sitemaps and audits them. See XML sitemaps and orphan pages.
AI search checksOnChecks llms.txt, robots.txt rules for AI crawlers and AI-related page signals. See AI search readiness.
Dry runOffA quick sample crawl to test settings: at most 25 URLs (change it with Dry run URLs) and 2 clicks deep.
User agentCrawlDudeHow CrawlDude identifies itself. Choose a preset (Googlebot Smartphone or Desktop, Bingbot, Chrome on Windows, macOS or Android, Safari on iPhone) or type any string. Crawling as Googlebot or Bingbot also makes CrawlDude follow that bot's rules in robots.txt.

The crawl view

Tabs

The tabs above the table filter the crawled URLs: All, HTML, Redirects, 4xx, 5xx / no response, Non-indexable, Blocked (by robots.txt), External, Images and AI search. Each tab shows the columns that matter for it. The filter box searches URLs and titles.

The table

  • Click a column header to sort, click again to reverse, and a third time to clear the sort.
  • Drag the right edge of a header to resize a column. Double-click the edge to reset it. Widths are remembered.
  • A warning triangle next to an address means that URL has errors or warnings. Hover it to see how many.
  • Double-click a row, or press Enter, to open the URL in your browser. Use ↑ and ↓ to move between rows.

The details pane

Click a row to see everything about that URL below the table. Drag the divider to make the pane taller or shorter.

  • Details: status, indexability and the reason, title, meta description, headings, canonical, robots directives, language, hreflang, Open Graph and Twitter tags, structured data, dates and author, word count, response time, size and more.
  • Inlinks and Outlinks: every link to and from the page, with anchor text, status and nofollow.
  • Images: each image with its alt text.
  • Issues: every issue found on the page, with an explanation.
  • Redirect chain: each hop when the URL redirects, including loops.

Click an address in the details pane to jump to it in the table. Hold ⌘ while clicking, or use the ↗ button, to open it in your browser.

The sidebar

The sidebar shows the site health score, the AI search readiness score, URL and indexable counts, error and warning totals, a breakdown of status codes, and every issue grouped by topic. Click an issue to filter the table to the URLs it affects; click it again, or the × on its tab, to clear the filter. "Hide zero" hides issues that weren't found.

Site health score

Every crawl gets a score from 0 to 100: the share of crawled internal URLs without an error-level issue. A site where 9 of 10 pages have no errors scores 90. Warnings and notices don't lower the score.

The score is green from 80, amber from 50 and red below that. It shows in the sidebar, on project cards and in each project's crawl history, so you can see whether fixes are working.

XML sitemaps and orphan pages

With "Use XML sitemaps" on, CrawlDude reads the sitemaps listed in robots.txt, or /sitemap.xml when robots.txt lists none. Sitemap index files and gzipped .xml.gz sitemaps are supported.

Once the link crawl is done, CrawlDude also requests the sitemap URLs that no link led to. Those are your orphan pages: listed in the sitemap, but nothing on the site links to them. It also reports sitemap URLs that return errors, redirect, are noindex, canonicalised or blocked by robots.txt, and indexable pages missing from the sitemap.

Issue reference

CrawlDude checks for 64 issues in three levels:

  • Error something is broken and needs fixing. Errors lower the site health score.
  • Warning likely hurts search performance; worth fixing.
  • Notice worth knowing; may be fine depending on the site.

Response codes

IssueLevelWhat it means
Client error (4xx)ErrorInternal URLs returning 4xx. Fix or remove links pointing to them.
Server error (5xx)ErrorInternal URLs returning 5xx errors.
No response / timeoutErrorThe server did not respond (DNS, connection or timeout error).
Internal redirect (3xx)WarningInternal links that redirect. Link directly to the final URL.
Redirect chainWarningRedirects that hop more than once before reaching the final URL.
Redirect loopErrorRedirects that eventually point back to themselves.
Has broken internal linksErrorPages linking to internal URLs that return 4xx/5xx.
Broken external link targetWarningExternal URLs that returned an error (only when external link checking is on).
Blocked by robots.txtNoticeInternal URLs the crawler was not allowed to fetch.

Page titles

IssueLevelWhat it means
Missing titleErrorPages without a <title>.
Duplicate titleWarningThe same title is used on more than one indexable page.
Title over 60 charactersWarningLong titles are often truncated in search results.
Title under 30 charactersNoticeShort titles may not describe the page well.
Multiple title tagsWarningPages with more than one <title> element.

Meta description

IssueLevelWhat it means
Missing meta descriptionWarningPages without a meta description.
Duplicate meta descriptionWarningThe same description is used on more than one indexable page.
Meta description over 155 charactersNoticeLong descriptions are often truncated.
Meta description under 70 charactersNoticeShort descriptions may be replaced by search engines.

Headings

IssueLevelWhat it means
Missing H1WarningPages without an <h1>.
Multiple H1NoticePages with more than one <h1>.
Duplicate H1NoticeThe same H1 is used on more than one indexable page.
Title same as H1NoticeThe title and H1 are identical. Use them to target different wording.

Directives

IssueLevelWhat it means
NoindexNoticePages with a noindex directive (meta robots or X-Robots-Tag).
CanonicalisedNoticePages whose canonical points to a different URL.
Missing canonicalNoticeIndexable pages without a canonical link.
Canonical to non-200 URLErrorThe canonical target redirects or returns an error.
Noindex page linked internallyWarningNoindex pages that still receive many internal links.
Multiple canonical tagsWarningPages with more than one rel="canonical" link. Search engines may ignore them all.

Sitemaps

IssueLevelWhat it means
4xx/5xx URL in sitemapErrorSitemap URLs that return an error. Remove them or fix the pages.
Redirect in sitemapWarningSitemap URLs that redirect. List the final URL instead.
Noindex URL in sitemapWarningSitemaps should only list pages you want indexed.
Canonicalised URL in sitemapWarningSitemap URLs whose canonical points elsewhere. List the canonical URL instead.
Blocked URL in sitemapWarningSitemap URLs that robots.txt does not allow crawling.
Orphan pageWarningPages in the sitemap that no crawled page links to.
Indexable page not in sitemapNoticeIndexable pages missing from the XML sitemap.

Content

IssueLevelWhat it means
Low word count (<200)NoticeThin pages with little visible text.
Exact duplicate contentWarningPages with identical visible text.
Images missing alt attributeWarningPages containing <img> tags without alt.
Missing html langNoticePages without a lang attribute on <html>.
Missing meta viewportWarningPages without <meta name="viewport">. They will not render well on mobile.
Mixed contentWarningHTTPS pages loading images, scripts or styles over plain HTTP.

Social

IssueLevelWhat it means
Incomplete Open Graph tagsNoticeMissing og:title, og:description or og:image, used when the page is shared.
Missing Twitter cardNoticePages without <meta name="twitter:card">.
IssueLevelWhat it means
Links without anchor textWarningLinks with no text, image alt, aria-label or title.
Non-descriptive anchor textNoticeInternal links like "click here" or "read more" that say nothing about the target.
No internal outlinksWarningDead-end pages that link to no other internal page.

URL

IssueLevelWhat it means
Uppercase charactersNoticeURLs containing uppercase letters.
UnderscoresNoticeURLs containing underscores.
Query parametersNoticeURLs with a query string.
URL over 115 charactersNoticeVery long URLs.
Non-HTTPS URLWarningInternal URLs served over plain HTTP.

Performance

IssueLevelWhat it means
Slow response (>1s)WarningPages taking over a second to respond.
Large HTML (>1 MB)NoticeHTML documents larger than 1 MB.

Site structure

IssueLevelWhat it means
Crawl depth over 3NoticePages more than 3 clicks from the start URL.
Only one internal inlinkNoticeIndexable pages linked from a single page.
IssueLevelWhat it means
Blocked for AI search botsWarningrobots.txt blocks at least one AI search or assistant bot, so those assistants can't read or cite the page.
Blocked for AI training botsNoticerobots.txt blocks at least one AI training bot. This is a legitimate choice, shown for visibility.
Content needs JavaScriptWarningLittle text in the HTML and an app shell or many scripts. Most AI crawlers don't run JavaScript.
Snippet restrictionWarningnosnippet or max-snippet:0 in meta robots or X-Robots-Tag. Google excludes such pages from AI Overviews and AI Mode.
noai / noimageai directiveNoticeA non-standard opt-out. Few AI crawlers honour it.
No structured dataNoticeIndexable pages without JSON-LD. Schema helps AI systems understand and attribute the content.
Invalid JSON-LDWarningA JSON-LD block that isn't valid JSON. The whole block is ignored.
No published or modified dateNoticeNo date in JSON-LD, article meta tags or <time>. Dates are a freshness signal.
Article without authorNoticeArticle-type schema without an author. Authorship supports E-E-A-T.

Export and save

  • Export (⌘E) saves the table as you see it, with its tab, issue filter, search and sort, as a CSV file that opens cleanly in Excel and Google Sheets.
  • File → Export Issues Report as CSV saves every issue with its severity, group and affected URL.
  • Export CSV in the AI search readiness report saves the checklist, the AI crawler table and the llms.txt links and problems.
  • Save (⌘S) saves a copy of the crawl as a .crawldude file to share or archive. Open (⌘O) loads one into the current project.

Updates

CrawlDude checks for a new version a few seconds after it starts. When one is out, a bar appears at the top: click Install and restart, and CrawlDude downloads the new version, replaces itself and opens again. Your projects and crawls are kept. To check by hand, choose Help → Check for Updates.

Versions before 0.2.1 can't update themselves: download the latest installer from the download page and replace the app in Applications once.

If CrawlDude can't replace itself, for example when it runs from the disk image instead of Applications, it opens the downloaded installer so you can drag the new version over the old one.

Keyboard shortcuts

ShortcutAction
⌘NNew crawl in the current project
⌘YCurrent project's crawls and settings
⇧⌘NNew project
⇧⌘PAll projects
⌘,Project settings
⇧⌘AAI search readiness report
⌘OOpen a crawl file
⌘SSave the crawl as a file
⌘EExport the current view as CSV
↑ ↓Move between rows in the table
EnterOpen the selected URL in your browser
EscGo up one level on the projects screens

Getting help

Check the FAQ first. For anything else, or to report a bug, email hello@crawldude.com. Include your CrawlDude version (CrawlDude → About CrawlDude) and the site you crawled if you can.