Audit · github.com
Dual-axis lens: Performance (Core Web Vitals, real Chrome users) + Citation-readiness (10-characteristic LLM checklist).
Axis 1 — Performance (Core Web Vitals)
Strong83%Real Chrome user data (28-day p75). Mobile + desktop. Source: Google Chrome UX Report.
Mobile (phone)
LCPgood
2183ms
Largest Contentful Paint
INPneeds improvement
244ms
Interaction to Next Paint
CLSgood
0.02
Cumulative Layout Shift
FCPneeds improvement
1873ms
First Contentful Paint
TTFBneeds improvement
1167ms
Time to First Byte
Desktop
LCPgood
1727ms
Largest Contentful Paint
INPgood
63ms
Interaction to Next Paint
CLSgood
0.06
Cumulative Layout Shift
FCPgood
1522ms
First Contentful Paint
TTFBneeds improvement
1146ms
Time to First Byte
Deep dive: full github.com report · mobile · desktop
https://github.comAxis 2 — Citation-readiness (LLM-discoverability)
Missing3%10-characteristic checklist (Aleyda Solis). Server-rendered HTML parsed as a GPTBot/PerplexityBot would see it. HTTP 429 · 36w body · 35ms fetch
Hard-block: accessible, useful, recognizable, extractable, consistent, corroborated, credible, differentiated, fresh at 0.0. Without these, LLM citation is functionally impossible regardless of other scores.
FAccessible
0%HTTP 429 — crawlers see nothing.
Fix: Render meaningful content in static HTML (SSR or static export). GPTBot/PerplexityBot do not execute JavaScript.
📋 Current body content: 36 words. Target: ≥250 words of unique content for full citation depth.text
Add depth via:
• More descriptive body text per section
• Inline examples / code blocks / data points
• Q&A or comparison sections
• Sources cited inline (CC-BY, web.dev, MDN, etc.)FUseful
0%Body=36w · headings=1 · structured-data blocks=0. Heuristic for content depth + organization.
Fix: Add depth: longer body content, more H2/H3 sections, structured data blocks (Article, Dataset, DefinedTerm).
📋 Lift Useful by closing these specific gapstext
• Body word count: 36 (target ≥600)
• Heading count: 1 (target ≥4 — split content into more sections)
• Structured-data blocks: 0 (target ≥2 — add Article + Person OR Organization + WebPage)FRecognizable
0%Organization schema: ✗ · name ✗ · url ✗ · logo/image ✗ · sameAs ✗
Fix: Add Organization JSON-LD with name + url + logo + sameAs[] (≥2 public profile URLs).
📋 Paste in <head> as <script type="application/ld+json">json-ld
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://github.com#org",
"name": "Github",
"alternateName": "(any old brand names, for SEO equity continuity)",
"url": "https://github.com",
"logo": "https://github.com/logo.png",
"sameAs": [
"https://twitter.com/YOUR_HANDLE",
"https://www.linkedin.com/company/YOUR_COMPANY",
"https://github.com/YOUR_ORG"
],
"description": "(1-2 sentence elevator pitch for your brand)"
}FExtractable
0%0/0 H2s are quote-ready (≥25 chars, ≥5 words) · DefinedTerm ✗ · FAQ blocks=0
Fix: Rewrite H2 headings as quote-ready sentences (≥5 words, descriptive). Add DefinedTerm schema for key concepts. ≤1 FAQ block per page.
📋 Add DefinedTermSet schema for your key concepts (lifts Extractable +0.30)json-ld
{
"@context": "https://schema.org",
"@type": "DefinedTermSet",
"@id": "https://github.com/#glossary",
"name": "(your concept area) Glossary",
"url": "https://github.com/glossary",
"hasDefinedTerm": [
{
"@type": "DefinedTerm",
"name": "(Term 1)",
"description": "(1-2 sentence definition)",
"inDefinedTermSet": "https://github.com/#glossary"
},
{
"@type": "DefinedTerm",
"name": "(Term 2)",
"description": "(1-2 sentence definition)",
"inDefinedTermSet": "https://github.com/#glossary"
}
]
}📋 Optional: add ONE FAQPage block per page (>1 triggers schema-spam penalty)json-ld
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What does this site do?",
"acceptedAnswer": {
"@type": "Answer",
"text": "(answer in 1-3 sentences)"
}
},
{
"@type": "Question",
"name": "How is this different from alternatives?",
"acceptedAnswer": {
"@type": "Answer",
"text": "(answer in 1-3 sentences)"
}
}
]
}FConsistent
0%No Organization.name detected — brand consistency unscorable.
Fix: Brand name should appear in <title>, nav/header, and Organization schema. Same name everywhere.
📋 Brand name in <title>, <nav>, and Organization.name must matchhtml
<!-- in <head> -->
<title>(YourBrand) · (page-specific subtitle here)</title>
<!-- in <nav> -->
<nav>
<a href="/" class="brand">(YourBrand)</a>
…
</nav>
<!-- in Organization JSON-LD -->
"name": "(YourBrand)"FCorroborated
0%3 external links · 0 to authoritative sources (.gov/.edu/wikipedia/web.dev/etc.).
Fix: Cite ≥3 authoritative sources (gov/edu/wikipedia/standards bodies/peer-reviewed). Build off-site presence (Wikipedia citation, Reddit organic, LinkedIn).
📋 Add ≥3 outbound links to authoritative sources matching your topichtml
<!-- Pick 3-5 sources relevant to your domain. Examples by topic: -->
<!-- Web performance / dev -->
<a href="https://web.dev/articles/vitals">web.dev Core Web Vitals</a>
<a href="https://developer.mozilla.org/en-US/docs/Web/Performance">MDN Web Performance</a>
<a href="https://developer.chrome.com/docs/crux/">Chrome UX Report</a>
<!-- Schema / standards -->
<a href="https://schema.org/Organization">schema.org reference</a>
<a href="https://w3.org/TR/">W3C specifications</a>
<!-- Health / science -->
<a href="https://www.nih.gov/health-information">NIH Health Info</a>
<a href="https://www.cdc.gov/">CDC</a>
<a href="https://pubmed.ncbi.nlm.nih.gov/">PubMed</a>
<!-- Finance / business -->
<a href="https://www.sec.gov/edgar.shtml">SEC EDGAR</a>
<a href="https://www.federalreserve.gov/">Federal Reserve</a>FCredible
0%Person schema ✗ · sameAs=0 · /about or /methodology link=✗ · datePublished=✗ · dateModified=✗
Fix: Add Person schema with sameAs[] (≥2 profiles). Link /about + /methodology in nav/footer. Add datePublished + dateModified to Article schema.
📋 Add Person schema (operator/author identity)json-ld
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://github.com/about#author",
"name": "(your full name — operator or primary author)",
"jobTitle": "Founder",
"url": "https://github.com/about",
"sameAs": [
"https://twitter.com/YOUR_HANDLE",
"https://www.linkedin.com/in/YOUR_HANDLE",
"https://github.com/YOUR_HANDLE"
],
"worksFor": {
"@id": "https://github.com#org"
}
}📋 Add datePublished + dateModified to your Article/WebPage schemajson-ld
"datePublished": "2026-01-15",
"dateModified": "2026-08-12"FDifferentiated
0%0 POV markers detected (e.g. "our view", "we found", "we recommend").
Fix: Add explicit POV sentences ("Our view: …", "We measured …", "We recommend …"). LLMs cite pages with stance more than encyclopedic neutrality.
📋 Add explicit POV sentences in the body text (LLMs cite pages with stance more than neutral encyclopedic content)markdown
> Our view: (your specific stance on the topic this page covers)
> We measured (a number you actually measured) and found (insight).
> We recommend (specific action) because (reason backed by your data).FFresh
0%dateModified ≤90d (schema)=✗ · Last-Modified header ≤90d=✗ · visible "updated YYYY" text=✗
Fix: Add dateModified to schema; serve Last-Modified header; render visible "Last verified YYYY-MM-DD" near content.
📋 Add visible "Last verified" stamp near contenthtml
<p class="text-xs text-gray-500">
Last verified <time datetime="2026-08-12">2026-08-12</time>
</p>📋 Add datePublished + dateModified to Article/WebPage schemajson-ld
{
"@type": "WebPage",
"datePublished": "2026-01-15",
"dateModified": "2026-08-12"
}📋 Set HTTP Last-Modified response header (web framework-specific)text
# Express / Node:
res.setHeader('Last-Modified', new Date().toUTCString());
# Next.js middleware (middleware.ts):
import { NextResponse } from 'next/server';
export function middleware() {
const res = NextResponse.next();
res.headers.set('Last-Modified', new Date().toUTCString());
return res;
}DTransactable
25%2 affordance keywords · mailto=✗ · contact/pricing/signup link=✗
Fix: Make the citation actionable: clear CTA, contact page, pricing, or mailto. Visitors who arrive from an LLM citation should be able to act.
📋 Add a visible mailto contact (LLM citation arrivals need somewhere to act)html
<a href="mailto:contact@github.com">contact@github.com</a>📋 Add a /contact or /pricing page link from your footer/navhtml
<footer>
…
<a href="/contact">Contact</a>
<a href="/pricing">Pricing</a>
</footer>Prioritized fixes with copy-paste code
Ordered by impact across both axes. Top 6. Click the snippet rows to expand the exact code to copy.
- high[accessible] Render meaningful content in static HTML (SSR or static export). GPTBot/PerplexityBot do not execute JavaScript.Lifts Accessible from 0.00 → 1.00 (gap 1.00).
📋 Current body content: 36 words. Target: ≥250 words of unique content for full citation depth.text
Add depth via: • More descriptive body text per section • Inline examples / code blocks / data points • Q&A or comparison sections • Sources cited inline (CC-BY, web.dev, MDN, etc.) - high[extractable] Rewrite H2 headings as quote-ready sentences (≥5 words, descriptive). Add DefinedTerm schema for key concepts. ≤1 FAQ block per page.Lifts Extractable from 0.00 → 1.00 (gap 1.00).
📋 Add DefinedTermSet schema for your key concepts (lifts Extractable +0.30)json-ld
{ "@context": "https://schema.org", "@type": "DefinedTermSet", "@id": "https://github.com/#glossary", "name": "(your concept area) Glossary", "url": "https://github.com/glossary", "hasDefinedTerm": [ { "@type": "DefinedTerm", "name": "(Term 1)", "description": "(1-2 sentence definition)", "inDefinedTermSet": "https://github.com/#glossary" }, { "@type": "DefinedTerm", "name": "(Term 2)", "description": "(1-2 sentence definition)", "inDefinedTermSet": "https://github.com/#glossary" } ] }📋 Optional: add ONE FAQPage block per page (>1 triggers schema-spam penalty)json-ld
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "What does this site do?", "acceptedAnswer": { "@type": "Answer", "text": "(answer in 1-3 sentences)" } }, { "@type": "Question", "name": "How is this different from alternatives?", "acceptedAnswer": { "@type": "Answer", "text": "(answer in 1-3 sentences)" } } ] } - high[recognizable] Add Organization JSON-LD with name + url + logo + sameAs[] (≥2 public profile URLs).Lifts Recognizable from 0.00 → 1.00 (gap 1.00).
📋 Paste in <head> as <script type="application/ld+json">json-ld
{ "@context": "https://schema.org", "@type": "Organization", "@id": "https://github.com#org", "name": "Github", "alternateName": "(any old brand names, for SEO equity continuity)", "url": "https://github.com", "logo": "https://github.com/logo.png", "sameAs": [ "https://twitter.com/YOUR_HANDLE", "https://www.linkedin.com/company/YOUR_COMPANY", "https://github.com/YOUR_ORG" ], "description": "(1-2 sentence elevator pitch for your brand)" } - high[credible] Add Person schema with sameAs[] (≥2 profiles). Link /about + /methodology in nav/footer. Add datePublished + dateModified to Article schema.Lifts Credible from 0.00 → 1.00 (gap 1.00).
📋 Add Person schema (operator/author identity)json-ld
{ "@context": "https://schema.org", "@type": "Person", "@id": "https://github.com/about#author", "name": "(your full name — operator or primary author)", "jobTitle": "Founder", "url": "https://github.com/about", "sameAs": [ "https://twitter.com/YOUR_HANDLE", "https://www.linkedin.com/in/YOUR_HANDLE", "https://github.com/YOUR_HANDLE" ], "worksFor": { "@id": "https://github.com#org" } }📋 Add datePublished + dateModified to your Article/WebPage schemajson-ld
"datePublished": "2026-01-15", "dateModified": "2026-08-12" - high[corroborated] Cite ≥3 authoritative sources (gov/edu/wikipedia/standards bodies/peer-reviewed). Build off-site presence (Wikipedia citation, Reddit organic, LinkedIn).Lifts Corroborated from 0.00 → 1.00 (gap 1.00).
📋 Add ≥3 outbound links to authoritative sources matching your topichtml
<!-- Pick 3-5 sources relevant to your domain. Examples by topic: --> <!-- Web performance / dev --> <a href="https://web.dev/articles/vitals">web.dev Core Web Vitals</a> <a href="https://developer.mozilla.org/en-US/docs/Web/Performance">MDN Web Performance</a> <a href="https://developer.chrome.com/docs/crux/">Chrome UX Report</a> <!-- Schema / standards --> <a href="https://schema.org/Organization">schema.org reference</a> <a href="https://w3.org/TR/">W3C specifications</a> <!-- Health / science --> <a href="https://www.nih.gov/health-information">NIH Health Info</a> <a href="https://www.cdc.gov/">CDC</a> <a href="https://pubmed.ncbi.nlm.nih.gov/">PubMed</a> <!-- Finance / business --> <a href="https://www.sec.gov/edgar.shtml">SEC EDGAR</a> <a href="https://www.federalreserve.gov/">Federal Reserve</a> - medium[useful] Add depth: longer body content, more H2/H3 sections, structured data blocks (Article, Dataset, DefinedTerm).Lifts Useful from 0.00 → 1.00 (gap 1.00).
📋 Lift Useful by closing these specific gapstext
• Body word count: 36 (target ≥600) • Heading count: 1 (target ≥4 — split content into more sections) • Structured-data blocks: 0 (target ≥2 — add Article + Person OR Organization + WebPage)
Share or embed
Free to embed. The widget links back to vitalslens.com so we can keep the audit free.
Embed snippet
<iframe src="https://webvitalstool.com/embed/audit?url=github.com" width="100%" height="640" frameborder="0" loading="lazy" title="VitalsLens audit · github.com"></iframe>
Want fleet monitoring across multiple URLs? VitalsLens Pro — €19/mo.