A small, complete static website (plain HTML/CSS, no build step) about home coffee brewing, set up so it's straightforward to get Google AdSense running on it. Swap the content for your own topic if you like — the structure is what matters for approval.
site/
├── index.html home page
├── about.html required for AdSense review
├── contact.html required for AdSense review
├── privacy.html required — mentions cookies/ads explicitly
├── ads.txt required once you have a publisher ID
├── articles/
│ ├── brew-ratio.html
│ ├── grind-size.html
│ └── roast-levels.html
└── assets/
└── style.css
AdSense needs a live, public URL — it won't review a file on your computer. Easiest free/cheap options:
- GitHub Pages (free): push this folder to a repo, enable Pages in repo settings.
- Netlify / Vercel (free tier): drag-and-drop deploy, or connect a git repo.
- Any regular web host / your own domain via cPanel, etc.
- Go to https://www.google.com/adsense/ and sign up with the same site URL.
- Google gives you a publisher ID that looks like
ca-pub-1234567890123456.
Find and replace every occurrence of ca-pub-XXXXXXXXXXXXXXXX in the
<head> of each HTML file with your real publisher ID. On Mac/Linux you can
do this in one shot from inside the site/ folder:
grep -rl "ca-pub-XXXXXXXXXXXXXXXX" . | xargs sed -i '' 's/ca-pub-XXXXXXXXXXXXXXXX/ca-pub-YOURREALID/g'
# (drop the '' after -i if you're on Linux, not macOS)Replace pub-0000000000000000 in ads.txt with your real ID, and confirm
it's reachable at https://yourdomain.com/ads.txt (root of the domain, not
a subfolder). AdSense checks this file specifically.
contact.html— replacehello@example.comwith a real inbox.privacy.html— replace[Your Site Name],[yourdomain.com], and the date.about.html— adjust to describe you/your actual site if you change the topic.
The site already loads the AdSense script and has clearly marked ad
placeholders (<div class="ad-slot">) in index.html and each article. Once
your site is approved:
- In AdSense, go to Ads > By ad unit and create a Display ad.
- Copy the
<ins class="adsbygoogle">...</ins>snippet it gives you. - Paste it inside the commented-out placeholder in each
.ad-slotdiv, replacing the placeholder comment.
Or skip manual placement entirely and turn on Auto ads in your AdSense
dashboard — the site-wide script tag already in every page's <head> is
all Auto ads needs.
Google's AdSense reviewers (and their automated checks) are mainly looking for:
- Original, substantial content — not thin or copied pages (the three articles here are real, specific write-ups, not filler).
- Clear site identity — an About page saying who runs the site.
- A way to contact the owner — the Contact page.
- A privacy policy that discloses cookie/ad usage — included and written specifically to mention Google's advertising cookies.
- Easy navigation and a working, mobile-friendly layout.
ads.txtpresent at your domain root once you have a publisher ID.
None of this guarantees approval — Google's review also checks for enough total content, a clean design, and genuine traffic/history in some cases — but it removes the most common rejection reasons (missing privacy policy, no contact info, thin content).
- Colors/fonts/spacing all live in
assets/style.cssas CSS variables at the top of the file. - Add new articles by copying one of the files in
articles/and linking it fromindex.html.