DEV Community

Anand Rathnas
Anand Rathnas

Posted on • Originally published at jo4.io

Why We Removed Ads from Our Free Tools (And Put Them Only on Blog Posts)

This article was originally published on Jo4 Blog.

We built a suite of free developer tools: JSON formatter, JWT decoder, QR generator, UTM builder, and about a dozen others.

Then we added AdSense to every page.

Then we removed it from most of them.

Here's why.

The Original Plan

The logic seemed sound:

  1. Free tools bring traffic (SEO)
  2. Traffic sees ads
  3. Ads generate revenue
  4. Revenue funds development

We added a simple <AdSlot /> component to our UtilityPageLayout:

// Before: Ad on every utility page
export function UtilityPageLayout({ children }) {
  return (
    <main>
      <AdSlot position="top" />
      {children}
      <AdSlot position="bottom" />
    </main>
  );
}
Enter fullscreen mode Exit fullscreen mode

Every tool page now had ads at the top and bottom.

What Actually Happened

Week 1: Impressions up, RPM decent.

Week 2: Noticed something odd in analytics.

Users on utility pages had:

  • Higher bounce rate (+15%)
  • Lower time on site (-20%)
  • Fewer conversions to signup (-25%)

The ads were working as ads. They were also working as exit doors.

The Problem with Ads on Utility Pages

Utility pages have a specific user intent: Do one thing, leave.

Someone using a JSON formatter:

  1. Pastes JSON
  2. Gets formatted output
  3. Copies it
  4. Leaves

Total time on page: 30 seconds.

An ad in this flow is a distraction. Worse, it's a competing call-to-action. The user came to format JSON. The ad says "Hey, check out this other thing."

If they click the ad, they leave. If they don't click the ad, it just... sits there, making the page feel cluttered.

Blog Posts Are Different

Blog posts have a different user intent: Learn something.

Someone reading a blog post:

  1. Searches for a problem
  2. Reads the solution
  3. Maybe reads related sections
  4. Considers the author's credibility
  5. Might explore more content

Total time on page: 3-5 minutes.

An ad in this flow is... fine. The user is already in "reading mode." They're not trying to complete a task. A well-placed ad between sections doesn't interrupt a workflow because there's no workflow to interrupt.

The Fix

We removed ads from utility pages entirely:

// After: No ads in UtilityPageLayout
export function UtilityPageLayout({ children }) {
  return (
    <main>
      {children}
    </main>
  );
}
Enter fullscreen mode Exit fullscreen mode

And kept them only on blog posts:

<!-- posts template -->
<article class="blog-post">
  <header>...</header>

  <div class="ad-container ad-top">
    <!-- Ad after title, before content -->
  </div>

  <div class="post-content">
    {{ content }}
  </div>

  <div class="ad-container ad-bottom">
    <!-- Ad after content, before footer -->
  </div>

  <footer>...</footer>
</article>
Enter fullscreen mode Exit fullscreen mode

The Results

After removing ads from utility pages:

  • Bounce rate: Back to baseline
  • Time on site: +10% (people explored more)
  • Signups from utility pages: +30%

Ad revenue from blog posts alone: About the same (blog traffic is smaller but more engaged)

Net effect: More signups, same ad revenue.

The Principle

Match monetization to intent.

Page Type User Intent Monetization
Utility tools Complete task quickly None (or subtle "Made by X")
Blog posts Learn, explore Ads okay
Landing pages Evaluate product None (focus on conversion)
Documentation Find answer None (builds trust)

Ads work when they don't compete with the page's purpose. On a blog post, the purpose is consumption. On a utility page, the purpose is production.

What We Do Instead on Utility Pages

Instead of ads, utility pages now have:

  1. Subtle branding: "Built by jo4.io" in the footer
  2. Relevant CTAs: "Need to track these links? Try jo4.io" on the UTM builder
  3. Cross-links: "You might also like: QR Generator, Link Shortener"

These don't generate direct ad revenue, but they:

  • Keep users in our ecosystem
  • Build brand recognition
  • Convert better than ads ever did

The Takeaway

Free tools are marketing, not monetization.

The ROI of a free JSON formatter isn't the $0.03 per ad click. It's the developer who bookmarks it, uses it weekly, and eventually needs a URL shortener for their project.

Ads on utility pages optimize for the wrong metric.


Do you run ads on your free tools? Curious how others handle this tradeoff.

Building jo4.io - free developer tools that won't interrupt your workflow.

Top comments (0)