Skip to content
https://bookshop.org

Infrastructure

· 9 checks — DNS, redirects, IPv6, crawlability, URL variants, and domain intelligence rolled into one auditable list.
SCORE
94
GRADE
A
FIX
0
REVIEW
3
PASS
5
INFO
1
Probed from Madrid, Spain
403 Forbidden
Checks
9
5 PASS 3 REVIEW
B
Crawlability
robots.txt present, sitemap with 0 URLs
REVIEW
robots.txt present, sitemap with 0 URLs
Info::
robots.txt is present
Got: 2089 bytes
Info::
sitemap.xml is present
Warning::
sitemap.xml contains invalid XML
Search engines may not be able to parse the sitemap. Fix XML validation errors.
Warning::
sitemap.xml is empty — no URLs found
An empty sitemap provides no value. Add <url> entries for your pages.
Info::
robots.txt references sitemap

Search engines may not be able to parse the sitemap. Fix XML validation errors.

Why this matters

An unparseable sitemap is silently ignored by Google — the URLs it advertises are never queued for crawl.

Learn more

Google's sitemap parser is strict about XML validity. A single unescaped `&` or unclosed tag invalidates the whole file. Run your sitemap through a validator (Search Console's Sitemaps report flags it) and fix the offending entry. Most generators escape correctly; mistakes usually come from manually-written entries.

Source: sitemaps.org / Google Search Central

An empty sitemap provides no value. Add <url> entries for your pages.

Why this matters

An empty sitemap signals 'no content to index' to Google — actively harmful versus having no sitemap at all.

Learn more

Google compares URLs in the sitemap against URLs it has crawled. An empty sitemap on a site with thousands of pages signals abandonment. Either populate it correctly (most CMSes auto-generate) or delete the file and let Google crawl normally.

Source: Google Search Central / sitemaps.org

robots.txt 200 OK
Size 2089 B Sitemaps referenced 1 User-agents Amazonbot, Applebot-Extended, Bytespider, CCBot, ClaudeBot, CloudflareBrowserRenderingCrawler, Google-Extended, GPTBot, *, meta-externalagent Blocking No — crawling allowed
# As a condition of accessing this website, you agree to abide by the following
# content signals:

# (a)  If a Content-Signal = yes, you may collect content for the corresponding
#      use.
# (b)  If a Content-Signal = no, you may not collect content for the
#      corresponding use.
# (c)  If the website operator does not include a Content-Signal for a
#      corresponding use, the website operator neither grants nor restricts
#      permission via Content-Signal with respect to the corresponding use.

# The content signals and their meanings are:

# search:   building a search index and providing search results (e.g., returning
#           hyperlinks and short excerpts from your website's contents). Search does not
#           include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
#           augmented generation, grounding, or other real-time taking of content for
#           generative AI search answers).
# ai-train: training or fine-tuning AI models.

# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.

# BEGIN Cloudflare Managed content

User-agent: *
Content-Signal: search=yes,ai-train=no
Allow: /

User-agent: Amazonbot
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: Bytespider
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: CloudflareBrowserRenderingCrawler
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: GPTBot
Disallow: /

User-agent: meta-externalagent
Disallow: /

# END Cloudflare Managed Content

# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
User-agent: *
Disallow: /checkout
Disallow: /cart
Disallow: /orders
Disallow: /user
Disallow: /account
Disallow: /api
Disallow: /password
Disallow: /affiliates/profile
Allow: /affiliates/profile/introduction
Sitemap: https://bookshop.org/sitemap.xml.gz

sitemap.xml 200 OK
Type URL Set URLs 0 entries Valid XML No
B
TLS Certificate Expiry & Recommendations
86 days until leaf cert expires — 3 issues to address
REVIEW

Certificate validity

86
days left
0d 30d 60d 90d+

Recommended actions

  • Enable HSTS: Strict-Transport-Security: max-age=31536000; includeSubDomains
  • Enable DNSSEC on your domain for DNS spoofing protection
  • Enable OCSP stapling on your TLS server to remove a CA roundtrip and protect user privacy
