Skip to content
https://squid-next-five.vercel.app

Infrastructure

· 17 checks — DNS, redirects, IPv6, crawlability, URL variants, and domain intelligence rolled into one auditable list.
SCORE
85
GRADE
B
FIX
1
REVIEW
6
PASS
9
INFO
1
Probed from Madrid, Spain
200 OK
Checks
17
9 PASS 6 REVIEW 1 FIX
F
HTTP Probe Timing
Action
Total 3076 ms — DNS, TCP, TLS, TTFB, content transfer breakdown
FIX
DNS Lookup DNS Lookup — time to resolve the domain name to an IP address.
39 ms
TCP Connect TCP Connect — time to establish a TCP connection to the server.
1 ms
TLS Handshake TLS Handshake — time to complete the HTTPS encryption handshake.
37 ms
Time to First Byte Time to First Byte — how long the server takes to respond with the first byte of data.
2.99 s
Total Time Total request time from DNS lookup through full response.
3.08 s

Connection waterfall

DNS Lookup 39 ms TCP Connect 1 ms TLS Handshake 37 ms Server Processing 2.92 s Content Transfer 84 ms
B
DNSSEC
Unsigned (DNSSEC not deployed)
REVIEW
Unsigned (DNSSEC not deployed)
Info::
DNSSEC is not deployed
The zone is not DNSSEC-signed. Users on validating resolvers (Cloudflare 1.1.1.1, Quad9 9.9.9.9, growing default in mobile resolvers) get no protection against DNS spoofing for this domain. Most registrars now offer DNSSEC at a single click; consider enabling it for sites where authenticity matters (banking, healthcare, government).
B
CAA Records
No CAA records (any CA may issue certificates)
REVIEW
No CAA records (any CA may issue certificates)
Info::
No CAA records published
Without CAA records, any publicly-trusted CA can issue certificates for this domain. Adding a CAA record (`yourdomain. IN CAA 0 issue "letsencrypt.org"`) restricts issuance to CAs you authorize. Required by CAB Forum baseline since 2017; the default of 'any CA' is widely supported but is the broader attack surface for issuance fraud.
C
Reverse DNS
Action
0/2 IPs match cert SAN
REVIEW
0/2 IPs match cert SAN
Info::
PTR lookup failed for 216.198.79.67: lookup 216.198.79.67: no such host
No reverse DNS record set for this IP. Common on bare cloud-VM IPs without provider-side PTR; not a security issue.
Info::
PTR lookup failed for 64.29.17.67: lookup 64.29.17.67: no such host
No reverse DNS record set for this IP. Common on bare cloud-VM IPs without provider-side PTR; not a security issue.
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

B
TLS Certificate Expiry & Recommendations
32 days until leaf cert expires — 2 issues to address
REVIEW

Certificate validity

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

Recommended actions

  • 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
Operational Status Page
No status page link detected
REVIEW
No status page link detected
Info::
No operational status page link detected
Status pages communicate planned maintenance and incidents to users -- a hallmark of operationally-mature services. Most SaaS teams publish one via Atlassian Statuspage, Instatus, BetterUptime, or a self-hosted Cachet. Smaller sites legitimately don't need one; flagged as Info, not a failure.
A
DNS Records
2 A records, 31 ms lookup
PASS
2 A records, 31 ms lookup
Info::
Resolves to 2 IPv4 address(es)
Got: 216.198.79.67, 64.29.17.67
Info::
No IPv6 (AAAA) records
Info::
No NS records found
Info::
No MX records — email not configured via DNS
Info::
No SPF record found in TXT records
SPF helps prevent email spoofing. Add a TXT record starting with 'v=spf1'.
Info::
DNS resolution time: 31 ms
Got: 31 ms
A216.198.79.67, 64.29.17.67
AAAA—
CNAME—
NS—
MX—
TXT—
CAALookup not available with standard resolver
Resolved in 31 ms

SPF helps prevent email spoofing. Add a TXT record starting with 'v=spf1'.

Why this matters

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+
Subdomain Takeover
No subdomain takeover risk detected
PASS
No subdomain takeover risk detected
Info::
No CNAME record present
A+
Multi-Resolver DNS Speed
Mean 24ms across 3 resolvers (spread 38ms)
PASS
Mean 24ms across 3 resolvers (spread 38ms)
Info::
Quad9: 2ms
Got: 2ms via 9.9.9.9:53
Info::
Cloudflare: 30ms
Got: 30ms via 1.1.1.1:53
Info::
Google: 40ms
Got: 40ms via 8.8.8.8:53
A+
Redirect Chain
No redirects — direct access
PASS
No redirects — direct access
Info::
No redirects — direct access
Got: https://squid-next-five.vercel.app

