AFFILIATE DISCLOSURE CHECKER · RUNS IN YOUR BROWSER

Is your affiliate disclosure missing, or just too late?

Paste a blog post or page's HTML and see every affiliate link it recognises — an Amazon Associates tag= link, an amzn.to short link, rel="sponsored", or a known network's tracking link (ShareASale, CJ, Impact, Skimlinks, AWIN, and similar) — and whether a disclosure phrase appears before the first one, the way the FTC's Endorsement Guides call for. Separately, it checks whether any Amazon link carries Amazon's own required exact statement — a generic "affiliate links" note is not enough for Amazon specifically, and Amazon has terminated associate accounts over exactly this gap.

Nothing is uploaded. The text box is parsed in this browser and never leaves your device. This is a fact-check, not a compliance determination: it names what it found, not whether you are safe from the FTC or from Amazon.

1. Paste your page's HTML

Prefer a CLI, or want this as a pre-publish gate?

Same logic, zero dependencies, one file — and it can walk a whole built site (e.g. a static blog's output directory) in one pass:

node cli.mjs check post.html                     # one file, human-readable
node cli.mjs check dist --json                      # a whole build output dir, machine-readable
node cli.mjs check dist --strict                    # also fail on a missing Amazon-required phrase

Get cli.mjs — Node 18+, nothing to install. It reads only the local files/directories you name: no network call, ever. Exits 1 if any file is missing a disclosure, or discloses only after the first affiliate link.

What's checked

SignalWhat it means
Amazon Associates tag= link, or amzn.toAmazon's own tracking parameter / link shortener
rel="sponsored"Google's own recommended annotation for a paid or affiliate link, any network
Known affiliate-network tracking domainShareASale, CJ/Commission Junction, Rakuten/LinkSynergy, Impact, Skimlinks, VigLink, rewardStyle/LTK, AWIN, AvantLink, and similar
Generic tracking parameterirclickid=, affiliate_id=, aff_id=

Matched against visible text and link markup only — <script>, <style>, and HTML comments are never scanned. It cannot see a link built dynamically by client-side JavaScript that never appears in the pasted markup, and it does not attempt to identify every affiliate network in existence — only the widely-used ones listed above.

More: what disclosure Amazon Associates and the FTC actually require, and where to put it. Never written a disclosure yet? See this checker vs. Post Affiliate Pro's Disclosure Generator. Already have one and just want to know if it's placed right? See this checker vs. checking a post by eye.

Common questions

Why does this matter for Amazon Associates specifically?

Amazon's Associates Program Operating Agreement requires every page carrying an Associates link to state, in substance, "As an Amazon Associate I earn from qualifying purchases." Amazon has terminated associate accounts for missing this, which removes the account's entire earning history, not just future commissions — so a missing disclosure is a real, checkable income risk, not a hypothetical one.

Is a generic "affiliate links" disclosure enough for an Amazon link?

Not for Amazon specifically. The FTC's Endorsement Guides ask for a clear and conspicuous disclosure in general, which a generic phrase like "this post contains affiliate links" can satisfy — but Amazon's own operating agreement additionally requires its specific exact statement, so this tool checks the two separately and flags an Amazon link that has some disclosure but not Amazon's own required wording.

Does this tell me whether I am FTC or Amazon compliant?

No. It reports which affiliate-link signals and which disclosure phrases it found, and their order on the page — facts about the text, not a legal or contractual determination. Read the FTC's Endorsement Guides and Amazon's own Associates Program Operating Agreement, and consult a professional if you need a determination you can rely on.

Is my content uploaded anywhere?

No. The browser page parses the HTML you paste entirely in your own browser and never sends it anywhere. The CLI reads only local files — no network call, ever.