// for engineering and search

Search and AI discovery

How search engines and AI tools find, read and choose Grayscale pages. Each theme gives the findings and then the exact change for the developer.

Host names are short: www (www.grayscale.com), etfs (etfs.grayscale.com), research (research.grayscale.com), Institute (institute.grayscale.com), ZCSH site (www.thezcashetf.com). "Indexable page" means status 200, no redirect, no noindex and no query string. "Server HTML" means the HTML the server sends before JavaScript runs. "CONFIRMED" means the claim reproduced in a new test (see Part B).

Older articles sit behind buttons

Critical1

Who acts Engineering.

Hub pagination has no links, so search engines and AI tools see only the first page of each list.

A-2Criticalwwwresearch

Hub pagination uses buttons with no links, so most Stack articles have no crawlable hub link

CONFIRMED, www and research. The Stack, research reports, market commentary and blog hubs show page numbers as <button> elements. Clicking them changes the list but not the URL.

  • Evidence /the-stack has buttons 1 to 27 and lists 108 articles; 17 are on page 1 and 91 only on pages 2 to 27. None of the 91 www URLs is in the www sitemap. 46 appear only in the Institute Stack sitemap, whose URLs redirect to www (8 of them from a different Institute slug). 25 of the 91 have no link from any crawled page, in the server HTML or the rendered page, and are in no sitemap of any kind. 8 more are linked only from Institute archive pages, through URLs that redirect to them. Research /reports (41 of 59 items only on pages 2 to 4), /market-commentary (58 of 76 only on pages 2 to 5) and the blog hub (17 of 26) use the same buttons. Their page 2 and later items are in a sitemap, so search engines can still find them, but those hubs lose internal links.
  • Impact Search crawlers generally do not click buttons. Older articles lose their hub links. 25 of them have no link from any crawled page. Google's documentation says "Generally, Google can only crawl your link if it's an <a> HTML element" "with an href attribute."
  • Fix Give each page of the list its own URL (for example /the-stack?page=2) and link page numbers with <a href>.

// The exact change

H.2 Crawlable pagination (A-2)

Each list page needs its own URL and real links (links in the HTML that search engines follow). Example markup for The Stack hub:

<nav aria-label="Pagination">
  <a href="/the-stack?page=1" aria-current="page">1</a>
  <a href="/the-stack?page=2">2</a>
  <a href="/the-stack?page=3">3</a>
  <a href="/the-stack?page=2" rel="next">Next</a>
</nav>
  • The server renders the matching list for ?page=N, so the server HTML of page N holds the article links for page N.
  • Each page N gets a self-referencing canonical, which names the preferred URL of that page (/the-stack?page=2 points to itself, not to page 1).
  • Keep the button behavior for users if needed, but update the URL with each click.
  • Apply the same change to research /reports and /market-commentary and to the blog hub.

Dead URLs and redirects

High1Medium1

Who acts Engineering, with the content owner for redirect targets.

975 old URLs end in a 404, and live redirects take extra hops.

A-4Highwww

975 old URLs end in a 404, and the redirect map lists 41 of them

CONFIRMED, www. Of 635 historic page paths from the Internet Archive (2023 to 2025), 258 return 404 and 12 redirect to a 404. Of 738 historic PDF URLs, 705 are dead (704 return 404 and 1 PDF redirects to a 404). The dead PDFs all sit under /globalassets/.

  • Evidence All 60 rows of the redirect map still return 404, including its top row, /blog/general-updates/assets-under-consideration-current-products. Most old apex URLs (the bare grayscale.com domain) with a trailing slash (the / at the end; 27 of 29 tested) take 2 hops (redirect steps, 308 and 308) before the final page.
  • Impact Links from other sites to these URLs may pass no link value (the ranking benefit of a link), and the deck reports that AI answers cite dead PDF links. This report did not re-measure those citations. The backlink data shows 368 broken pages and 2,693 broken backlinks for the domain.
  • The redirect map is not ready to ship as is: 11 of its 60 rows have no target yet (9 marked TBD (to be decided), 2 described in words), and 4 targets are placeholders that return 404. 45 rows are usable now. 41 of the map's 60 URLs also appear in the Internet Archive list.
  • Fix Add 301 redirects for the 45 usable map rows first, set targets for the other 15, then redirect the 270 dead page paths and the /globalassets/ PDFs to their current documents. The full list is the file dead-urls-to-redirect.csv (Part G.3).