https://squid-next-five.vercel.app

229 ms · HTTP/1.1 FINAL

#URLStatusTimeProtocolServer
1https://squid-next-five.vercel.app200229 msHTTP/1.1Vercel
A
Crawlability
robots.txt present, sitemap with 0 URLs
PASS
robots.txt present, sitemap with 0 URLs
Info::
robots.txt is present
Got: 10240 bytes
Info::
sitemap.xml is present
Info::
sitemap.xml is valid XML
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.

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" data-theme="auto" class="sourceserif_8a4f041b-module__MP8VTa__variable publicsans_74153ae6-module__T-NGfa__variable plexmono_2781363e-module__rHcGRq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/immutable/chunks/2qc4qc-mgfh0l.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/43kzzwbdxockn.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/30ngernnc6hzs.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/01shbrt4t3xg_.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/1uedkoy427erj.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/3uoswio38icas.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/3o8wyqymn1c45.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/1xcsccs9o0b7r.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/immutable/chunks/1mlftcslf095m.js"/><script src="/_next/static/immutable/chunks/2v3cv0w2fww2x.js" async=""></script><script src="/_next/static/immutable/chunks/1rd39qo4-7_k5.js" async=""></script><script src="/_next/static/immutable/chunks/2suy93rarf9c1.js" async=""></script><script src="/_next/static/immutable/chunks/31tcpybs-b989.js" async=""></script><script src="/_next/static/immutable/chunks/turbopack-2v65mu12f6tdx.js" async=""></script><script src="/_next/static/immutable/chunks/2r4ice16ep-y9.js" async=""></script><script src="/_next/static/immutable/chunks/3m19lim_yjr_d.js" async=""></script><script src="/_next/static/immutable/chunks/2_-78bk1p42i3.js" async=""></script><script src="/_next/static/immutable/chunks/31ou1vy03ghij.js" async=""></script><script src="/_next/static/immutable/chunks/2euqay-rw2qub.js" async=""></script><title>Sign in · Squid</title><meta name="description" content="Initiative → Epic → Feature → Story → Task → Subtask, refined against the delivery model."/><link rel="icon" href="/icon.svg?icon.31oxcdvi2glu8.svg" sizes="any" type="image/svg+xml"/><meta name="next-size-adjust" content=""/><script>try{var t=localStorage.getItem('squid:theme');
if(t)document.documentElement.setAttribute('data-theme',JSON.parse(t));}catch(e){}</script><script src="/_next/static/immutable/chunks/0c0hxoamwjsbw.js" noModule=""></script></head><body data-access="none"><div hidden=""><!--$--><!--/$--></div><!--$--><div class="auth-wrap"><div class="auth-card"><div class="auth-brand"><span class="auth-name"><span class="squid-wordmark " style="font-size:31px" role="img" aria-label="Squid"><span aria-hidden="true">s</span><svg class="squid-wordmark-q" viewBox="0 0 42 54" aria-hidden="true" focusable="false"><path class="squid-wordmark-fin" d="M7 15 3 6l11 4M29 10 39 5l-3 12"></path><path class="squid-wordmark-body" fill-rule="evenodd" d="M21 7c10.5 0 18 7.2 18 17.4 0 6.6-2.9 11.7-7.5 14.5v8.6c0 2.5 1.5 4 4.1 4.4-5.7 2.6-11.3-.8-11.3-6.7v-4.5c-1.1.2-2.2.3-3.3.3C10.4 41 3 33.8 3 24.4 3 14.2 10.5 7 21 7Zm0 10.3c-4.5 0-7.5 2.9-7.5 7.1 0 4.3 3 7.2 7.5 7.2s7.5-2.9 7.5-7.2c0-4.2-3-7.1-7.5-7.1Z"></path><path class="squid-wordmark-tentacle" d="M20 40.8v4.8c0 2.3-1.5 3.8-4.5 4.1 3.4 2.4 9.1 1 9.1-4.2v-5.9"></path></svg><span aria-hidden="true">uid</span></span><small>The brain for your projects</small></span></div><h1 class="auth-h">Sign in</h1><form class="auth-form" action="" encType="multipart/form-data" method="POST"><input type="hidden" name="$ACTION_REF_1"/><input type="hidden" name="$ACTION_1:0" value="{&quot;id&quot;:&quot;600a151cd2a3642ed5c07abd3c37adf76e77f1b00a&quot;,&quot;bound&quot;:&quot;$@1&quot;}"/><input type="hidden" name="$ACTION_1:1" value="[&quot;$undefined&quot;]"/><input type="hidden" name="$ACTION_KEY" value="k3ca89a38cdfc0dd810ae0b92dece4629"/><label class="field-l"><span>Email or username</span><input autoComplete="username" autofocus="" required="" spellCheck="false" autoCapitalize="none" name="login"/></label><label class="field-l"><span>Password</span><input type="password" autoComplete="current-password" required="" name="password"/></label><button class="btn auth-btn">Sign in</button><p class="auth-note">Accounts are created by the admin. If you do not have one, or have lost your password, ask them.</p></form></div></div><!--$--><!--/$--><!--/$--><script src="/_next/static/immutable/chunks/1mlftcslf095m.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:I[39756,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"LoadingBoundaryProvider\"]\n2:I[63869,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\",\"/_next/static/immutable/chunks/2_-78bk1p42i3.js\",\"/_next/static/immutable/chunks/31ou1vy03ghij.js\"],\"default\"]\n3:\"$Sreact.fragment\"\n5:I[39756,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"default\"]\n6:I[37457,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"default\"]\n8:I[97367,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[97367,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"ViewportBoundary\"]\ne:I[97367,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"MetadataBoundary\"]\n10:I[68027,[\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\"],\"default\",1]\n:HL[\"/_next/static/immutable/chunks/2qc4qc-mgfh0l.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/43kzzwbdxockn.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/30ngernnc6hzs.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/01shbrt4t3xg_.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/1uedkoy427erj.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/3uoswio38icas.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/3o8wyqymn1c45.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/1xcsccs9o0b7r.css\",\"style\"]\n:HL[\"/_next/static/immutable/media/geist_mono_variable-s.p.0b02cdm7g7y6h.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/geist_variable-s.p.2-i4fw5gbtlb7.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/ibm_plex_mono_latin_400_normal-s.p.19gbeb610ur4n.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/ibm_plex_mono_latin_500_normal-s.p.25_05y-blbp24.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/montserrat_latin_800_normal-s.p.28uwn405sb1ju.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/montserrat_latin_900_normal-s.p.1gomk-vpaj81t.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/public_sans_latin_wght_normal-s.p.297-5ju1rzndw.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/source_serif_4_latin_wght_normal-s.p.37qdci525ah5k.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\nb:X\n0:{\"P\":null,\"c\":[\"\",\"login\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"login\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4116],[[\"$\",\"$L1\",null,{\"loading\":[[\"$\",\"$L2\",\"l\",{\"tab\":\"list\",\"crumb\":\"Initiative → Epic → Feature\"}],[],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2_-78bk1p42i3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/31ou1vy03ghij.js\",\"async\":true,\"nonce\":\"$undefined\"}]]],\"children\":[\"$\",\"$3\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2qc4qc-mgfh0l.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/43kzzwbdxockn.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/30ngernnc6hzs.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/01shbrt4t3xg_.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/1uedkoy427erj.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"5\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3uoswio38icas.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"6\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/3o8wyqymn1c45.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"7\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/1xcsccs9o0b7r.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2r4ice16ep-y9.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/3m19lim_yjr_d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L4\"]}]}],{\"children\":[[\"$\",\"$3\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\
sitemap.xml 200 OK
Type URL Set URLs 0 entries Valid XML Yes
A+
URL Variants
www/non-www, trailing slash, HTTP→HTTPS
PASS
www/non-www, trailing slash, HTTP→HTTPS
Info::
HTTP correctly redirects to HTTPS permanently
Got: HTTP 308

www / non-www

https://www.squid-next-five.vercel.app/
200https://squid-next-five.vercel.app/

HTTP → HTTPS

308http://squid-next-five.vercel.app/ → https://squid-next-five.vercel.app/

Consistent

A
CDN & Delivery
Vercel (MISS)
PASS
Vercel (MISS)
Info::
Document is served via Vercel CDN
Got: delegation squid-next-five.vercel.app
Info::
CDN cache status: MISS
Document served via CDN: Vercel
Provider Vercel Cache Status MISS Evidence delegation squid-next-five.vercel.app
A+
CDN Cache Observability
Cache state: MISS
PASS
Cache state: MISS
Info::
CDN cache state observable via 2 header(s)
Got: age=0, x-vercel-cache=MISS
A+
Health Check Endpoint
Health endpoint at https://squid-next-five.vercel.app/status (HTTP 200)
PASS
Health endpoint at https://squid-next-five.vercel.app/status (HTTP 200)
Info::
Public health endpoint at https://squid-next-five.vercel.app/status
Got: https://squid-next-five.vercel.app/status
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