Skip to content
https://github.io

Infrastructure

· 9 checks — DNS, redirects, IPv6, crawlability, URL variants, and domain intelligence rolled into one auditable list.
SCORE
85
GRADE
B
FIX
0
REVIEW
3
PASS
6
INFO
0
Probed from Madrid, Spain
301 Moved Permanently
Checks
9
6 PASS 3 REVIEW
C
IPv6 Readiness
Action
No IPv6 support
REVIEW
No IPv6 support
Info::
No IPv6 (AAAA) records found
IPv6 support is increasingly important for global accessibility. About 40% of internet users have IPv6 connectivity.
No IPv6 Support
About 40% of internet users have IPv6. Consider adding AAAA records.

IPv6 support is increasingly important for global accessibility. About 40% of internet users have IPv6 connectivity.

Why this matters

No AAAA records — same impact as 'no IPv6 (AAAA) records'; IPv6-preferring clients pay extra latency falling back to IPv4.

Source: Google IPv6 stats

C
Crawlability
Action
robots.txt present, sitemap with 0 URLs
REVIEW
robots.txt present, sitemap with 0 URLs
Info::
robots.txt is present
Got: 10240 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 does not reference a sitemap
Add a 'Sitemap:' directive to robots.txt so search engines can discover your 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

Add a 'Sitemap:' directive to robots.txt so search engines can discover your sitemap.

Why this matters

robots.txt omits Sitemap: directive — crawlers must fetch /sitemap.xml by convention; reliable but missing the explicit hint.

Source: sitemaps.org

robots.txt 200 OK
Size 10240 B Sitemaps referenced 0 User-agents Blocking No — crawling allowed
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="0; url=https://docs.github.com/pages" />
    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
    <link type="text/css" href="/css/pages.css" media="all" rel="stylesheet">

    <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>GitHub Pages | Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="GitHub Pages" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live." />
<meta property="og:description" content="Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live." />
<link rel="canonical" href="https://pages.github.com/" />
<meta property="og:url" content="https://pages.github.com/" />
<meta property="og:site_name" content="GitHub Pages" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="GitHub Pages" />
<meta name="twitter:site" content="@github" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebSite","description":"Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.","headline":"GitHub Pages","name":"GitHub Pages","url":"https://pages.github.com/"}</script>
<!-- End Jekyll SEO tag -->

  </head>

  <body class="home ">


<section id="hero-spot" class="hero-spot">
    <a href="/"><img src="/images/logo.svg" alt="GitHub Pages" class="logo" /></a>

    <h1>Websites for you and your projects.</h1>
    <h2>Hosted directly from your <a href="https://github.com">GitHub repository</a>. Just edit, push, and your changes are live.</h2>

    <a href="https://help.github.com/pages/" class="help-link">Pages Help</a>

    <div id="slideshow">
      <img src="/images/slideshow/bootstrap.png" alt="Bootstrap" class="slide active" width="893" />
    </div>
</section>

<section id="tutorial" class="tutorial">
  <h1>Ready to get started? Build your own site from scratch or generate one for your project.</h1>
  <h2>You get one site per GitHub account and organization, <br />and unlimited project sites. Let‘s get started.</h2>

  <ul class="tabs">
    <li><a href="#user-site" class="selected">User or organization site</a></li>
    <li><a href="#project-site">Project site</a></li>
  </ul>

  <!-- ### Start of tutorials -->
  <ul id="user-site" class="tutorial-list wrapper active">
    <li id="create-repo-step" class="image-right">
      <h4>Create a repository</h4>
      <p>Head over to <a href="https://github.com">GitHub</a> and <a data-proofer-ignore="true" href="https://github.com/new">create a new public repository</a> named <em>username</em>.github.io, where <em>username</em> is your username (or organization name) on GitHub.</p>

      <p class="details">If the first part of the repository doesn’t exactly match your username, it won’t work, so make sure to get it right.</p>
    </li>

    <li class="question">
      <h4>What git client are you using?</h4>
      <ul class="tabs">
        <li><a id="option-terminal" href="#terminal-step-1" class="selected">A terminal</a></li>
        <li><a id="option-desktop" href="#setup-in-desktop">GitHub Desktop</a></li>
        <li><a id="option-newuser" href="#new-user-step-1">I don't know</a></li>
      </ul>
    </li>

    <li id="new-user-step-1" class="option-newuser">
      <h4>Download GitHub Desktop</h4>
      <p>GitHub Desktop is a great way to use Git and GitHub on macOS and Windows.</p>

      <a class="desktop-download" href="https://desktop.github.com"><span class="icon"></span>Download GitHub Desktop</a>

      <img src="images/dashboard@2x.png" width="1054" alt="GitHub Desktop screenshot" class="full-size" />
    </li>

    <li id="terminal-step-1" class="option-terminal">
      <h4>Clone the repository</h4>
      <p>Go to the folder where you want to store your project, and clone the new repository:</p>

      <div class="terminal">
        <div class="header"></div>
        <div class="shell">
          <p><span class="path">~</span><span class="prompt">$</span>git clone https://github.com/<em>username</em>/<em>username</em>.github.io</p>
        </div>
      </div>
    </li>

    <li id="setup-in-desktop" class="option-desktop image-right">
      <h4>Clone the repository</h4>
      <p>Click the "Set up in Desktop" button. When the GitHub desktop app opens, save the project.</p>

      <p class="details">If the app doesn't open, launch it and clone the repository from the app.</p>
    </li>

    <li id="setup-in-desktop" class="option-newuser image-right">
      <h4>Clone the repository</h4>
      <p>After finishing the installation, head back to GitHub.com and refresh the page. Click the "Set up in Desktop" button. When the GitHub desktop app opens, save the project.</p>

      <p class="details">If the app doesn't open, launch it and clone the repository from the app.</p>
    </li>

    <li class="option-terminal">
      <h4>Hello World</h4>
      <p>Enter the project folder and add an index.html file:</p>

      <div class="terminal">
        <div class="header"></div>
        <div class="shell">
          <p><span class="path">~</span><span class="prompt">$</span>cd <em>username</em>.github.io</p>
          <p><span class="path">~</span><span class="prompt">$</span>echo "Hello World" > index.html</p>
        </div>
      </div>
    </li>

    <li class="option-desktop option-newuser">
      <h4>Create an index file</h4>
      <p>Grab your favorite text editor and add an index.html file to your project:</p>

      <div class="terminal">
        <div class="header">index.html</div>
        <code class="shell">
          <pre>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;body&gt;
