What I Learned About Ads by Getting Them Wrong First
When I first launched PolishedDex, ads weren't even on my radar. The site was a side project — something I built because I wanted better docs for the ROM hacks I was playing. No revenue model, no plan. Just a thing I made.
Then it grew. A lot. Hundreds of thousands of monthly users showing up to look up stats, evolutions, item locations. And suddenly I was paying real money to keep it running. So I did what everyone does first — I added AdSense.
It was fine. For a while.
Where It Started Going Wrong
The problem wasn't that I had ads. It was that I'd handed all control to Google and stopped thinking about it:
- Auto ads injected everywhere. Between table rows, inside navigation, mid-sentence. On a site where people need to scan data quickly, this was actively hostile.
- CLS nightmares. Ads loading late would shove content around. On a database site where people are comparing stats side-by-side, layout shift destroys the experience.
- One-size-fits-all. No ability to treat a dense stat page differently from a long-form guide. Every page got the same ad firehose.
I wasn't thinking about ads as part of the experience. I was treating them like something I could set and forget. And the site suffered for it.
The Real Lesson: Ads Need Design Too
Switching providers wasn't really about money — it was about getting control back. I moved to a managed partner that lets me decide exactly where units go in the DOM. No auto-injection, no surprises.
But the provider switch was just the mechanism. The actual shift was in how I started thinking:
Ads are a design problem, not just a revenue toggle. They take up space, they affect layout, they compete with content for attention. Treating them as "someone else's problem" meant my users were dealing with a worse site.
Once I started approaching placement intentionally — asking "does this ad hurt the user's ability to find what they came for?" — everything improved. Not just metrics, but how the site felt.
What Intentional Placement Looks Like
People come to PolishedDex with a specific question: "What level does this evolve?" or "Where do I find this item?" Every pixel between them and that answer is friction. So the rule became simple: ads never interrupt the primary lookup flow.
Where they do go:
- Below the main data block — you found your answer, now there's an ad before related content
- Between sections on long pages — natural content breaks where you'd pause anyway
- Sidebar on wide viewports — alongside content, not above it
- After engagement is confirmed — never on initial page load above the fold
What I don't do: interstitials, sticky footers that cover content, auto-playing video, or anything that makes the site feel hostile.
None of this is rocket science. But it requires actually deciding — which is the thing AdSense's auto-placement lets you avoid.
What Changed
The biggest difference wasn't in revenue. It was in how the site felt to use:
- Core Web Vitals improved because I control when and where ads render
- Bounce rate didn't change — meaning the ads aren't driving people away
- I stopped getting messages from users about ads breaking the layout
- The site feels intentional instead of cluttered
Revenue did improve too — but that was a side effect of treating ads like a real part of the UX instead of garbage dumped on top of it.
The Takeaway
If you're running ads on a content site and you've just been letting auto-placement do its thing — take an hour and actually look at what your users see. Open your own site on mobile. Try to find a piece of information with fresh eyes.
The problem usually isn't "too many ads." It's "ads with no thought behind their placement." Once you start treating them as a design decision — same as font size or spacing or color — the whole experience gets better. For everyone.
This is a behind-the-scenes look at how I run the PolishedDex sites. If you're interested in the tech stack, check out my original post about building PolishedDex.