Infrastructure
· 9 checks — DNS, redirects, IPv6, crawlability, URL variants, and domain intelligence rolled into one auditable list.FRedirect ChainAction3 redirect(s), 1976 ms totalFIX
https://utah.gov
567 ms · HTTP/1.0
https://www.utah.gov
824 ms · HTTP/1.1
http://www.utah.gov/index.html
281 ms · HTTP/1.1
https://www.utah.gov/index.html
304 ms · HTTP/1.1 FINAL
| # | URL | Status | Time | Protocol | Server |
|---|---|---|---|---|---|
| 1 | https://utah.gov | 302 | 567 ms | HTTP/1.0 | BigIP |
| 2 | https://www.utah.gov | 302 | 824 ms | HTTP/1.1 | Apache |
| 3 | http://www.utah.gov/index.html | 301 | 281 ms | HTTP/1.1 | CloudFront |
| 4 | https://www.utah.gov/index.html | 200 | 304 ms | HTTP/1.1 | Apache |
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
Redirect directly from https://utah.gov to https://www.utah.gov/index.html
Redirect chain could be flattened to one hop — server config tweak removes intermediate latency.
Source: 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
DCDN & DeliveryActionNo CDN detectedFIX
Consider using a CDN to improve global delivery speed and reduce origin load.
CIPv6 ReadinessActionNo IPv6 supportREVIEW
IPv6 support is increasingly important for global accessibility. About 40% of internet users have IPv6 connectivity.
No AAAA records — same impact as 'no IPv6 (AAAA) records'; IPv6-preferring clients pay extra latency falling back to IPv4.
Source: Google IPv6 stats
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>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="The Official Website of the State of Utah">
<meta name="keywords" content="utah, utah government, state of utah">
<title data-title="Utah.gov">Home | Utah.gov</title>
<link rel="stylesheet" href="./css/styles.css?v=20260410">
<meta property="og:title" content="Home | Utah.gov">
<meta property="og:description" content="The Official Website of the State of Utah">
<meta property="og:image" content="/img/deviceIcons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="57x57" href="./img/deviceIcons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./img/deviceIcons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./img/deviceIcons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./img/deviceIcons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./img/deviceIcons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./img/deviceIcons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./img/deviceIcons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./img/deviceIcons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./img/deviceIcons/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./img/deviceIcons/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="./img/deviceIcons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="./img/deviceIcons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="./img/deviceIcons/favicon-16x16.png">
<link rel="shortcut icon" type="image/jpg" href="./img/deviceIcons/favicon-32x32.png">
<link rel="manifest" href="./img/deviceIcons/manifest.json">
<meta name="msapplication-TileColor" content="#175264">
<meta name="msapplication-TileImage" content="./img/deviceIcons/ms-icon-144x144.png">
<meta name="theme-color" content="#175264">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-621Q114PFJ"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-621Q114PFJ');
</script>
<script type="text/javascript">
(function(){var g=function(e,h,f,g){
this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
this.start=function(){var t=this;"complete"!==document.readyState?window.addEventListener?window.addEventListener("load",function(){t.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){t.go()}):t.go()};};
try{(new g(100,"r","QSI_S_ZN_bPzG8VFyVvBeKxw","https://znbpzg8vfyvvbekxw-utconcierge.siteintercept.qualtrics.com/SIE/?Q_ZID=ZN_bPzG8VFyVvBeKxw")).start()}catch(i){}})();
</script>
<div id="ZN_bPzG8VFyVvBeKxw"></div>
</head>
<body class="" data-type="" data-section="" data-page="home">
<header>
<div id="header--brandContainer">
<a href="." aria-label="Home">Utah.gov - An official website</a>
</div>
<nav>
<button class="User-Confuser" id="menuActivator" type="button" aria-label="Menu">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<line class="hiveburger__line" id="line3" x1="22" y1="61.5" x2="73" y2="61.5"></line>
<line class="hiveburger__line" id="line3-2" x1="22" y1="49.5" x2="73" y2="49.5"></line>
<line class="hiveburger__line" id="line3-1" x1="22" y1="37.5" x2="73" y2="37.5"></line>
<line class="hiveburger__line" id="lineX1" x1="29.97" y1="31.97" x2="66.03" y2="68.03"></line>
<line class="hiveburger__line" id="lineX2" x1="29.97" y1="68.03" x2="66.03" y2="31.97"></line>
</svg>
</button>
<form id="nav--searchForm" action="./search/" method="get">
<p class="searchField">
<label for="nav--search">Search Utah.gov</label>
<input type="search" name="q" id="nav--search" placeholder="Search" aria-label="Search Utah.gov">
<button type="submit" aria-label="Submit Search">Search</button>
</p>
</form>
<ul id="nav--main">
<li><a href="./services/">Services</a></li>
<li><a href="./government/">Government</a></li>
<li><a href="./business/">Business</a></li>
<li><a href="./employment/">Employment</a></li>
<li><a href="./education/">Education</a></li>
<li><a href="./visit/">Visit</a></li>
<li><a href="./local/">Residents</a></li>
<li><a href="./about/">About</a></li>
</ul>
<ul id="nav--support">
<li><a href="./support/">Support</a></li>
<li><button id="nav--settings-toggle" aria-label="Site Settings"><svg version="1.1" id="settings" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
<style type="text/css">
.white{fill:#fff;}
</style>
<filter id="dropshadow" height="130%">
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="0" dy="0" result="offsetblur"/>
<feComponentTransfer>
<feFuncA type="linear" slope="0.35"/>
</feComponentTransfer>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<g transform="matrix(1, 0, 0, 1, 0, 0)">
<path style="filter:url(#dropshadow)" id="Path_34-2" class="white" d="M44.1,27.4c0.1-0.8,0.2-1.6,0.2-2.4c0-0.8-0.1-1.6-0.2-2.4l5.4-4.1c0.5-0.4,0.6-1.1,0.3-1.6
l-5.1-8.7c-0.3-0.5-1-0.8-1.6-0.6l-6.4,2.5c-1.3-1-2.8-1.8-4.3-2.4l-1-6.6C31.3,0.4,30.8,0,30.1,0H19.9c-0.6,0-1.2,0.4-1.3,1.1
l-1,6.6c-1.5,0.6-3,1.4-4.3,2.4L6.9,7.6c-0.6-0.2-1.3,0-1.6,0.6l-5.2,8.7c-0.3,0.5-0.2,1.2,0.3,1.6l5.4,4.1c-0.3,1.6-0.3,3.3,0,4.9
l-5.4,4.1c-0.5,0.4-0.6,1.1-0.3,1.6l5.2,8.7c0.3,0.5,1,0.8,1.6,0.6l6.4-2.5c1.3,1,2.8,1.8,4.3,2.4l1,6.6c0.1,0.6,0.7,1.1,1.3,1.1
h10.3c0.6,0,1.2-0.4,1.3-1.1l1-6.6c1.5-0.6,3-1.4,4.3-2.4l6.4,2.5c0.6,0.2,1.3,0,1.6-0.6l5.1-8.7c0.3-0.5,0.2-1.2-0.3-1.6
L44.1,27.4L44.1,27.4z M25,34.4c-5.2,0.1-9.6-4.1-9.6-9.4c0.2-5.3,4.6-9.5,9.9-9.3c5.1,0.2,9.2,4.3,9.3,9.3
C34.6,30.2,30.2,34.4,25,34.4L25,34.4z"/>
</g>
</svg></button>
</li>
</ul>
<ul id="nav--settings">
<li>
<h3>Text Size</h3>
<ul id="settings--text">
<li><button type="button" data-text="small">Aa-</button></li>
<li><button type="button" data-text="default">Default</button></li>
<li><button type="button" data-text="large">Aa+</button></li>
</ul>
</li>
<li>
<h3>Contrast</h3>
<ul id="settings--contrast">
<li><button type="button" data-contrast="high">High</button></li>
<li><button type="button" data-contrast="default">Default</button></li>
</ul>
</li>
<li>
<h3>Appearance</h3>
<ul id="settings--appearance">
<li><button type="button" data-appearance="light">Light</button></li>
<li><button type="button" data-appearance="dark">Dark</button></li>
<li><button type="button" data-appearance="auto">Auto</button></li>
</ul>
</li>
<li>
<h3>Chatbot</h3>
<ul id="settings--chatbot">
<li><button type="button" data-chatbot="on">On</button></li>
<li><button type="button" data-chatbot="off">Off</button></li>
</ul>
</li>
</ul>
</nav>
</header>
<div id="uds-header"></div>
<link rel="stylesheet" href="https://cdn.utah.gov/dts-ds-custom-header-plugin/header-dist/v5/beta/style.5.0.0.1.css">
<script src="https://cdn.utah.gov/dts-ds-custom-header-plugin/header-dist/v5/beta/utah-design-system-header.5.0.0.1.umd.js"></script>
<style>
.utah-design-system {
--primary-color: #071D49; /* Navy Blue */
--primary-color-dark: #135264;
--primary-color-light: #f0f0f0;
--header-primary-color: var(--primary-color);
background-color: white;
}
</style>
<script>
const isHome = () => {
const page = document.getElementsByTagName('body')[0].dataset.page;
let check = false;
if (page === 'home') check = true;
return check;
};
const udsMenuItems = [
{
title: 'Services',
actionUrl: { 'url': './services/' }
},
{
title: 'Government',
actionUrl: { 'url': './government/' }
},
{
title: 'Business',
actionUrl: { 'url': './business/' }
},
{
title: 'Employment',
actionUrl: { 'url': './employment/' }
},
{
title: 'Education',
actionUrl: { 'url': './education/' }
},
{
title: 'Visit',
actionUrl: { 'url': './visit/' }
},
{
title: 'Residents',
actionUrl: { 'url': './local/' }
},
{
title: 'About',
actionUrl: { 'url': './about/' }
}
];
if (!isHome()) {
const menuHome = {
title: 'Home',
actionUrl: { 'url': './' }
}
udsMenuItems.unshift(menuHome);
}
// wait for the utah header to be ready
document.addEventListener('utahHeaderLoaded', () => {
// set up the utah header
window["@utahdts/utah-design-system-header"].setUtahHeaderSettings({
domLocationTarget: { cssSelector: '#uds-header' },
title: '',
footer: {
domLocationTarget: { cssSelector: 'footer' },
showHorizontalRule: false
},
logo: {
'htmlString': '<img src="./img/logos/utah-dot-gov.png" id="Utah.gov" alt="Utah.gov" />'
},
mainMenu: {
menuItems: udsMenuItems,
title: 'Menu'
},
actionItems: [
{
showTitle: false,
title: 'Help',
actionDom: '<a href="./support/">Support</a>',
icon: '<span class="utds-icon-before-help" aria
BURL Variantswww/non-www, trailing slash, HTTP→HTTPSREVIEW
www / non-www
Preferred variant: non-www
HTTP → HTTPS
HTTP version does not redirect to HTTPS
BTLS Certificate Expiry & Recommendations276 days until leaf cert expires — 2 issues to addressREVIEW
Certificate validity
Recommended actions
- Enable HSTS: Strict-Transport-Security: max-age=31536000; includeSubDomains
- Enable OCSP stapling on your TLS server to remove a CA roundtrip and protect user privacy
ADNS Records1 A records, 379 ms lookupPASS
| A | 204.113.13.48 |
| AAAA | — |
| CNAME | — |
| NS | ns1.utah.gov, ns2.utah.gov |
| MX | 10 aspmx.l.google.com 20 alt1.aspmx.l.google.com 30 alt2.aspmx.l.google.com 40 alt3.aspmx.l.google.com 50 alt4.aspmx.l.google.com |
| TXT | MS=ms26431560 MS=ms45649682 iContact1755876 iContact1910463 v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDp0HdMAyHIK9FXgeCPwrWac+... wpe-verification=dhhs e2ma-verification=8bpgb t4sqh0id2bto360l0j6q0etfn vhvurrgbesn94hs4akn4pfv2g be59931fkgbne2ktckujuct3uo dt149fvgjer0b2fradvumsv1o1 jf0rj8cg09dge9nrpvukqd5vf5 k1id4vbai956efe5oaejevvjvd o6ck765t6pg6qikepulr2r8a7g vekoaoe4nqg0gnumplod28qd9g wpe-verification=dssandbox wpe-verification=doccommerce _nqlgwlpfcnvv2kyukuy6n281wmhlgrs _ukfbewipwmpmss54y74isejz2dd2asi klaviyo-site-verification=VVCcwx tj7snzlh4k1kp2wmgvv6yqm8zwwk3x5g apple-domain-verification=9ig8NpgeJg1Q3W73 SFMC-3OJDHInaIQ7K_DksMlkmSubeybWNLKpAUNF9I-_w cloudhealth=f00c9809-207b-4174-b14a-b4d0bf39b67c _github-challenge-state-of-utah.utah.gov=68ec597863 amazonses:+IvB6xZCfvfGpDP7ZYgRmR+rYXhNRWxfPuh+jnF5LTc= amazonses:+O5g5e5kNF3eh2RBGUghZxCilqoNFuaGfFSBBGzWwJQ= amazonses:Dfw7YJeG5zyp+zwwzdDWd3342yLN+J0imHnREH31WXs= docker-verification=87d9b1db-58b9-47d4-bef2-4c61282d0006 mongodb-site-verification=epFDdPKhn0hLKCI0FsGHB5yYQpUTEHyO onetrust-domain-verification=362741d85b704d7dbd4fe6af66490136 onetrust-domain-verification=b5dcc8fc0ded49c18ed7a1edec77ad0e adobe-idp-site-verification=c2cb1508-deb2-4dbf-be28-8bb83a109901 google-site-verification=09WV_zK6WEC9I1-kylINUXonI7xLluy0YP0IK9megsw google-site-verification=4cqh4qOhHJKBCDfL--ei_OOMoSB-2pccMzkOXFswD2s google-site-verification=5z-R-67WAJLq5q0jpM0IXZssUmndTcgc55nsn0pOLVI google-site-verification=AIIAPqspULavZ2mJanyJmm1wOOqUlke1fgQ3AouyuMM google-site-verification=HwUBejq07JgiRSkpTxKisQXUC5CLPN5aq8gLs4JxmFQ google-site-verification=O4LYvtyeTOY1VORZQTAxmhQqHo0S-hletjzar50Geuo google-site-verification=_rNKNpC5c-cbbncKDwcuNab4qOM0XB9fbYrw8mbzufg google-site-verification=b12nsggc95Y3R8CzYIYsCjxFP31g8xubnaj_HEfgjwM google-site-verification=cUy3QO7CDxOJUJYNRdv9dajJv8KfQKuSs_XHBazO7Eo google-site-verification=eWkavdWJ77A-KekUNqF0zD3EjN-4vsnlvci_R1QBSrY google-site-verification=ei3Wy6I_HgOYKCusVsF7pjsHuGkfxSHeE5ETUqKK-Tk google-site-verification=mGMvZw1ux49ncHiLEiStMTpDwY0n5X7ZIkge0g8S16A sophos-domain-verification=53e00346d3d08eb97766c6d84927411e5f89024d03dfec83c4a1c... cisco-ci-domain-verification=5c2978f2d56de1e75480f48fece1191db5a733048bd77ae2d3d... atlassian-domain-verification=hG9D8oaqyH8po8Nmc2wgRjpTB7UbDQVAY2D9LNbzz4q9d06U+6... SPF v=spf1 include:_spf.utah.gov include:_spf.google.com include:_spf.salesforce.com... |
| CAA | Lookup not available with standard resolver |
Multiple A records provide failover if one server goes down.
Single A record means a single point of failure — if that IP goes down, your site is unreachable until DNS TTL expires.
Learn more ▾ ▴
Add multiple A records for round-robin failover, or use a managed DNS provider with health-checked failover (Route 53, Cloudflare, NS1). Short TTL (60-300s) lets clients recover faster on outages.
Source: SRE practice / DNS architecture
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.
Slow DNS adds latency to every page load. Consider a faster DNS provider.
DNS resolution is slow — anycast DNS providers (Cloudflare, Route 53) typically resolve <50ms globally.
Source: DNS performance benchmarks
A+Domain Intelligenceutah.gov — via get.gov, 28 years, 11 months old, hosted on WEST-NET-WEST - Utah Education Network, USPASS
69 days
September 23, 2026
276 days
Issued by Sectigo Limited
28 years, 11 months
Registered October 2, 1997
Enabled
Protects against DNS spoofing
WEST-NET-WEST - Utah Education Network, US
ASN AS210
204.113.13.48
get.gov
Expiry timeline
Recommended actions
- Renew the domain or enable auto-renewal to prevent accidental expiry
- Enable registrar lock (clientTransferProhibited) to block unauthorized domain transfers
The domain can be transferred without an unlock step. Enable registrar lock (clientTransferProhibited) in your registrar's control panel to protect against unauthorized or accidental transfers.
Without registrar lock, an attacker who phishes your registrar credentials can transfer the domain in minutes — total brand hijack.
Learn more ▾ ▴
Registrar lock (clientTransferProhibited, clientUpdateProhibited, clientDeleteProhibited) requires extra verification before any transfer/update/delete. Every major registrar offers it free. Combined with 2FA on your registrar account, it's the strongest defense against domain hijacking.
Source: ICANN / domain-security best practice