A check says “Couldn’t check”
Why SEOComet couldn’t fetch an address, from timeouts to firewalls, and how to let SEOCometBot through bot protection.
Updated
“Couldn’t check” means SEOComet asked for an address and got no usable answer. It says nothing yet about what’s in the file or on the page: SEOComet never got that far.
A failed fetch is tried again once a few seconds later (2 seconds) before it counts. That covers timeouts, refused or reset connections, DNS lookups that fail, server errors (5xx) and 429. So a check that shows Couldn’t check has usually failed twice in a row. Other answers, such as a 403 or 404, aren’t tried again.
What it means
You see it in two places:
- A check’s history: the run’s result says Couldn’t check, with the reason next to it.
- An uptime check’s status: a visit that gets no answer, or not the status you expect, shows Couldn’t check until the number set in Failed or slow checks in a row before it counts is reached. Then the page counts as down, which is critical. See Failures in a row.
On robots.txt, sitemap, ads.txt, app-ads.txt and SSL checks, the failure is also reported as an issue that starts “Couldn’t fetch it:”, usually a warning. A robots.txt that answers with a server error (5xx) or 429 is critical, because Google treats that as blocking the whole site.
For those files, an answer with an HTTP error other than 404 or 410, such as 403 or 500, counts as a failed fetch too. A 404 or 410 means the file is missing, which is reported separately, and for ads.txt and app-ads.txt only if the file was there before.
Common causes
The reason shown with the result tells you which of these happened.
- Timeout: on robots.txt, sitemap, ads.txt, app-ads.txt and uptime checks, “Couldn’t connect within 5 seconds” or “No response within 10 seconds”. Sitemaps get 30 seconds. Redirects count toward the same time. The server is slow or overloaded, or a firewall is quietly dropping the request.
- DNS: “Couldn’t find an address for” the host. The domain has no DNS record for that name, has expired, or the address has a typo.
- Connection failed: the connection was refused or reset, or the certificate couldn’t be trusted. SEOComet checks the certificate on every https request, so an expired certificate, one for another name or a missing intermediate certificate stops the fetch. The message is the one the connection returned. On an SSL check, a bad certificate is reported as a certificate problem instead.
- Blocked by a firewall or bot protection: often a 403 or 503 answer, a challenge page instead of the file, or a timeout. On an uptime check, a 401, 403 or 429 where a page was expected is reported as Blocked for SEOComet, a warning, rather than as down.
- Too large: the answer is bigger than 5 MB, or 50 MB for a sitemap. Compressed files count at their unpacked size.
- Too many redirects: SEOComet follows up to 5 redirects and then gives up.
- Private address: the host resolves to a private or reserved IP address. SEOComet only connects to public addresses, so a staging site on an internal network can’t be checked.
- Broken gzip: the server says the response is gzip-compressed but it isn’t valid gzip, or the data is cut off. A broken .gz sitemap is reported as Sitemap can’t be read instead.
- Invalid address: only http and https addresses work, and addresses with a username or password aren’t fetched.
Let SEOCometBot through
Every HTTP request SEOComet makes sends this user agent:
SEOCometBot/1.0 (+https://www.seocomet.com/bot)
If your site sits behind a firewall, a web application firewall or bot protection such as Cloudflare’s, add a rule that
allows requests whose user agent contains SEOCometBot. Rate limits that answer 429 can block it too.
The SEOCometBot page lists everything it fetches, how often and the limits on each request.
Check it yourself
- Open the address in a private browser window. If it fails for you too, the problem is on the server, in DNS or in the certificate.
- If it works in a browser, request it with SEOCometBot’s user agent. From a terminal:
curl -s -o /dev/null -w "%{http_code}\n" -A "SEOCometBot/1.0 (+https://www.seocomet.com/bot)" https://www.example.com/robots.txt
Replace the address with the check’s. It prints the status code. A 403 or 503 usually points to a rule that blocks bots.
Your own computer isn’t on SEOComet’s network, so a block by IP address or country may not show up this way.
When you’ve fixed it, if you have Can edit on the site, press Run now on the check (resume it first if it’s paused) to try again without waiting for the schedule.
Still stuck
Email hello@seocomet.com with the check’s address and the time of a failed run. We’ll look at what SEOComet saw.