A-17MediumwwwInstitute

Redirects use extra hops and temporary codes

CONFIRMED. 27 of 29 old apex URLs with a trailing slash take 2 hops. grayscale.com/products/grayscale-bitcoin-trust/ takes 3 hops (308, 308, 308) to etfs.grayscale.com/gbtc. Institute /category/primers/ answers 302 (temporary redirect) to /primers, then 301 to /primers/; 11 Institute redirects use 302.

  • Fix Send each old URL to its final URL in one 301 or 308.

// The exact change

H.4 Redirects (A-4, A-17)

  1. Add the 45 usable rows of the redirect map as single-hop 301s (permanent redirects). Of the other 15, 9 are marked TBD, 2 describe the target in words, and 4 point at placeholder URLs that return 404 (page not found).
  2. Map the 270 dead historic page paths (old addresses from the Internet Archive; dead-urls-to-redirect.csv) to the closest live page, or to the section hub.
  3. Map /globalassets/ PDF paths to the current document URL for the same fund and document type.
  4. Send apex and trailing-slash variants straight to the final URL, in one hop.
  5. Change the 11 Institute 302 redirects (temporary) to 301 (permanent).

Example rules for the Vercel config:

{
  "redirects": [
    { "source": "/blog/general-updates/assets-under-consideration-current-products", "destination": "<current AUC post>", "permanent": true },
    { "source": "/crypto-products/grayscale-bitcoin-trust", "destination": "https://etfs.grayscale.com/gbtc", "permanent": true },
    { "source": "/products/grayscale-bitcoin-trust", "destination": "https://etfs.grayscale.com/gbtc", "permanent": true }
  ]
}

Which URL gets indexed

High2Medium1Low1

Who acts Engineering.

Canonical tags, sitemaps and status codes do not tell search engines which address is the real one.

A-6Highwwwetfs

Most www and etfs pages have no canonical tag, and 236 parameter URLs can be indexed

CONFIRMED. 166 of 223 indexable www pages and 37 of 37 etfs pages have no canonical. All 236 parameter URLs in the deck list still answer 200 with no noindex and no canonical. Most carry utm_ tags (campaign tracking codes; 200 URLs), action= or partnerref= (68 each). A URL can carry more than one, so the counts overlap. Also seen: ?private (21), ?public (13), gclid (1) and other tracking tags (2).

  • Evidence Www.grayscale.com/funds/grayscale-bittensor-trust?public ranks in Google for "gtao stock" (third-party ranking data, US).
  • Impact Search engines can index the same page at several URLs and split its signals; one parameter URL already ranks (above). The blog article and research report templates already print canonicals. The www gaps are mostly Stack pages (109: the hub and 108 articles) and fund pages and the funds list (22), plus 35 other www pages; on etfs every page lacks one.
  • Fix Print a self-referencing canonical on every page, built from the clean address without query strings. Paginated hub pages point to their own page URL (H.2).
A-8HighwwwetfsresearchInstituteZCSH

The sitemaps leave out live pages and list dead ones, so search engines may miss some pages

CONFIRMED.

  • www: 105 rows (104 URLs). None of the 108 Stack articles is listed. 13 other live www pages are also missing. /education is listed and returns 404, and /company redirects. The glossary is listed twice. 22 URLs share one lastmod (last-modified) timestamp about 10 minutes before the sitemap file was saved, which suggests the sitemap build time, not a content date.
  • Institute: 64 of the 65 rows in the Stack article sitemap redirect (301) to www, and 2 of those end at a 404. All 12 rows of the tag sitemap return 404, including the 2 test tags (A-3). In the category sitemap, all 3 rows redirect, and /category/locked/ ends at a 404. 7 live Institute pages are in no sitemap.
  • etfs: 19 URLs. GDLC, ETCO, BPI and BTCC pages are live but not listed. In total, 21 live etfs pages are missing, 17 of them /documents/ pages. 3 listed rows redirect: /zcsh (to www.thezcashetf.com), /mnrs and /gsol-prospectus.
  • ZCSH site: its robots.txt points to the etfs sitemap, and its own sitemap lists the 19 etfs URLs. None of its 3 live pages is in any sitemap.
  • research: 182 URLs, all answer 200; 5 live research pages are missing.
  • In the deck's list, 79 of 80 non-indexable sitemap URLs still redirect or fail.
  • Fix Build each sitemap from the published page list. List only final 200 URLs, with real update dates.