&lt;h1&gt;Hello World&lt;/h1&gt;
&lt;p&gt;I'm hosted with GitHub Pages.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
      </code>
    </li>

    <li class="option-terminal">
      <h4>Push it</h4>
      <p>Add, commit, and push your changes:</p>

      <div class="terminal">
        <div class="header"></div>
        <div class="shell">
          <p><span class="path">~</span><span class="prompt">$</span>git add --all</p>
          <p><span class="path">~</span><span class="prompt">$</span>git commit -m "Initial commit"</p>
          <p><span class="path">~</span><span class="prompt">$</span>git push -u origin main</p>
        </div>
      </div>
    </li>

    <li class="option-desktop option-newuser">
      <h4>Commit &amp; publish</h4>

      <p>Enter the repository, commit your changes, and press the publish button.</p>

      <img src="images/desktop-demo@2x.gif" width="841" alt="Demonstration of steps required to create the initial commit and publish the repository in GitHub Desktop" class="macos-drop-shadow" />
    </li>

    <li class="option-all">
      <h4>…and you're done!</h4>
      <p>Fire up a browser and go to <strong>https://<em>username</em>.github.io</strong>.</p>
      <div class="hero-octicon">
        <span class="mega-octicon octicon-check"></span>
      </div>
    </li>
  </ul>
  <!-- End of user site tutorial -->

  <!-- Project Site tutorial -->
  <ul id="project-site" class="tutorial-list wrapper">
    <li class="question">
      <h4>Use a theme, or start from scratch?</h4>
      <p>You have the option to start with one of the pre-built themes,
        <br>or to create a site from scratch.
      <ul class="tabs">
        <li><a id="option-generate" href="#generate-step-1" class="selected">Choose a theme</a></li>
        <li><a id="option-vanilla" href="#vanilla-step-1">Start from scratch</a></li>
      </ul>
    </li>

    <li id="generate-step-1" class="option-generate">
      <h4>Repository Settings</h4>
      <p>Head over to <a href="https://github.com/">GitHub.com</a> and create a new repository, or go to an existing one.
        <br><strong>Click on the Settings tab</strong>.</p>

      <img src="images/repo-settings@2x.png" width="720" alt="Settings for a repository" />
    </li>

    <li class="option-generate">
      <h4>Theme chooser</h4>
      <p>Scroll down to the <strong>GitHub Pages</strong> section. Press <strong>Choose a theme</strong>.</p>
      <img src="images/launch-theme-chooser@2x.png" width="720" alt="Automatic Generator button on GitHub.com, Settings" />
    </li>

    <li class="option-generate">
      <h4>Pick a theme</h4>
      <p>Choose one of the themes from the carousel at the top.
      <br>When you're done, click <strong>Select theme</strong> on the right.</p>

      <img src="images/theme-chooser@2x.png" class="full-size" width="720" alt="Choose layout" />
    </li>

    <li class="option-generate">
      <h4>Edit content</h4>
      <p>Use the editor to add content to your site.</p>
      <img class="full-size" src="images/code-editor@2x.png" width="720" alt="Add content to your GitHub Pages site" />
    </li>

    <li class="option-generate">
      <h4>Commit</h4>
      <p>Enter a commit comment and click on <strong>Commit changes</strong> below the editor.</p>
      <img class="full-size" src="images/commit-edits@2x.png" width="720" alt="Commit Markdown content to your repository" />
    </li>

    <!-- Start of vanilla sub tutorial -->
    <li id="vanilla-step-1" class="option-vanilla">
      <h4>Create an index file</h4>
      <p>Head over to <a href="https://github.com/">GitHub.com</a> and <a data-proofer-ignore="true" href="https://github.com/new">create a new repository</a>, or go to an existing one.
      <br />Click on the <strong>Create new file</strong> button.</p>

      <img src="images/new-create-file@2x.png" width="720" alt="Create a file in your repository" />
    </li>

    <li class="option-vanilla">
      <h4>Hello World</h4>
      <p>Name the file <code>index.html</code> and type some HTML content into the editor.</p>

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

