The twitter:site tag attributes shared content to your site's Twitter/X account. When someone shares a page from your site, Twitter can display the site's account handle below the card, providing viewers a direct path to follow your account from within the share. Without it, the card is anonymous — there is no account context, no follow prompt, and no attribution signal that accrues to your account. Per the Twitter Cards spec, twitter:site is the mechanism by which shares generate account-level visibility. For any project that uses Twitter/X as a distribution channel, omitting this tag means every share generates awareness without routing that awareness back to the account.
Medium because missing twitter:site forfeits account attribution and follow opportunities on every share, reducing the compounding account-growth effect of social distribution.
Add twitter.site with your site's Twitter/X handle to the root layout metadata:
// app/layout.tsx
export const metadata: Metadata = {
twitter: {
card: 'summary_large_image',
site: '@yourhandle',
},
}
The handle must include the @ prefix. This applies globally and does not need per-page overrides unless specific pages should attribute to a different account (e.g., an individual author's handle on their profile page).
ID: marketing-social-sharing.twitter-cards.twitter-site-handle
Severity: medium
What to look for: Check for twitter:site meta tag or metadata.twitter.site property. This should be the @handle of the site's Twitter/X account. Check root layout metadata first, then page-level overrides. Count all instances found and enumerate each.
Pass criteria: twitter:site is set in at least the root layout with a @handle value. The implementation must be verifiable by examining the codebase and must handle the documented requirements completely. At least 1 implementation must be confirmed.
Fail criteria: No twitter:site property found anywhere in the project metadata.
Skip (N/A) when: The project's documentation, README, or config shows it's an internal tool, API project, or developer library not intended for public social promotion.
Detail on fail: "twitter:site handle not configured — shared links won't attribute content to the site's Twitter/X account"
Remediation: twitter:site attributes shared content back to your site's Twitter/X account. When someone shares your content, Twitter can show the account context below the card. Add it to your root layout:
export const metadata: Metadata = {
twitter: {
card: 'summary_large_image',
site: '@yourhandle',
},
}
If the project does not have a Twitter/X account, skip this — it is not required for cards to function.