How to Tell If a Website Uses Google AdSense
Google AdSense monetises sites with display ads. Detect it via the adsbygoogle.js script from pagead2.googlesyndication.com, the adsbygoogle array, ca-pub- publisher IDs and ins.adsbygoogle blocks.
Google AdSense is the most widely used display-advertising network for publishers — the way a vast number of blogs, news sites and content sites turn traffic into revenue. Because it loads from a distinctive Google ad domain and uses recognisable ad markup, detecting it is straightforward: look for the adsbygoogle.js script from pagead2.googlesyndication.com and a ca-pub- publisher ID. This guide covers every reliable signal, the ad-serving architecture behind them, the look-alikes to rule out, and what AdSense usage tells you about the site.
What is Google AdSense?
AdSense is Google's advertising programme for publishers: site owners place ad units on their pages, and Google fills them with relevant display ads (text, image, video), paying the publisher a share of the revenue. It is the default monetisation method for independent content sites — blogs, niche and hobby sites, news and information sites — because it is free to join, easy to implement, and requires no direct ad sales. AdSense is part of Google's broader ad ecosystem (which also includes Ad Manager for larger publishers and AdX for programmatic), but AdSense specifically targets the long tail of content publishers.
For detection, the key context is that AdSense signals a content site monetised by advertising rather than a business selling products or services. Finding it tells you the site's revenue model is traffic-and-ads, which shapes everything about how it operates (it optimises for pageviews and ad viewability). Because AdSense loads from Google's ad domains and renders recognisable ad markup, it is easy to confirm, and the publisher ID even identifies the account. Its presence is a clear marker of the publisher/ad-monetisation segment of the web.
How AdSense loads and serves ads
An AdSense install loads the script adsbygoogle.js from pagead2.googlesyndication.com, with the publisher's account in the URL as a client=ca-pub-XXXXXXXXXXXXXXXX parameter (the publisher ID). Ad units are placed as <ins class="adsbygoogle"> elements carrying data-ad-client="ca-pub-..." and data-ad-slot="..." attributes, and each is activated by pushing an empty object onto the global window.adsbygoogle array: (adsbygoogle = window.adsbygoogle || []).push({}). For modern auto-ads, a single script with the publisher ID lets Google place ads automatically.
When ads render, the creatives and their iframes load from Google's ad-serving domains — googlesyndication.com (e.g. tpc.googlesyndication.com, pagead2.googlesyndication.com) and doubleclick.net (googleads.g.doubleclick.net). So a page with AdSense shows the loader script, the ca-pub- ID, <ins class="adsbygoogle"> slots, the adsbygoogle array, and ad iframes from Google's ad domains. The ca-pub- ID is public and identifies the publisher account. Knowing these signals makes detection quick and account-identifiable.
How to tell if a website uses Google AdSense
Confirm at least one strong signal (the publisher ID suffices).
1. View the source. Search for adsbygoogle or ca-pub-. The adsbygoogle.js script with a client=ca-pub-... parameter, and <ins class="adsbygoogle"> ad blocks, are the definitive signals.
2. Check the Network tab. Filter for googlesyndication or adsbygoogle. The loader from pagead2.googlesyndication.com and ad iframes from googlesyndication.com/doubleclick.net confirm AdSense.
3. Use the console. Type adsbygoogle and press Enter. A returned array confirms the AdSense queue is present.
4. Inspect an ad. Right-click a display ad and inspect it — an <ins class="adsbygoogle"> element wrapping a googlesyndication.com iframe is characteristic.
5. Read the ca-pub- ID. The publisher ID in the script URL or data-ad-client identifies the AdSense account.
What the AdSense signals look like
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1234567890123456" crossorigin="anonymous"></script>
<ins class="adsbygoogle" data-ad-client="ca-pub-1234567890123456" data-ad-slot="9876543210"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
// Ad iframes load from googlesyndication.com / doubleclick.net
The combination of the adsbygoogle.js loader with a ca-pub- ID, the <ins class="adsbygoogle"> slots, and the adsbygoogle array is conclusive.
AdSense versus other ad networks — avoiding false positives
Match the domains and markup to keep ad tech distinct. AdSense uses googlesyndication.com/doubleclick.net, the ca-pub- ID and adsbygoogle; Google Ad Manager (GAM/DFP) uses securepubads.g.doubleclick.net and googletag (for larger publishers); Mediavine and AdThrive/Raptive are managed ad services that sit on top of Google's stack but add their own scripts (scripts.mediavine.com, ads.adthrive.com); Ezoic uses its own domains; native-ad networks like Taboola and Outbrain are different (content recommendation). The ca-pub-/adsbygoogle markers are specific to AdSense. Note that a managed ad service (Mediavine, Raptive, Ezoic) may serve Google ads underneath while presenting their own scripts — so a site can show both the managed service's markers and Google ad domains.
How reliable is each AdSense signal?
The adsbygoogle.js loader with a ca-pub- ID and the <ins class="adsbygoogle"> slots are definitive. The adsbygoogle global array is equally strong. Ad iframes from googlesyndication.com/doubleclick.net corroborate active serving. The ca-pub- ID reliably identifies the publisher. The weakest situation is a site using auto-ads where slots are injected dynamically, but the loader script and publisher ID are still present. As a rule, the ca-pub- ID or the adsbygoogle.js loader settles it, and the ID identifies the account.
What AdSense usage reveals about a site
Finding AdSense signals a content site monetised by display advertising. Its presence tells you the revenue model is traffic-and-ads, which usually means a blog, news site, niche-content site, forum or hobby site whose owner earns from pageviews. That has implications: such sites optimise for traffic volume, ad viewability and (sometimes to a fault) ad density, and they are sensitive to anything affecting traffic or ad revenue. If you sell SEO, content, ad-optimisation, or publisher tools, an AdSense site marks a publisher who cares about traffic and ad earnings. The publisher ID can also reveal when one operator runs multiple sites under a single AdSense account, a useful signal for identifying content networks. A site that has graduated from AdSense to a managed service (Mediavine, Raptive) indicates higher traffic and revenue.
What finding AdSense means for sales, agencies and competitive research
For sales and prospecting, AdSense marks an ad-monetised publisher — a fit for SEO tools, content services, ad-optimisation products, and publisher infrastructure. The publisher ID can group a content network run by one operator.
For agencies and consultants, finding AdSense tells you the client earns from traffic and ads, so engagements can focus on traffic growth, ad-layout optimisation, Core Web Vitals (ad scripts hurt performance), or graduating to a higher-paying managed ad service. It signals a publisher whose KPIs are pageviews and RPM.
For competitive and market research, AdSense versus a premium managed ad service reveals a publisher's scale: AdSense suggests an earlier-stage or smaller site, while Mediavine/Raptive suggests significant traffic. Spotting AdSense across a niche maps the ad-monetised players in that content space.
AdSense in the wider publisher stack
AdSense sits at the centre of an ad-monetised content stack. It accompanies a CMS (very often WordPress), an SEO setup (Yoast or Rank Math, since SEO drives the traffic that ads monetise), Google Analytics for traffic measurement, and frequently a consent-management platform (ads require consent in many regions). Higher-traffic publishers layer a managed ad service (Mediavine, Raptive, Ezoic) over or in place of raw AdSense. Because ad scripts are heavy, performance and Core Web Vitals are a constant tension. For an auditor, the valuable details are the publisher ID, whether raw AdSense or a managed service is in use, the CMS and SEO tools, the consent setup, and the performance impact of the ad stack; together these reveal an ad-monetised publisher and its sophistication.
A quick AdSense confirmation walkthrough
Open the site and view the source; search for ca-pub- and adsbygoogle. You should find the adsbygoogle.js loader from pagead2.googlesyndication.com with a client=ca-pub-... parameter, and <ins class="adsbygoogle"> ad blocks. Open the Network tab, filter for googlesyndication, and confirm the loader and ad iframes. In the console, type adsbygoogle to confirm the array. Read the ca-pub- ID to identify the publisher. Any of these confirms AdSense and the ID identifies the account.
A quick AdSense detection checklist
- View source for
ca-pub-and theadsbygoogle.jsloader — conclusive. - Look for
<ins class="adsbygoogle">ad blocks withdata-ad-client. - Filter the Network tab for
googlesyndication/doubleclick.net. - Type
adsbygooglein the console to confirm the array. - Read the
ca-pub-publisher ID to identify the account. - Distinguish raw AdSense from managed services (Mediavine, Raptive, Ezoic) layered on top.
Detecting AdSense at scale
Checking one site is quick, but mapping ad-monetisation across many domains — to find publishers and content networks — calls for automation. StackOptic detects AdSense and thousands of other technologies from a real browser, reading scripts, ad markup and ad-domain traffic. For related reading, see our guide to finding out what analytics a website uses and the full Google AdSense technology profile.
Frequently asked questions
What is the fastest way to tell if a site uses AdSense?
View the source or open the Network tab and look for the adsbygoogle.js script from pagead2.googlesyndication.com, which includes a client parameter like ca-pub-1234567890123456. That publisher ID, plus <ins class="adsbygoogle"> ad blocks, is the definitive AdSense signal.
What is the ca-pub- publisher ID?
ca-pub- followed by a long number is the AdSense publisher ID identifying the account that monetises the site. It appears in the adsbygoogle.js script URL (client=ca-pub-...) and in the data-ad-client attribute of ad units. Finding it confirms AdSense and identifies the publisher account.
What is the adsbygoogle array?
window.adsbygoogle is the global array AdSense uses to queue ad units for rendering: each ad slot pushes an empty object onto it, e.g. (adsbygoogle = window.adsbygoogle || []).push({}). Finding the adsbygoogle global, alongside <ins class="adsbygoogle"> elements, confirms AdSense.
Where do AdSense ad creatives load from?
AdSense ad iframes and creatives load from Google's ad domains — googlesyndication.com (e.g. pagead2.googlesyndication.com, tpc.googlesyndication.com) and doubleclick.net. Seeing ad iframes from these domains corroborates AdSense serving display ads on the page.
What does it mean if a site uses AdSense?
Google AdSense is the most popular display-advertising network for publishers. Finding it signals a content site that monetises its traffic with ads — typically blogs, news, niche content and hobby sites — rather than selling products or services directly.
Analyse any website with StackOptic
Get the full technology stack, performance, security and SEO report in seconds — free.
Analyse a websiteRelated articles
How to Tell If a Website Uses Heap
Heap (Heap Analytics) autocaptures product events. Detect it via the cdn.heapanalytics.com script, the global heap object, heapanalytics.com beacons and _hp2 cookies.
How to Tell If a Website Uses Foundation
Foundation (by Zurb) is a responsive front-end framework. Detect it via its grid classes (row/columns, grid-x/cell), data-* component attributes and the foundation.css/js files.
How to Tell If a Website Uses Crisp
Crisp is a developer-friendly, affordable live-chat and messaging tool. Detect it via the client.crisp.chat/l.js script, the window.$crisp object and the CRISP_WEBSITE_ID value.