Infrastructure
· 9 checks — DNS, redirects, IPv6, crawlability, URL variants, and domain intelligence rolled into one auditable list.DRedirect ChainAction3 redirect(s), 739 ms totalFIX
https://readthedocs.io
88 ms · HTTP/1.1
https://readthedocs.org
89 ms · HTTP/1.1
https://app.readthedocs.org/welcome/
436 ms · HTTP/1.1
https://about.readthedocs.com/?ref=app.r...
125 ms · HTTP/1.1 FINAL
| # | URL | Status | Time | Protocol | Server |
|---|---|---|---|---|---|
| 1 | https://readthedocs.io | 302 | 88 ms | HTTP/1.1 | cloudflare |
| 2 | https://readthedocs.org | 302 | 89 ms | HTTP/1.1 | cloudflare |
| 3 | https://app.readthedocs.org/welcome/ | 302 | 436 ms | HTTP/1.1 | cloudflare |
| 4 | https://about.readthedocs.com/?ref=app.r... | 200 | 125 ms | HTTP/1.1 | cloudflare |
See the visual redirect chain in the HTTP Probe tab →
Each redirect adds latency. Try to minimize the chain to 1 hop.
Redirect chain — each hop adds latency; combine into one redirect where possible.
Source: Google Search Central / web.dev
If permanent, use 301 instead.
302 (Found) is for genuinely temporary redirects — if this redirect is permanent, switch to 301 to preserve SEO equity.
Learn more ▾ ▴
Search engines treat 302 as temporary, keeping the original URL indexed and not transferring full link equity to the destination. Use 301 (Moved Permanently) for permanent redirects (HTTP→HTTPS, www-vs-non-www, URL restructures).
Source: Google Search Central
CCrawlabilityActionrobots.txt present, sitemap with 0 URLsREVIEW
Search engines may not be able to parse the sitemap. Fix XML validation errors.
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.
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
Add a 'Sitemap:' directive to robots.txt so search engines can discover your sitemap.
robots.txt omits Sitemap: directive — crawlers must fetch /sitemap.xml by convention; reliable but missing the explicit hint.
Source: sitemaps.org
<!DOCTYPE html>
<html lang="en">
<head>
<title>Full featured documentation deployment platform - Read the Docs</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:site_name" content="Read the Docs" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Full featured documentation deployment platform" />
<meta property="twitter:title" content="Full featured documentation deployment platform" />
<meta name="description" content="Read the Docs is a documentation building and hosting platform aimed at helping developers creating documentation from code with versioned documentation, integrated search, pull request previews and more." />
<meta property="og:description" content="Read the Docs is a documentation building and hosting platform aimed at helping developers creating documentation from code with versioned documentation, integrated search, pull request previews and more." />
<meta property="twitter:description" content="Read the Docs is a documentation building and hosting platform aimed at helping developers creating documentation from code with versioned documentation, integrated search, pull request previews and more." />
<meta property="og:image" content="/images/logo-opengraph.png" />
<meta property="twitter:image" content="/images/logo-opengraph.png" />
<meta name="author" content="Read the Docs, Inc" />
<link rel="apple-touch-icon" sizes="180x180" href="https://about.readthedocs.com/theme/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://about.readthedocs.com/theme/img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="24x24" href="https://about.readthedocs.com/theme/img/favicon-24x24.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://about.readthedocs.com/theme/img/favicon-16x16.png">
<link rel="shortcut icon" href="https://about.readthedocs.com/theme/img/favicon.ico">
<link href="https://about.readthedocs.com//feeds/atom.xml" type="application/atom+xml" rel="alternate" title="Read the Docs Atom Feed" />
<link rel="stylesheet" type="text/css" href="https://about.readthedocs.com/theme/css/site.css" />
<script src="https://kit.fontawesome.com/53af4251af.js" crossorigin="anonymous"></script>
<script src="https://about.readthedocs.com/theme/js/vendor.js"></script>
<script src="https://about.readthedocs.com/theme/js/site.js"></script>
<script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="readthedocs-about" /><meta name="readthedocs-version-slug" content="latest" /><meta name="readthedocs-resolver-filename" content="/" /><meta name="readthedocs-http-status" content="200" /></head>
<body>
<div class="ui basic fitted attached segment">
<div class="ui container">
<div class="ui middle aligned grid">
<div class="four wide computer five wide tablet eleven wide mobile left aligned column">
<div class="ui horizontally fitted basic segment">
<a href="https://about.readthedocs.com/" aria-label="Read the Docs homepage">
<img class="ui image" src="https://about.readthedocs.com/theme/img/logo-wordmark-dark.svg" width="220" alt="Read the Docs logo"/>
</a>
</div>
</div>
<div class="five wide mobile only right aligned column">
<div class="ui wide dropdown" data-module="dropdown" data-action="select">
<i class="fad fa-bars large icon" style="--fa-secondary-opacity: 0.8;"></i>
<div class="menu">
<div class="header">Log in</div>
<a class="item" data-analytics="community-login" href="https://app.readthedocs.org/dashboard/">
<i class="fad fa-people-group primary icon"></i>
Read the Docs Community
<p class="ui mini grey text">
<code>https://readthedocs.org</code>
</p>
</a>
<a class="item" data-analytics="commercial-login" href="https://app.readthedocs.com/dashboard/">
<i class="fad fa-building secondary icon"></i>
Read the Docs Business
<p class="ui mini grey text">
<code>https://readthedocs.com</code>
</p>
</a>
<a class="item"
data-analytics="signup-modal"
onclick="jQuery('#signup-modal').modal('show');">
<i class="fas fa-plus primary icon"></i>
Sign up
</a>
<a class="item" href="/choosing-a-platform/">
<i class="fad fa-circle-question grey icon"></i>
Choosing a platform
</a>
<div class="divider"></div>
<a class="item" href="https://about.readthedocs.com/features/">
<i class="fad fa-arrow-progress primary icon"></i>
Product
</a>
<div class="divider"></div>
<div class="header">Plans</div>
<a class="item" href="https://about.readthedocs.com/pricing/#/business">
<i class="fad fa-diagram-venn primary icon"></i>
Business plans
</a>
<a class="item" href="https://about.readthedocs.com/pricing/#/community">
<i class="fad fa-diagram-venn primary icon"></i>
Community plans
</a>
<a class="item" href="https://about.readthedocs.com/pricing/enterprise/">
<i class="fad fa-briefcase primary icon"></i>
Enterprise plans
</a>
<div class="divider"></div>
<div class="header">Updates</div>
<a class="item" href="https://about.readthedocs.com/blog/">
<i class="fad fa-newspaper fa-swap-opacity primary icon"></i>
Blog
</a>
<div class="header">Help</div>
<a class="item" href="http://status.readthedocs.com" target="_blank">
<i class="fad fa-circle-check fa-swap-opacity primary icon"></i>
Status
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io/page/support.html" target="_blank">
<i class="fad fa-envelope primary icon"></i>
Support
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io" target="_blank">
<i class="fad fa-book primary icon"></i>
Documentation
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io/page/tutorial/" target="_blank">
<i class="fad fa-rocket primary icon"></i>
Tutorial
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
</div>
</div>
</div>
<div class="twelve wide computer eleven wide tablet left aligned tablet only computer only column">
<div class="ui big borderless secondary menu">
<a class="item" href="https://about.readthedocs.com/features/">
Product
</a>
<div
class="ui wide dropdown item"
data-module="dropdown"
data-module-on="hover">
Pricing
<i class="dropdown fad fa-caret-down icon"></i>
<div class="menu">
<div class="header">Plans</div>
<a class="item" href="https://about.readthedocs.com/pricing/#/business">
<i class="fad fa-diagram-venn primary icon"></i>
Business plans
</a>
<a class="item" href="https://about.readthedocs.com/pricing/#/community">
<i class="fad fa-diagram-venn primary icon"></i>
Community plans
</a>
<a class="item" href="https://about.readthedocs.com/pricing/enterprise/">
<i class="fad fa-briefcase primary icon"></i>
Enterprise plans
</a>
</div>
</div>
<div
class="ui wide dropdown item"
data-module="dropdown"
data-module-on="hover">
Resources
<i class="dropdown fad fa-caret-down icon"></i>
<div class="menu">
<div class="header">Updates</div>
<a class="item" href="https://about.readthedocs.com/blog/">
<i class="fad fa-newspaper fa-swap-opacity primary icon"></i>
Blog
</a>
<div class="header">Help</div>
<a class="item" href="http://status.readthedocs.com" target="_blank">
<i class="fad fa-circle-check fa-swap-opacity primary icon"></i>
Status
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io/page/support.html" target="_blank">
<i class="fad fa-envelope primary icon"></i>
Support
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io" target="_blank">
<i class="fad fa-book primary icon"></i>
Documentation
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
<a class="item" href="https://docs.readthedocs.io/page/tutorial/" target="_blank">
<i class="fad fa-rocket primary icon"></i>
Tutorial
<span class="description">
<i class="fad fa-external-link icon"></i>
</span>
</a>
</div>
</div>
<div class="right menu">
<div class="item">
<div class="ui floating top right pointing dropdown" data-module="dropdown" data-action="select" data-display-type="block">
<a class="ui">
Log in
</a>
<div class="menu">
<div class="header">Log in</div>
<a class="item" data-analytics="community-login" href="https://app.readthedocs.org/dashboard/">
<i class="fad fa-people-group primary icon"></i>
Read the Docs Community
<p class="ui mini grey text">
<code>https://readthedocs.org</code>
</p>
</a>
<a class="item" data-analytics="commercial-login" href="https://app.readthedocs.com/dashboard/">
<i class="fad fa-building secondary icon"></i>
Read the Docs Bu
BTLS Certificate Expiry & Recommendations68 days until leaf cert expires — 3 issues to addressREVIEW
Certificate validity
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
A+DNS Records2 A records, 31 ms lookupPASS
| A | 104.16.253.120, 104.16.254.120 |
| AAAA | 2606:4700::6810:fd78, 2606:4700::6810:fe78 |
| CNAME | — |
| NS | ivan.ns.cloudflare.com, tegan.ns.cloudflare.com |
| MX | 1 aspmx.l.google.com 5 alt1.aspmx.l.google.com 5 alt2.aspmx.l.google.com 10 aspmx3.googlemail.com 10 aspmx2.googlemail.com |
| TXT | — |
| CAA | Lookup not available with standard resolver |
CAA record lookup requires a specialized DNS resolver. This check will be available in a future update.
Informational: CAA (Certification Authority Authorization) records weren't checked in this scan.
SPF helps prevent email spoofing. Add a TXT record starting with 'v=spf1'.
Without SPF, receiving servers can't validate sending IPs — your domain is easier to spoof in phishing.
Learn more ▾ ▴
SPF complements DMARC. Both should be published. SPF records list authorized sending IPs (e.g., `v=spf1 include:_spf.google.com ~all` for Google Workspace). After publishing, verify in Google Postmaster Tools or mxtoolbox.
Source: RFC 7208 (SPF)
A+IPv6 ReadinessIPv6 reachable (17 ms)PASS
AURL Variantswww/non-www, trailing slash, HTTP→HTTPSPASS
www / non-www
Preferred variant: non-www
HTTP → HTTPS
Use 301 (permanent) instead of 302 (temporary)
A+Domain Intelligencereadthedocs.io — via Cloudflare, Inc, 12 years oldPASS
703 days
June 14, 2028
68 days
Issued by Google Trust Services
12 years
Registered June 14, 2014
Status unknown
Protects against DNS spoofing
Unknown
2606:4700::6810:fe78
Cloudflare, Inc
Expiry timeline
Domain cannot be transferred without explicit unlock from the registrar. This protects against unauthorized transfers.
Registrar lock (clientTransferProhibited et al.) prevents unauthorized domain transfers — strongest defense against domain hijacking.
Source: ICANN / domain-security best practice