B
CDN & Delivery
Cloudflare
REVIEW
Cloudflare
Info::
Site is served via Cloudflare CDN (edge: CDG)
Got: cf-ray: 9eff765e2c1e137e-CDG
CDN Detected: Cloudflare
Provider Cloudflare Evidence cf-ray: 9eff765e2c1e137e-CDG
A+
DNS Records
2 A records, 31 ms lookup
PASS
2 A records, 31 ms lookup
Info::
Resolves to 2 IPv4 address(es)
Got: 104.18.22.66, 104.18.23.66
Info::
Has 2 IPv6 (AAAA) record(s)
Got: 2606:4700::6812:1642, 2606:4700::6812:1742
Info::
2 nameserver(s) configured
Got: ruth.ns.cloudflare.com, apollo.ns.cloudflare.com
Info::
5 mail exchanger(s) configured
Info::
CAA records not checked
CAA record lookup requires a specialized DNS resolver. This check will be available in a future update.
Info::
SPF record present in TXT
Info::
DNS resolution time: 31 ms
Got: 31 ms
A104.18.22.66, 104.18.23.66
AAAA2606:4700::6812:1642, 2606:4700::6812:1742
CNAME
NSruth.ns.cloudflare.com, apollo.ns.cloudflare.com
MX
10 aspmx.l.google.com
20 alt1.aspmx.l.google.com
30 alt2.aspmx.l.google.com
40 aspmx2.googlemail.com
50 aspmx3.googlemail.com
TXT
ahrefs-site-verification_2c49a867aa13e18e52b7083647a1aa7312d3514bcdee3ec1ed243ea...
google-site-verification=yJsL117HxmKp0FSw7cCXP9JS7oADMI_O7Dm4XFmcQg0
google-site-verification=3Btb75TI9y6X-MJbQ5BcabKiuTGVwn6LAaRdSHGkrGU
unbounce463552‍
SPF v=spf1 include:_spf.google.com include:sendgrid.net ~all include:mailgun.org ~al...
google-site-verification=ACxp7MHBdbSvmGuFrPl6OWaGf9UDxUvM0Ih_wzyqGfs
anthropic-domain-verification-07nhpa=QqdcbG07wqlfx1TRbVvrlLESe
rippling-domain-verification=91d5f2d7a2d8fc35
klaviyo-site-verification=WZbrn4
CAALookup not available with standard resolver
Resolved in 31 ms

CAA record lookup requires a specialized DNS resolver. This check will be available in a future update.

Why this matters

Informational: CAA (Certification Authority Authorization) records weren't checked in this scan.

A+
Redirect Chain
0 redirect(s), 61 ms total
PASS
0 redirect(s), 61 ms total

https://bookshop.org

61 ms · HTTP/1.1 FINAL

#URLStatusTimeProtocolServer
1https://bookshop.org40361 msHTTP/1.1cloudflare
A+
IPv6 Readiness
IPv6 reachable (17 ms)
PASS
IPv6 reachable (17 ms)
Info::
IPv6 is configured and reachable at 2606:4700::6812:1642, 2606:4700::6812:1742
Got: 17 ms connect
IPv6 Ready
AAAA Records 2606:4700::6812:1642, 2606:4700::6812:1742 Connection Reachable (17 ms)
A+
URL Variants
www/non-www, trailing slash, HTTP→HTTPS
PASS
www/non-www, trailing slash, HTTP→HTTPS
Info::
HTTP correctly 301-redirects to HTTPS

www / non-www

403https://www.bookshop.org/
200https://bookshop.org/

HTTP → HTTPS

301http://bookshop.org/ https://bookshop.org/

Consistent

A+
HTTP Probe Timing
Total 92 ms — DNS, TCP, TLS, TTFB, content transfer breakdown
PASS
DNS Lookup DNS Lookup — time to resolve the domain name to an IP address.
31 ms
TCP Connect TCP Connect — time to establish a TCP connection to the server.
17 ms
TLS Handshake TLS Handshake — time to complete the HTTPS encryption handshake.
22 ms
Time to First Byte Time to First Byte — how long the server takes to respond with the first byte of data.
92 ms
Total Time Total request time from DNS lookup through full response.
92 ms

Connection waterfall

DNS Lookup 31 ms TCP Connect 17 ms TLS Handshake 22 ms Server Processing 22 ms Content Transfer 0 ms
Domain Intelligence
Domain intelligence data not available
INFO
Domain intelligence data not available

RDAP and WHOIS lookup both failed

All checks on this page are automated. Results are estimates - run targeted manual reviews when the score affects a release decision.

Send Feedback