Certificate validity

80
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
A+
DNS Records
4 A records, 33 ms lookup
PASS
4 A records, 33 ms lookup
Info::
Resolves to 4 IPv4 address(es)
Got: 185.199.109.153, 185.199.111.153, 185.199.108.153, 185.199.110.153
Info::
No IPv6 (AAAA) records
Info::
8 nameserver(s) configured
Got: dns3.p05.nsone.net, ns-393.awsdns-49.com, ns-692.awsdns-22.net, ns-1339.awsdns-39.org, dns4.p05.nsone.net, ns-1622.awsdns-10.co.uk, dns2.p05.nsone.net, dns1.p05.nsone.net
Info::
No MX records — email not configured via DNS
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: 33 ms
Got: 33 ms
A185.199.109.153, 185.199.111.153, 185.199.108.153, 185.199.110.153
AAAA
CNAME
NSdns3.p05.nsone.net, ns-393.awsdns-49.com, ns-692.awsdns-22.net, ns-1339.awsdns-39.org, dns4.p05.nsone.net, ns-1622.awsdns-10.co.uk, dns2.p05.nsone.net, dns1.p05.nsone.net
MX
TXT
SPF v=spf1 a -all
CAALookup not available with standard resolver
Resolved in 33 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
1 redirect(s), 32 ms total
PASS
1 redirect(s), 32 ms total
Info::
Single redirect
Got: https://github.io → https://pages.github.com/ (301)
Info::
Cross-domain redirect detected

https://github.io

5 ms · HTTP/1.1

301

https://pages.github.com/

27 ms · HTTP/1.1 FINAL

#URLStatusTimeProtocolServer
1https://github.io3015 msHTTP/1.1Varnish
2https://pages.github.com/20027 msHTTP/1.1GitHub.com

See the visual redirect chain in the HTTP Probe tab →

A+
URL Variants
www/non-www, trailing slash, HTTP→HTTPS
PASS
www/non-www, trailing slash, HTTP→HTTPS
Info::
www/non-www redirect configured correctly (preferred: non-www)
Info::
HTTP correctly 301-redirects to HTTPS

www / non-www

301https://www.github.io/
200https://github.io/

Preferred variant: non-www

HTTP → HTTPS

301http://github.io/ https://pages.github.com/

Consistent

A+
Domain Intelligence
github.io — via MarkMonitor Inc., 13 years, 3 months old, hosted on Fastly
PASS
github.io — via MarkMonitor Inc., 13 years, 3 months old, hosted on Fastly
Info::
Domain registered until Mar 8, 2027 (10 months remaining)
Info::
Registrar: MarkMonitor Inc.
Info::
Registrar lock is enabled
Domain cannot be transferred without explicit unlock from the registrar. This protects against unauthorized transfers.
Info::
Hosting: Fastly
Got: AS54113
Domain expiry

238 days

March 8, 2027

SSL certificate

80 days

Issued by Let's Encrypt

Domain age

13 years, 3 months

Registered March 8, 2013

DNSSEC

Status unknown

Protects against DNS spoofing

Hosting

Fastly

ASN AS54113

185.199.111.153

Registrar

MarkMonitor Inc.

Locked 5 NS records
Expiry timeline
Today
+1 year
Domain expiry SSL expiry Danger zone (≤30 days)
Registrar MarkMonitor Inc.
Created March 8, 2013 (13 years, 3 months ago)
Expires March 8, 2027 (10 months)
Last Updated February 9, 2025
Name Servers ns-692.awsdns-22.net, ns-1622.awsdns-10.co.uk, dns1.p05.nsone.net, dns2.p05.nsone.net, dns3.p05.nsone.net
Registrant GitHub, Inc.
Hosting
IP Address 185.199.111.153
ASN AS54113 (FASTLY - Fastly, Inc., US)
Provider Fastly
Data source: whois (1.4s)

Domain cannot be transferred without explicit unlock from the registrar. This protects against unauthorized transfers.

Why this matters

Registrar lock (clientTransferProhibited et al.) prevents unauthorized domain transfers — strongest defense against domain hijacking.

Source: ICANN / domain-security best practice

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

Connection waterfall

DNS Lookup 17 ms TCP Connect 0 ms TLS Handshake 3 ms Server Processing 1 ms Content Transfer 0 ms
A
CDN & Delivery
Fastly (MISS)
PASS
Fastly (MISS)
Info::
Site is served via Fastly CDN
Got: x-served-by: cache-toj-leto2350021-TOJ
Info::
CDN cache status: MISS
CDN Detected: Fastly
Provider Fastly Cache Status MISS Evidence x-served-by: cache-toj-leto2350021-TOJ
All checks on this page are automated. Results are estimates - run targeted manual reviews when the score affects a release decision.

Send Feedback