SEO
SEO
Audits how discoverable a domain is to search engines, AI search products, and social platforms. The scan checks robots.txt and sitemap.xml for crawlability, the homepage HTML for required metadata (title, description, viewport, canonical), and structured / social data (Open Graph, Twitter Card, schema.org JSON-LD).
Common Uses
- Catching missing meta tags before a launch
- Verifying social-share previews look correct on X and LinkedIn
- Auditing competitors' structured-data implementations
Why It Matters
Even with great content, missing metadata leaves traffic on the table — broken share previews, mis-titled tab listings, and citation omissions in AI summaries. SEO health is also a feedstock for AI search, since LLMs increasingly cite from the same structured data search engines use.
History
Modern SEO grew from the original meta-keywords era through Google's PageRank (1998), structured-data initiatives like schema.org (2011), and the rise of social-share metadata (Open Graph in 2010, Twitter Cards in 2012). The 2020s added AI-search citation as a major reason to keep this data clean.
How discoverable is stripe.com to search engines and social platforms?
Page Metadata
3/4<title>
The contents of the <title> element in the document head. It's what shows in the browser tab, search result listings, and AI-search citations.
Common Uses
- Search result snippets
- Browser tab labels and bookmarks
- Default fallback text for Open Graph / Twitter Card when og:title is absent
Valid Settings
30–60 characters is the sweet spot for full visibility in Google's SERP. Include the primary keyword early and the brand name at the end. Avoid stuffing or duplicating across pages.
Why It Matters
Title is the single highest-impact piece of metadata for click-through rates. A vague or missing <title> tanks both SEO and human readability.
History
Defined in HTML 2.0 (1995). Title display widths in Google have varied (currently ~580px / ~60 chars) but the field has been the cornerstone of result listings since the late 1990s.
meta description
A <meta name="description" content="..."> tag in the homepage <head> providing a short summary of the page. Search engines often display it under the title in result listings; social platforms use it as a fallback when og:description is missing.
Common Uses
- SERP snippet text below your title
- Fallback summary on social link previews
- Input signal for AI search summaries
Valid Settings
50–160 characters is the practical range; modern Google often shows ~155 chars on desktop, ~120 on mobile. Make it unique per page and include a clear value proposition.
Why It Matters
Google may rewrite descriptions, but a strong original description still drives click-through rates and ensures consistent messaging across results, social shares, and AI summaries.
History
Defined in HTML 2.0 (1995) but largely ignored as a ranking signal since 2009. Still actively used as a display signal in SERPs and social previews.
<h1> tag
The main page heading inside an <h1> element. Search engines, screen readers, and AI summarizers all treat the H1 as the strongest in-document statement of what the page is about.
Common Uses
- Telling search engines the primary topic of the page
- Anchoring screen-reader navigation for accessibility
- Giving AI summarizers a clean heading to quote when citing the page
Valid Settings
Exactly one <h1> per page, near the top of the <main> content, describing the primary topic in 5–15 words. Don't reuse the H1 across templates — each page should have a unique one.
Why It Matters
Pages without an H1 (or with multiple competing H1s) routinely underperform in both classic SERPs and AI citations. The fix is usually trivial: one explicit <h1> in the main content area.
History
HTML headings <h1>–<h6> were defined in HTML 2.0 (1995). The 'use only one H1 per page' guidance traces back to early accessibility audits and remains the consensus best practice across SEO, WCAG, and AI-readiness audits in 2026.
viewport meta
A <meta name="viewport" content="width=device-width, initial-scale=1"> declaration that tells mobile browsers to render at the device's actual width instead of zooming out from a desktop layout.
Common Uses
- Making the page render correctly on phones and tablets
- Passing Google's mobile-friendly check (a ranking factor since 2015)
- Enabling responsive CSS media queries to behave as designed
Valid Settings
Standard value: 'width=device-width, initial-scale=1'. Avoid 'user-scalable=no' or fixed widths — both hurt accessibility and may be ignored by modern browsers.
Why It Matters
Without a viewport meta, mobile browsers default to a 980px-wide layout and zoom out, making everything tiny. It's the single line that unlocks mobile-friendliness.
History
Introduced by Apple on the iPhone in 2007 to handle desktop sites on a small screen. Now part of every responsive design template.
Crawlability
2/3robots.txt
A plain-text file at /robots.txt telling crawlers which paths they may visit and pointing them at sitemap files. The file is a per-host convention enforced by well-behaved crawlers but not by browsers or anything else.
Common Uses
- Blocking crawlers from staging, admin, or duplicate-content paths
- Pointing crawlers at one or more Sitemap: URLs
- Throttling specific crawlers via Crawl-delay (where supported)
Valid Settings
One or more 'User-agent: <name>' stanzas followed by 'Allow:' / 'Disallow:' lines. Add a 'Sitemap: <url>' directive (any line, often at the top) so crawlers find your sitemap without guessing.
Why It Matters
Without robots.txt, crawlers fall back to crawling everything, which can index staging URLs, duplicate content, and infinite faceted-search pages. A simple file prevents a lot of accidental indexing.
History
Defined by Martijn Koster in 1994 as an informal convention, standardized as RFC 9309 in 2022. The format hasn't materially changed in 30 years.
sitemap.xml
An XML file listing every URL you want crawled, with optional lastmod/changefreq/priority hints. Served at /sitemap.xml or referenced from robots.txt.
Common Uses
- Helping crawlers find pages that aren't linked from the homepage
- Telling crawlers when content was last updated so they don't re-fetch stale pages
- Splitting large sites into sub-sitemaps via a sitemap index file
Valid Settings
XML with a root <urlset> (or <sitemapindex>) using the namespace http://www.sitemaps.org/schemas/sitemap/0.9. Each <url> contains a required <loc>. Limit: 50,000 URLs and 50 MB per file; use a sitemap index for larger sites.
Why It Matters
Even with great internal linking, crawlers miss pages — pagination, JS-rendered content, freshly added URLs. A sitemap is the cheapest guarantee that every important URL is seen.
History
Published by Google in 2005 and adopted by Yahoo, Microsoft, and others in 2006 (sitemaps.org). The format has remained essentially unchanged since then.
canonical URL
A <link rel="canonical" href="..."> tag in the homepage <head> declaring the preferred URL when multiple URLs serve the same content (e.g. trailing slashes, tracking params, www vs. apex).
Common Uses
- Consolidating ranking signals when the same content is reachable via multiple URLs
- Pointing UTM-tracked URLs at their canonical equivalent
- Telling crawlers which subdomain is authoritative (www vs. apex)
Valid Settings
Format: <link rel="canonical" href="https://yourdomain.com/path">. The href should be absolute (not relative), match the scheme/host you want indexed, and point to a 200-OK URL — not a redirect.
Why It Matters
Without a canonical, near-duplicate URLs (?utm_source=…, /page/ vs. /page, http vs. https) dilute ranking signals across the duplicates. A canonical link is the lowest-effort fix.
History
Standardized jointly by Google, Bing, and Yahoo in 2009 to address the duplicate-content problem that emerged with the rise of tracking parameters and faceted navigation.
Social & Structured Data
3/3Open Graph tags
<meta property="og:*" ...> tags that control how the page renders when shared on Facebook, LinkedIn, Slack, Discord, and most other link-preview rendering platforms. The big four are og:title, og:description, og:image, and og:url.
Common Uses
- Rich link previews on Facebook, LinkedIn, Slack, Discord, iMessage
- Setting a hero image and headline that differ from the page <title>
- Specifying og:type (article, product, website) for richer rendering
Valid Settings
At minimum: og:title, og:description, og:image (absolute URL, at least 1200×630). Add og:url (canonical), og:type, and og:site_name for completeness. Each tag uses property=, not name=.
Why It Matters
A link without OG tags falls back to whatever the rendering platform can scrape, which is often the wrong image, no description, or the raw URL. OG tags give you direct control of the social-share experience.
History
Introduced by Facebook in 2010 as part of the Open Graph protocol. The format was adopted by virtually every link-rendering platform within a few years and is now a universal convention.
Twitter Card
A <meta name="twitter:card" content="summary_large_image"> declaration (plus optional twitter:title / twitter:description / twitter:image) that controls how the page renders on X (Twitter).
Common Uses
- Showing a large hero-image card on X shares
- Overriding Open Graph values just for X
- Specifying card type (summary, summary_large_image, player, app)
Valid Settings
Card types: 'summary' (small thumb), 'summary_large_image' (hero image), 'player' (video), 'app' (mobile install card). Most sites should use 'summary_large_image'. X falls back to Open Graph when twitter:* is absent.
Why It Matters
X is one of the highest-traffic surfaces for link previews. A card tag ensures your post renders as a rich preview instead of a bare URL.
History
Introduced by Twitter in 2012. Survived the X rebrand in 2023; the tags are still 'twitter:*' for backward compatibility.
schema.org JSON-LD
Structured data embedded as <script type="application/ld+json"> in the homepage <head>. It declares the page's entities — Organization, WebSite, Article, Product, BreadcrumbList, FAQPage, etc. — in a machine-readable JSON format that search and AI use to build rich result cards and entity citations.
Common Uses
- Knowledge Graph entries for your organization
- Article rich results with author, date, and image
- Product rich results with price, availability, and reviews
- Breadcrumb trails in search listings
Valid Settings
JSON-LD block with @context 'https://schema.org' and an @type. Multiple @types can coexist via @graph. Common homepage types: Organization (or Corporation / LocalBusiness), WebSite, BreadcrumbList.
Why It Matters
AI search products like ChatGPT search, Perplexity, and Google AI Overviews depend heavily on structured data to attribute citations and build summaries. Without it, your content may be paraphrased without credit or with the wrong entity name.
History
Schema.org launched in 2011 as a joint vocabulary from Google, Bing, Yahoo, and Yandex. JSON-LD became the dominant serialization by 2016 and is now strongly preferred over the older microdata and RDFa formats.
{
"host": "stripe.com",
"score": 80,
"grade": "B",
"passed": 8,
"total": 10,
"groups": {
"Page Metadata": [
{
"id": "title",
"group": "Page Metadata",
"label": "<title>",
"description": "Page title shown in tabs, search results, and AI citations.",
"status": "pass",
"detail": "54 chars: \"Stripe | Financial Infrastructure to Grow Your Revenue\"",
"remediation": "Aim for a <title> between 30 and 60 characters."
},
{
"id": "meta_description",
"group": "Page Metadata",
"label": "meta description",
"description": "Summary used by search engines and link previews.",
"status": "pass",
"detail": "149 chars",
"remediation": "Aim for 50\u2013160 characters of unique, descriptive copy."
},
{
"id": "h1",
"group": "Page Metadata",
"label": "<h1> tag",
"description": "Main page heading \u2014 the strongest on-page topic signal.",
"status": "fail",
"detail": "2 found (should be exactly 1)",
"remediation": "Use exactly one <h1> per page describing the primary topic."
},
{
"id": "viewport",
"group": "Page Metadata",
"label": "viewport meta",
"description": "Tells mobile browsers to render at the device width.",
"status": "pass",
"detail": "Set",
"remediation": "Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">."
}
],
"Crawlability": [
{
"id": "robots",
"group": "Crawlability",
"label": "robots.txt",
"description": "Tells crawlers which paths to allow or disallow.",
"status": "pass",
"detail": "Found (643 bytes)",
"remediation": "Publish /robots.txt with at least a \"User-agent: *\" stanza and a Sitemap: directive."
},
{
"id": "sitemap",
"group": "Crawlability",
"label": "sitemap.xml",
"description": "XML list of crawlable URLs.",
"status": "fail",
"detail": "Not found",
"remediation": "Publish /sitemap.xml listing all important URLs (or a sitemap index for large sites)."
},
{
"id": "canonical",
"group": "Crawlability",
"label": "canonical URL",
"description": "Declares the preferred URL when duplicates exist.",
"status": "pass",
"detail": "https://stripe.com/",
"remediation": "Add <link rel=\"canonical\" href=\"https://yourdomain/\"> in the homepage <head>."
}
],
"Social & Structured Data": [
{
"id": "open_graph",
"group": "Social & Structured Data",
"label": "Open Graph tags",
"description": "Controls how the page renders when shared on social platforms.",
"status": "pass",
"detail": "4/4 set: og:title, og:description, og:image, og:url",
"remediation": "Set at least og:title, og:description, og:image (preferably og:url too) in the <head>."
},
{
"id": "twitter_card",
"group": "Social & Structured Data",
"label": "Twitter Card",
"description": "Controls how the page renders on X/Twitter.",
"status": "pass",
"detail": "Set",
"remediation": "Add <meta name=\"twitter:card\" content=\"summary_large_image\"> plus twitter:title/description/image."
},
{
"id": "schema_org",
"group": "Social & Structured Data",
"label": "schema.org JSON-LD",
"description": "Structured data for search and AI citation.",
"status": "pass",
"detail": "1 block(s): WebSite, Organization",
"remediation": "Add <script type=\"application/ld+json\"> with at least one @type relevant to the page (Organization, WebSite, Article, Product, etc.)."
}
]
},
"scanned_at": "2026-06-24T00:23:23+00:00"
}