A-7Mediumresearch

Research returns 200 for any made-up report or commentary URL

CONFIRMED, research. /reports/zz-23652, /reports/ftn1 and /market-commentary/not-a-real-page all return 200. The page shows "Page not found" and carries noindex twice. www, etfs, Institute and the ZCSH site return a real 404.

  • Impact Noindex keeps these pages out of Google, but crawlers still fetch them as live pages and old links to removed research look healthy in link tools.
  • Fix Return status 404 when the slug (the last part of the address) does not match a published entry, and print one robots tag.
A-18LowInstitute

Institute date archives are noindex, use post titles as H1s, and have no canonical

CONFIRMED; low weight, because the archives are noindex. /2026/04/ to /2026/11/ (7 archives; there is none for August) send noindex, follow, show 1 or 2 post titles as H1s, and have no canonical.

  • Fix Give archives their own H1 and canonical, or link to category pages instead.

// The exact change

H.3 Canonical tags (A-6)

  • Print <link rel="canonical" href="https://<host><path>"> on every page, built from the path without the query string, except the paginated hub pages (H.2).
  • On fund pages, the ?private and ?public views point to the clean fund URL.
  • Write canonical paths without a trailing slash on www, to match its 308 redirects.

H.5 Sitemaps (A-8)

  • Generate each sitemap from the published page list at build time.
  • Include only URLs that answer 200 with no redirect and no noindex.
  • Add all Stack articles to the www sitemap. Remove the 64 Institute Stack URLs that redirect to www (2 of them end at a 404).
  • Add GDLC, ETCO, BPI and BTCC to the etfs sitemap. Remove /zcsh, because it redirects off the domain. Replace /mnrs and /gsol-prospectus with their final URLs.
  • Give the ZCSH site its own sitemap with its own URLs.
  • Set lastmod (the sitemap's last-change date) from the content's last edit date, not the build time.
  • Remove /education and the duplicate glossary row from the www sitemap.

H.6 Soft 404s (pages that say not found but return 200) on research (A-7)

In the research routes for /reports/[slug] and /market-commentary/[slug], return the framework's not-found response (status 404) when no published entry matches the slug (the last part of the address).

What AI tools and crawlers can read

High2Medium1

Who acts Engineering, with the firewall owner.

Bot challenges block plain HTTP clients, invisible characters fill the page text, and most hosts carry no structured data.

A-5HighwwwetfsresearchInstituteZCSH

Plain HTTP clients get no content from five hosts

CONFIRMED for HTTP clients; LIKELY for AI crawlers. www, etfs, research and the ZCSH site return 429 (too many requests) with a "Vercel Security Checkpoint" page (about 40,700 bytes) to curl (a command-line tool) that identifies as Chrome. Institute returns a 307 (temporary redirect) script challenge from Sucuri to plain HTTP clients. A real browser gets past both.

  • Evidence Curl from a desktop connection (not a cloud server) got 429 on all four Vercel hosts, for pages and also for /robots.txt (the crawl rules file) and /sitemap.xml. The GEO citability scorer failed on etfs with "HTTP 429" and on Institute with "Redirect without Location header". A standard HTTP crawler got the Sucuri challenge on 102 of 150 Institute requests and 429 on its first etfs request. After about 3,077 browser requests (the 1,125-URL crawl plus 1,952 redirect checks), www also returned 403 (access denied) to the test browser for about 10 minutes.
  • Impact Some AI search and answer tools may fetch pages with plain HTTP clients, not a full browser. If their requests meet the same challenge, they read no content. Tests that identify as bots were not run, so the effect on each named AI crawler is not proven.
  • Fix Allow verified AI and search crawlers in the firewall, then confirm with 30 days of firewall logs.
A-10Highwwwetfsresearch

Every indexable www and research page carries thousands of invisible characters

CONFIRMED; cause LIKELY. All 223 indexable www pages and all 187 research pages contain runs of zero-width characters (U+200B, U+200C, U+200D, U+FEFF) after text strings in the server HTML: about 1.40 million on www and 1.25 million on research. After rendering, 12 etfs pages carry them too. Four research meta descriptions also contain them.

  • Evidence In the server HTML of /the-stack, 6 of the 10 occurrences of "Subscribe to The Stack" are followed by a run of 1,648 hidden characters.
  • Impact The characters can break copy and paste, text matching and AI extraction of quotes.
  • Likely cause: the characters match content source encoding ("stega") from the CMS (content management system) visual editing mode. The pages load assets from cdn.sanity.io and allow framing by studio.grayscale.com. Fix: turn off that encoding for production builds.
A-14MediumwwwetfsresearchZCSH

www, etfs, research and the ZCSH site carry no structured data

CONFIRMED. 0 of 450 indexable pages on those hosts have JSON-LD (a structured data format). Institute pages carry markup from the Yoast WordPress SEO plugin (Organization, WebSite and BreadcrumbList on 49 of 49 indexable pages).

  • Fix Add Organization and WebSite markup sitewide, Article with author and dates on articles and research, and BreadcrumbList.

// The exact change

H.7 Invisible zero-width characters (A-10)

Turn off content source map encoding in production builds of the content management system (CMS) client (the visual-editing "stega" option, if offered), or strip U+200B, U+200C, U+200D and U+FEFF from rendered text. Test: count those characters in the server HTML of /the-stack. Expected result: 0.

Titles, headings and descriptions

Medium3

Who acts Engineering for templates; compliance for fund pages.

Titles, H1s and descriptions repeat across hundreds of pages, so results look alike in search.

A-12MediumwwwetfsresearchInstitute

Titles and H1s (main page headings) do not describe the pages

CONFIRMED. 106 pages use the title "The Stack | Grayscale". All 108 Stack articles have 2 H1s. No H1 on 112 of 223 www pages, 20 of 37 etfs pages, 187 of 187 research pages and 3 of 49 Institute pages.

  • Fix One H1 per page with the page's topic, and a title that names the article.
A-13MediumwwwetfsresearchZCSH

One generic meta description (the summary shown under a search result) covers 263 pages, and 125 www pages have none

CONFIRMED. "A Leading Crypto Asset Manager" is the description on 263 indexable pages: research 182, www 63, etfs 17, ZCSH site 1. 105 of 108 Stack articles have no description.

  • Impact Google says "Identical or similar descriptions on every page of a site aren't helpful when individual pages appear in search results."
  • Fix Write one description per page from its summary.
A-19Mediumwwwetfs

The home page and fund pages lead with the wrong heading

CONFIRMED. The www home page H1 is "Digital Asset Investing Fundamentals Course" and the page has no canonical. etfs /gbtc and /btc use the bare tickers "GBTC" and "BTC" as H1. The /gbtc description is "Bitcoin investing begins here" (29 characters, with no fund details), and /btc uses the same words with a period.

  • Fix Home H1 that states what Grayscale offers; fund H1 with the fund name and ticker.

Speed and accessibility

High1Medium1Low1

Who acts Engineering.

Mobile pages load slowly on every template measured, and common accessibility errors appear on most templates.

A-9HighwwwetfsresearchZCSH

Mobile pages load slowly on every template measured

CONFIRMED, lab data: a controlled test, not real visitors. On mobile, median Lighthouse performance scores range from 26 (etfs /gbtc) to 54 (a research report), and median Largest Contentful Paint (LCP, time to show the largest item) from 5.1 s to 24.6 s, over 3 runs per template. The etfs and ZCSH pages keep the browser busy longest: median Total Blocking Time (time a page cannot respond) 4.9 s on etfs /gbtc, 4.2 s on the ZCSH home, 3.7 s on /btc and 3.1 s on the etfs home. The www home page scores 45 in all 3 runs, with a median LCP of 19.8 s. Desktop medians are higher, 55 to 100.

  • Evidence 90 Lighthouse runs; per-template medians and ranges are in Part D.5.
  • Impact Slow pages frustrate phone visitors. Google says good Core Web Vitals (page speed and stability measures), "along with other page experience aspects, aligns with what our core ranking systems seek to reward" (G-20).
  • Fix Defer chart scripts and third-party tags until after the first paint, and size the largest image for phones.
A-20MediumwwwetfsresearchInstituteZCSH

Common accessibility errors appear on most templates

CONFIRMED, axe-core, 15 templates at 390 px and 1440 px. Buttons with no accessible name (the label a screen reader reads) on 12 of 15 templates (67 on a fund page, 65 on /btc). Images with no alt text (the description read by screen readers) on 7 templates. Links with no name on 15 templates, partly inside the cookie banner. Low color contrast on 4 templates.

  • Fix Add labels to icon buttons, alt text to content images, and names to links.
A-21Lowresearch

Most research images have no alt attribute

CONFIRMED. 990 of 1,322 images on the 187 indexable research pages and 145 of 569 on the 223 indexable www pages have no alt attribute in the server HTML.

  • Fix Add alt text to charts and figures, and alt="" to decoration.

// Measurements

D.5 Speed by template

Template Device Runs Score median (range, 0 to 100) LCP median (range) [main content load time] TBT median [total blocking time] CLS max [layout shift]
www-home mobile 3 45 (45 to 45) 19.8 s (14.9 to 19.9 s) 434 ms 0.00
www-home desktop 3 82 (80 to 84) 2.5 s (2.3 to 2.7 s) 38 ms 0.05
www-fund mobile 3 34 (34 to 34) 15.2 s (9.8 to 15.5 s) 1,043 ms 0.00
www-fund desktop 3 78 (75 to 81) 2.9 s (2.9 to 3.0 s) 138 ms 0.00
www-stack-hub mobile 3 40 (37 to 40) 14.2 s (13.4 to 14.8 s) 704 ms 0.00
www-stack-hub desktop 3 91 (91 to 92) 1.8 s (1.7 to 1.9 s) 30 ms 0.00
www-stack-article mobile 3 46 (45 to 48) 13.9 s (13.9 to 14.0 s) 452 ms 0.00
www-stack-article desktop 3 93 (93 to 95) 1.7 s (1.4 to 1.7 s) 14 ms 0.00
www-blog-post mobile 3 49 (44 to 53) 7.3 s (7.2 to 7.5 s) 407 ms 0.00
www-blog-post desktop 3 99 (99 to 99) 0.4 s (0.4 to 0.4 s) 69 ms 0.02
www-faqs mobile 3 42 (41 to 45) 13.1 s (12.5 to 14.5 s) 734 ms 0.00
www-faqs desktop 3 92 (90 to 92) 1.7 s (1.7 to 1.9 s) 22 ms 0.00
etfs-home mobile 3 39 (39 to 40) 8.6 s (8.5 to 9.1 s) 3,117 ms 0.00
etfs-home desktop 3 80 (80 to 84) 1.8 s (1.5 to 1.9 s) 222 ms 0.00
etfs-gbtc mobile 3 26 (26 to 36) 20.3 s (9.5 to 20.7 s) 4,860 ms 0.00
etfs-gbtc desktop 3 55 (52 to 58) 2.1 s (1.8 to 2.3 s) 820 ms 0.00
etfs-btc mobile 3 27 (26 to 38) 24.6 s (7.2 to 25.2 s) 3,710 ms 0.00
etfs-btc desktop 3 73 (72 to 80) 1.7 s (1.7 to 1.7 s) 362 ms 0.00
research-home mobile 3 39 (37 to 39) 14.7 s (14.3 to 14.9 s) 828 ms 0.00
research-home desktop 3 92 (91 to 93) 1.7 s (1.6 to 1.9 s) 20 ms 0.00
research-report mobile 3 54 (52 to 54) 5.2 s (5.2 to 5.3 s) 392 ms 0.00
research-report desktop 3 82 (81 to 82) 3.1 s (3.0 to 3.1 s) 44 ms 0.01
research-commentary mobile 3 49 (43 to 52) 5.1 s (5.0 to 5.1 s) 661 ms 0.00
research-commentary desktop 3 100 (100 to 100) 0.4 s (0.4 to 0.4 s) 6 ms 0.01
institute-home mobile 3 46 (45 to 54) 10.9 s (10.6 to 14.2 s) 668 ms 0.00
institute-home desktop 3 90 (89 to 93) 1.8 s (1.5 to 2.0 s) 0 ms 0.00
institute-stack (redirects to www) mobile 3 46 (44 to 47) 10.8 s (9.8 to 15.2 s) 807 ms 0.00
institute-stack (redirects to www) desktop 3 90 (89 to 92) 1.9 s (1.6 to 2.0 s) 39 ms 0.00
zcash-home mobile 3 28 (27 to 36) 23.1 s (9.8 to 23.2 s) 4,189 ms 0.00
zcash-home desktop 3 68 (66 to 70) 1.9 s (1.9 to 2.0 s) 423 ms 0.04