Google AdSense calculator
10,000 daily page views at a 1.5% click-through rate and 0.40 per click bring 150 clicks and 60 a day: 1,800 a month and 21,900 a year. Test a traffic goal or a pitch before you buy more content. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Daily page views
- 10,000
- Click through rate
- 1.5
- Cost per click
- 0.4
- Daily clicks
- 150
- Daily revenue
- 60
- Monthly revenue
- 1,800
- Yearly revenue
- 21,900
Google AdSense earnings depend on three publisher-side numbers: how many times pages are viewed in a day, what share of those views become ad clicks, and how much an advertiser pays for each click. This Google AdSense calculator multiplies daily page views by the click-through rate as a percent of one hundred, then by cost per click, to estimate daily revenue, and scales that daily figure by thirty days for a monthly projection and by three hundred sixty-five days for a yearly projection. Arithmetic is deterministic, with no network, no sampling, and no clock.
What your AdSense estimate means and shows
Google AdSense pays publishers when visitors click ads, so the simplest earnings identity is daily page views times the click-through rate as a fraction of one hundred, times the cost per click the network reports for that traffic. Daily page views are the counted loads of pages that can show ads in a twenty-four-hour window, not unique visitors and not sessions. Click-through rate is the percent of those views that produce a click; a rate of one point five means one and a half clicks per hundred views.
Cost per click is the average amount an advertiser pays for one of those clicks in a single currency unit. Multiplying the three numbers yields daily revenue. Monthly revenue multiplies that daily figure by thirty, a conventional planning month used by publisher worksheets.
Yearly revenue multiplies the same daily figure by three hundred sixty-five, a non-leap planning year. There is no hidden fill-rate, viewability filter, Smart Pricing haircut, or currency conversion: the engine either scales three finite numbers or rejects the input.
Where AdSense earnings thinking fits in publishing, planning, and software
People meet AdSense earnings thinking when a blogger asks whether ten thousand daily page views at a one point five percent click-through rate and a forty-cent click still covers hosting, when a niche publisher models next year's traffic target before buying more content, or when an agency puts a conservative CPC into a client deck so the revenue slide is arithmetic rather than a screenshot from yesterday's dashboard.
Growth engineers call the same contract from scripts to seed deterministic test vectors for publisher dashboards, to normalize user-entered views and rates before a recommendation demo, or to satisfy product-challenge statements that demand daily, monthly, and yearly revenue fields rather than a hand-waved income claim. Homework and interview practice often needs a fast, offline source of the views-times-rate-times-click product so solutions can be checked without opaque spreadsheet macros under time pressure.
This identity is not a substitute for a live AdSense report, a fill-rate audit, or a tax return that includes other income, but it is the number every publisher worksheet already prints next to page views.
What you can do with it
Blog and niche-site traffic models
Turn yesterday's page views, a realistic click-through rate, and a conservative cost per click into daily, monthly, and yearly AdSense estimates before you buy more content or hosting.
Agency decks and client planning
Put the same three inputs into a slide so the revenue line is arithmetic, not a screenshot, and so a CTR typed above one hundred is rejected instead of silently inflating the year.
FAQ
Is this the same as a CPM or CPA calculator?
No. This identity uses publisher page views, click-through rate, and cost per click only. CPM needs campaign cost and impressions; CPA needs spend and acquisitions. Use a dedicated tool if you need those advertiser-side ratios.
Why is the monthly figure daily revenue times thirty, not a calendar month?
Publisher planning worksheets conventionally scale a daily run-rate by thirty days for a month and by three hundred sixty-five days for a year. Leap days and varying month lengths are out of scope; the formula field states both multipliers.
Why do my real AdSense earnings differ from this estimate?
The estimate is plain arithmetic on your three numbers. It does not apply fill rate, viewability filters, Smart Pricing reductions or currency conversion, and your real click price changes daily, so treat it as a planning figure, not as your AdSense report.
Should I enter unique visitors or page views?
Page views. Count each load of a page that can show ads within one day, not unique visitors and not sessions. One visitor reading four pages counts as four views.
How do I enter the click-through rate?
As a percent of page views, between 0 and 100. A value of 1.5 means 1.5 clicks for every 100 views. Entering it as a fraction instead of a percent makes the estimate a hundred times too small.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/google-adsense \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"daily_page_views":10000,"click_through_rate":1.5,"cost_per_click":0.4}'const res = await fetch("https://api.kit.forhosting.com/fin/google-adsense", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"daily_page_views": 10000,
"click_through_rate": 1.5,
"cost_per_click": 0.4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/google-adsense",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"daily_page_views": 10000,
"click_through_rate": 1.5,
"cost_per_click": 0.4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/google-adsense", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"daily_page_views":10000,"click_through_rate":1.5,"cost_per_click":0.4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"daily_page_views":10000,"click_through_rate":1.5,"cost_per_click":0.4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/google-adsense", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"daily_page_views": 10000,
"click_through_rate": 1.5,
"cost_per_click": 0.4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.google_adsense",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs_value | 1000000000000000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Click-through rate must sit between zero and one hundred inclusive; values outside that interval fail with invalid_input because a percent cannot be negative or greater than one hundred. Use it free in the browser, or call the API at $0.002 per successful item for traffic models, pitch decks, and dashboards that must reprint the same estimate every time.
What Google AdSense earnings mean and what the response contains
This calculator returns the echoed inputs, the implied daily click count, daily revenue, monthly revenue, yearly revenue, and the formula string so a spreadsheet or API client can show the identity next to the number. Click-through rate outside the closed interval from zero to one hundred is rejected with invalid_input, because a percent cannot be negative and cannot exceed one hundred.
How page views, click-through rate, and cost per click are read
Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong earnings figure. Zero for any of the three inputs is valid and simply yields zero daily, monthly, and yearly revenue: a site with no traffic, no clicks, or a reported click price of zero earns nothing in this identity. Negative page views and negative cost per click are also rejected so the model stays an earnings estimator rather than a signed ledger of refunds. The preferred fields are daily_page_views for counted ad-eligible loads in one day, click_through_rate for the percent of those views that become clicks, and cost_per_click for the average advertiser payment per click in one currency unit, but aliases page_views, pageviews, views, pv, and daily_views for views, ctr, click_through, ctr_percent, and ctr_pct for the rate, and cpc, click_cost, and cpc_usd for the click price are accepted so spreadsheets, query strings, and typed forms can reuse the same contract. Click-through rate must lie in the closed interval from zero to one hundred; if the rate is negative or greater than one hundred, the request fails with invalid_input because a percent outside that range is not a click-through rate. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the AdSense identity yourself.
Where AdSense earnings thinking fits in publishing, planning, and software
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result. Pair it with other finance endpoints when you are building a small lab of free, deterministic advertising and publisher-economics helpers that stay honest about what they scale.
Integration use cases
Dashboard fixtures and interview drills
Seed tests and worksheets with a deterministic daily equals views times CTR over one hundred times CPC so graders and CI never disagree on a hand-computed earnings figure.
Technical questions
How do I estimate Google AdSense earnings from page views, CTR, and CPC?
Send finite numbers daily_page_views (non-negative), click_through_rate (0 to 100 inclusive), and cost_per_click (non-negative). The API returns daily_revenue = views × (CTR/100) × CPC, monthly_revenue = daily × 30, yearly_revenue = daily × 365, plus daily_clicks and the formula string.
What happens if the click-through rate is outside 0 to 100?
The task fails with invalid_input. Click-through rate is a percent, so values below zero or above one hundred are rejected and the request is not billed.
What does a Google AdSense calculator request cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.