AI readiness leaderboard · Email marketing
AI readiness of substack.com: 65/100
65/100
We checked substack.com on 2026-10-18 with our free checker: six scored tests plus evidence for each finding. The score reflects the site on that date. The site may have changed after that date.
| Test | Result | Points |
|---|---|---|
| llms.txt | No | 0 of 15 |
| JSON-LD schema on the homepage | No | 0 of 20 |
| Meta description | Yes | 10 of 10 |
| Text readable without JavaScript | Yes | 20 of 20 |
| Sitemap | Yes | 10 of 10 |
| AI crawlers allowed in robots.txt | 8 of 8 | 25 of 25 |
Compared with Email marketing
substack.com ranks 21 of 21 email marketing sites in this scan (ties share the order by domain name). The median score in this group is 100. 15 of 21 have an llms.txt file.
Findings with evidence
FixHomepage serves a bot challenge page to automated clients
Our checker got a challenge page instead of your content: Substack. Findings below describe that page, not your real homepage.
Fix: AI crawlers get the same challenge and cannot read your site. In your CDN or firewall (Cloudflare, Akamai, Imperva), allow verified AI search bots, or lower the bot protection level on public pages.
FixNo llms.txt
GET /llms.txt returned 404.
Fix: Create /llms.txt: a # title, a > one-line summary, then ## sections that list key pages as [name](url). Draft one free at checkaiready.com/llms-txt-generator.
FixNo JSON-LD structured data on the homepage
No <script type="application/ld+json"> block in the HTML we received.
Fix: Add an Organization (or LocalBusiness) JSON-LD block to the homepage with name, url, logo, and sameAs links. The $19 report includes a ready-to-paste block for your site.
ImproveTitle, 8 characters
<title>Substack</title>
Fix: Expand it to say what the page offers, about 50 to 60 characters.
ImproveMeta description, 30 characters
content="The app for independent voices"
Fix: Expand to 120 to 160 characters.
Improve0 H1 headings
No <h1> in the HTML we received.
Fix: Use one <h1> that states the main topic of the page.
ImproveServer responded in 1635 ms
Time to response headers from our checker. Final URL: https://substack.com/
Fix: Slow responses can make crawlers give up. Add page caching or a CDN in front of the homepage.
14 checks passed or noted
PassGPTBot (OpenAI, training): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassOAI-SearchBot (OpenAI, ChatGPT search): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassChatGPT-User (OpenAI, live fetch for users): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassClaudeBot (Anthropic, training): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassClaude-SearchBot (Anthropic, Claude search): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassPerplexityBot (Perplexity, search index): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassGoogle-Extended (Google, Gemini training control): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassCCBot (Common Crawl, open dataset): allowed on /
User-agent: * Disallow: /action/ Disallow: /publish Disallow: /sign-in Disallow: /channel-frame Disallow: /session-attribution-frame (9 more lines) Group "*" has no rule for /.
PassOpen Graph tags present
og:title: Substack og:description: The app for independent voices og:image: https://substackcdn.com/image/fetch/$s_!Xim-!,w_400,c_limit,f_auto,q_auto:good,fl_progres…
PassCanonical link set
<link rel="canonical" href="https://substack.com/">
PassLanguage declared: en
<html lang="en">
Pass1,581 characters of text without JavaScript
Text starts: "Substack Home Subscriptions Chat Activity Explore Profile Create Make money doing the work you believe in Start your Substack Learn more For you Jett Franzen 2…"
PassSitemap found, 51 child sitemaps
robots.txt: Sitemap: https://substack.com/sitemap.xml GET https://substack.com/sitemap.xml returned 200.
PassHTML size 229 KB, 100 script tags
0 render-blocking scripts in <head>
Is this your site? Run a fresh free check. Get the $19 deep report (up to 25 pages, 18 AI agents per path), or add an AI-ready badge after your check.
Scoring: llms.txt 15, JSON-LD 20, meta description 10, readable text 20, sitemap 10, AI crawler access 25. Want this page changed or removed? Email [email protected].
Get an email when AI crawlers, robots.txt rules, or llms.txt practice change. At most twice a month.
We send a confirmation link first. See the privacy policy.