rel="sponsored": Marking Paid and Affiliate Links
Direct Answer
Mark paid, advertising, sponsorship, or compensated links with rel="sponsored"; nofollow is also acceptable for this purpose, but sponsored is more specific. Multiple relationship values can be combined in one rel attribute when appropriate. For users, a link should communicate its destination and relationship. Developers should verify real href destinations, final responses, and appropriate rel values instead of only visible styling or anchor copy.
Documentation
What this check actually means
Use sponsored for paid placements, sponsorships, advertisements, and affiliate relationships.
Mark paid, advertising, sponsorship, or compensated links with rel="sponsored"; nofollow is also acceptable for this purpose, but sponsored is more specific. Multiple relationship values can be combined in one rel attribute when appropriate.
Expected behavior and decision boundary
Expected state: Mark paid, advertising, sponsorship, or compensated links with rel="sponsored"; nofollow is also acceptable for this purpose, but sponsored is more specific. Multiple relationship values can be combined in one rel attribute when appropriate. The real href, final destination resource, anchor text, and rel relationship match the actual editorial or commercial relationship.
Diagnosis: evidence to capture
Export source URL, link text, href, rel, target, first HTTP status, final URL, and final status. For third-party destinations, also verify that the final document is still the intended source.
Automated repair must not assume that HTTPS or a site home page is “probably correct” when the original resource has not been verified.
Technical implementation
Mark paid, advertising, sponsorship, or compensated links with rel="sponsored"; nofollow is also acceptable for this purpose, but sponsored is more specific. Multiple relationship values can be combined in one rel attribute when appropriate.
<a href="https://partner.example/offer" rel="sponsored">Partner offer</a>
Export source URL, anchor text, href, rel, target, final HTTP status, and final destination. For third-party links, automated “repair” must never assume a different document or an unverified HTTPS endpoint.
Concrete decision example
anchor,rel,first_status,final_url,final_status
Original study,"",301,https://publisher.example/research,200
Partner offer,sponsored,302,https://partner.example/landing,200
Then decide whether the final resource still represents the intended source or commercial relationship. A 200 status alone does not prove the destination is editorially correct.
Common root causes
Common causes include stale third-party sources, redirects to different content, CMS fields assigning the wrong rel, affiliate wrappers, copied links, generic anchor text, or JavaScript navigation without a dependable href. Inspect both markup and the final destination resource.
Edge cases and false positives
nofollow, sponsored, and ugc can be combined when more than one relationship applies. These attributes are not access-control mechanisms and do not stop users from opening a destination. A redirect is not automatically a broken link; verify whether the final resource is still the intended source.
Verification after the fix
| Check | PASS | FAIL | | --- | --- | --- | | Output | expected rule is visible in final HTML/HTTP/DOM | backend field looks correct but final output does not | | Scope | representative URLs from every affected template tested | only one example URL tested | | Source | shared root cause/owner is documented | manual per-page edits without root cause | | Regression | adjacent canonical/robots/accessibility/link rules still pass | fix creates a new defect in the same component | | Evidence | before/after values and test time are stored | only visual impression or screenshot |
Ownership and handoff
Content/SEO owner: defines the expected page purpose and whether the condition actually requires a change.
Developer/platform: fixes the shared template, routing, header, or component source.
QA: tests representative edge states and re-crawls/re-requests after deployment.
Release owner: records time, scope, and rollback point so monitoring signals can be tied to a specific change.
Acceptance criteria
PASS when the final technical state is reproducible on representative URLs, the shared root cause is fixed, intentional exceptions are documented, and a re-crawl/re-request shows no new regression in canonicalization, robots directives, accessibility, links, or rendering.
Worked operational example: defect → fix → proof
Symptom: the audit reports “rel="sponsored": Marking Paid and Affiliate Links” on multiple URLs.
Root cause: the repeated output originates in a template, component, CMS fallback, or infrastructure layer.
Fix: change that shared source instead of patching individual pages, and keep the change as small as possible.
Proof: store at least one before/after URL per template, the final HTTP/HTML/DOM output, and the re-crawl result. If an intentional exception remains different, document it so a future audit does not treat it as an unresolved defect.
For production systems, also include a regression sample: same locale, mobile/desktop when relevant, missing-data state, and one URL that was already correct. This proves whether the change stabilizes the generator rather than only the reported example.
Questions & Answers
Should every external link use `nofollow`?
No. Normal editorial links do not need blanket nofollow. Use relationship attributes according to the real relationship.
How should paid links be marked?
Use rel="sponsored"; nofollow is also acceptable for paid links, but sponsored is more specific.
What is appropriate for user-generated links?
rel="ugc" can qualify the relationship, while moderation, spam controls, and security remain necessary.
Is a redirect destination automatically a broken link?
No. Verify the final resource. A redirect can be acceptable when it still reaches the intended source without a problematic chain.
Practical Check
- Define the affected URL/template class and write the expected behavior before changing anything.
- Capture raw HTTP/HTML; when client-side code changes output, also inspect the rendered DOM.
- Export final link destinations and relationship attributes as structured data.
- Trace the defect to its shared layer: DNS/CDN, routing, template, component, CMS field, or editorial content.
- Implement the smallest systemic fix and preserve a rollback point first.
- Test positive cases, missing/empty data, and at least one relevant edge state.
- Re-crawl or re-request every affected template/URL class and store before/after evidence.
- PASS: expected behavior is reproducible, no adjacent SEO/accessibility rule regresses, and the fix does not require manual per-page workarounds.