Banner Ad Metrics Explained: Impressions, Clicks, and CTR
What impressions, clicks and click-through rate really mean for a direct-sold banner, what skews them, and how to report results to advertisers honestly.
On this page
An impression is counted when an ad is served to a page, a click is counted when someone clicks it, and click-through rate (CTR) is clicks divided by impressions. For a direct-sold banner, these three numbers tell an advertiser how often their ad had a chance to be seen and how many people acted on it. Each has blind spots, such as bots, caching, and ads that load out of view, so report them as measured and explain how they're counted.
Key takeaways
- An impression means the ad was served. It doesn't prove anyone looked at it.
- CTR is clicks ÷ impressions × 100, and it's most useful compared against the same slot's history.
- Bots, caching, ad blockers, and placement all skew the numbers, sometimes up and sometimes down.
- Advertiser analytics rarely match your click count exactly, and that's normal.
- A good report is short: dates, impressions, clicks, CTR, a screenshot, and one line on methodology.
The three metrics, defined
Impressions
An impression is usually counted when the ad server delivers the ad. For an image banner, that's when the browser requests the ad image. This is a served impression.
The advertising industry also defines a stricter viewable impression. Under the Media Rating Council's guidelines, developed with the IAB, a display ad counts as viewable when at least 50% of its pixels are on screen, in an in-focus browser tab, for at least one continuous second (MRC viewable impression guidelines, PDF).
Measuring viewability requires script running in the page to watch the ad's position. A simple script-free image embed can count served impressions but can't confirm that the ad was in view. Say which kind you report.
Clicks
A click is counted when someone clicks the ad and the click reaches the counter, which is often a redirect link that records the click before sending the visitor on. A click is not the same as a visit in the advertiser's analytics. Between the two, people close the tab before the page loads, ad blockers stop analytics scripts, and visitors decline analytics cookies. Expect the advertiser's number to be different and often lower.
Click-through rate
CTR is the share of impressions that turned into clicks:
CTR = clicks ÷ impressions × 100
Example: 36 clicks ÷ 18,000 impressions × 100 = 0.2% CTR
Display banners are typically clicked by only a small fraction of the people who see them, and CTR swings widely with placement, audience, and creative. Rather than chasing a generic benchmark, compare a slot against its own history and judge a campaign by what the advertiser cares about, such as sign-ups or sales.
What skews the numbers
Bots and crawlers
Automated traffic can load images and follow links. The MRC guidelines include filtering out non-human activity among the general requirements for counting impressions. Warning signs in your own stats include sudden spikes with no matching rise in real traffic, a CTR that jumps overnight, and clicks that the advertiser sees bouncing instantly.
Caching
If a browser or proxy caches the ad image, repeat views may never reach the server, so they aren't counted. Ad servers typically prevent this with cache-busting techniques, which the MRC guidelines also list among those requirements. If you self-host a banner on a CDN with long caching, your server logs will undercount.
Placement and lazy loading
A footer banner is served on every page view but seen far less often than one near the top. Lazy loading changes this: an image with loading="lazy" is only requested as it approaches the viewport, so served impressions on below-the-fold ads move closer to impressions people could actually see.
Ad blockers and privacy tools
Some visitors never load the ad at all. They aren't counted, which lowers impressions but doesn't inflate anything.
Your own visits
Every time you check the page, you add impressions, and every test click adds a click. On a small site, that's noticeable. Test sparingly, ideally before the campaign starts.
How to report results to advertisers
Advertisers don't need a dashboard. They need a short, honest summary they can forward to their boss. Include:
- Campaign details: advertiser, slot, page or section, start and end dates.
- The numbers: impressions, clicks, and CTR for the full run, plus a daily breakdown if you have it.
- Proof of delivery: a dated screenshot of the ad live on the page.
- Context: anything unusual, such as a traffic spike from a viral post or an outage.
- Methodology: one sentence on how impressions and clicks are counted.
- Next step: the next open dates and the price.
A plain-text report works fine:
Campaign report: Acme Analytics on example.com
Slot: Sidebar 300x250 (all blog posts)
Dates: May 1-14 (14 days)
Impressions: 18,000
Clicks: 36
CTR: 0.20%
Notes: Traffic was steady; no outages. Impressions are
counted when the ad image is served; clicks when the
ad link is clicked.
Screenshot attached. Next open dates: June 1-14 at $15/day.
The numbers above are examples, not benchmarks.
Suggest that advertisers add UTM parameters to their destination URL, such as utm_source=yoursite&utm_medium=banner. They'll then see your traffic, and what it did, in their own analytics, which is more persuasive than anything you can report.
When results are weak, say so plainly and suggest something concrete, such as a clearer creative, a different slot, or a longer run. Don't promise performance you can't control.
What to share on a booking page
Advertisers deciding whether to book want evidence before they pay. On each slot's booking or advertise page, show:
- Recent impressions and clicks for that slot, not sitewide pageviews, with the date range they cover.
- Where the slot appears, such as all blog posts, the homepage, or one section.
- The size, price, and available dates.
- A one-line audience description that matches what you'd put in your media kit.
Real slot-level numbers beat inflated sitewide claims. An advertiser who books on honest data and gets what they expected is far more likely to book again.
Using your metrics to sanity-check prices
Even if you sell by the day, impressions let you see the effective CPM, or cost per thousand impressions, that your price implies:
Effective CPM = price ÷ impressions × 1,000
Example: $15 per day ÷ 6,000 impressions per day × 1,000 = $2.50 CPM
If a slot's effective CPM looks very low for a well-targeted niche audience, you may be underpricing it. If it looks very high, expect advertisers to push back. Our comparison of flat-rate vs. CPM pricing goes deeper.
Let the numbers sell the slot
The simplest way to build trust is to show real numbers before anyone pays. Spreadiom tracks impressions, clicks, and CTR for each ad slot, and every slot's booking page shows advertisers its size, price, availability calendar, and recent impressions and clicks. That gives advertisers the evidence they need to book without a back-and-forth email thread, and gives you the figures for your end-of-campaign report.
FAQ
What is a good CTR for a banner ad?
There's no single good number. Display banners are typically clicked by only a small fraction of the people who see them, and CTR varies widely with placement, audience relevance, and creative. The most useful comparison is the same slot's own history. If a new creative beats the slot's usual CTR, it's working. Also judge campaigns by the advertiser's real goal, such as sign-ups, rather than CTR alone.
Why don't my click numbers match the advertiser's analytics?
Clicks and analytics sessions measure different moments. A click is recorded when someone clicks the ad, while the advertiser's analytics records a session only after their page loads and their tracking script runs. People close tabs, ad blockers stop scripts, and some visitors decline analytics cookies. Bots can also click. A gap is normal, so agree on which numbers you'll report before the campaign starts.
What is the difference between an impression and a viewable impression?
A served impression is counted when the ad is delivered to the page, whether or not anyone sees it. A viewable impression, under MRC guidelines developed with the IAB, requires at least 50% of a display ad's pixels to be on screen for at least one continuous second. Measuring viewability needs script in the page, so simple image embeds usually report served impressions.
Should I guarantee impressions or clicks to advertisers?
For flat-rate bookings, it's safer not to. You're selling a placement for a period of time, and traffic and click behavior can change for reasons outside your control. Share recent slot-level numbers so advertisers can set realistic expectations, state in your terms that results aren't guaranteed, and offer extra days if your site has an outage. If you sell by CPM, you're effectively promising impressions.
Sell ad space on your site — start free
Give every ad slot its own booking page. Advertisers pick dates, upload a banner and pay by card or PayPal — straight into your own account. No subscription; 5% only on completed bookings.