Ad network · free software
Monetize a free app
with one command.
yeld serves contextual, clearly-labeled ads inside free software. One command — or one prompt to your coding agent — places the unit, and sample ads render immediately in preview. Launch when it looks right. You keep 70% of every click.
import { YeldAd } from "@yeld/react";
<YeldAd
appId="app_k3j9x2m1p4q8"
placement="sidebar"
context={{ page: "editor" }}
/>{
"fill": true,
"impressionId": "imp_ivf3k118724gfgph",
"ad": {
"advertiser": "Watchtower",
"headline": "Know when your app goes down",
"cta": "Start monitoring",
"clickUrl": "https://yeld.dev/api/v1/click/imp_…"
}
}Install
One command. Preview instantly. Launch when it looks right.
init detects your stack — Next.js, Vite, Svelte, Vue, Astro, plain HTML — provisions an app ID with no account, and inserts one unit on your primary screen. It starts in preview: sample or unbilled ads render immediately, so you can react to the placement before anything is real.
1 · Place
From your project root. Shows the diff before writing, and prints your claim code — save it.
yeld — app app_k3j9x2m1p4q8
Installed @yeld/react
Placed app/page.tsx:31
The app is in PREVIEW: nothing
bills or earns until you launch.2 · Look
Run your app — the unit is already serving. Move it, restyle it, then prove the placement rules pass.
PASS / in-content @ 1512×781
PASS / in-content @ 390×844
Verified: 1 unit placed correctly.3 · Launch
The deliberate switch: real ads, real budgets, and 70% of every click credited to you.
WordCount is live.
Real ads serve from the next request.
Want a unit on more screens?
npx @yeld/cli addPrefer to hand it off? Paste one prompt into Claude Code or Cursor — agents read /llms.txt and run the same three steps, asking you before launch. Integrating by hand instead: npm i @yeld/react, or a two-line script embed for non-React stacks — see the docs.
Mechanics
What happens on every request.
- 1 · request
- Each unit POSTs your public app ID, its placement key, and any context you chose to pass, once on page load. Nothing else leaves the browser.
- 2 · match
- yeld filters campaigns by your app's category, status, schedule, and remaining budget, then selects one weighted by CPC bid.
- 3 · impression
- An impression row is written server-side and the creative comes back as JSON — headline, body, CTA, advertiser,
clickUrl. - 4 · click
- The click endpoint records attribution and 302s to the stored destination. One click per impression, enforced by a unique constraint.
- 5 · ledger
- The advertiser is charged their bid; 70% is credited to you and 30% to yeld, in the same transaction as the click.
The unit
yeld controls rendering.
Advertisers submit text and a logo — never markup, never scripts. That means no third-party JavaScript in your bundle, no layout surprises, and a unit that takes your app's fonts, colors, and radii instead of imposing its own.
- Always labeled Sponsored, always attributed to yeld
- Matches your design tokens — type, color, radius, and padding are public CSS variables
- One request per unit, one unit per screen — no layout shift
- Renders nothing when there is no matching inventory
- No popups, interstitials, autoplay, or fake system UI
Live — served by this network
A real ad request against the production endpoint. If no campaign matches, this space stays empty — which is the correct behavior. Creative shown during this preview is sample copy written by yeld, not a live campaign.
Economics
CPC, stated plainly.
Advertiser pays
their CPC bid
Set per campaign. Charged on valid clicks only — never on impressions.
You keep
70%
Credited to your ledger the moment the click is recorded.
yeld keeps
30%
That is the whole fee. No minimums, no monthly cost, no exclusivity.
Duplicate clicks on one impression cannot be billed twice. Campaigns stop serving when their budget is spent. See the publisher details.
Privacy
Contextual only.
Targeting comes from your app's category and the context you explicitly pass. There is no behavioral profile to build, so there is nothing for your users to opt out of.
- No fingerprinting
- No third-party cookies
- No cross-site profiles
- No reading of user content or page contents
- Anonymous session ID, used only for duplicate detection
Advertisers
Reach developers inside the tools they already opened.
Category-targeted CPC campaigns across free utilities, generators, and side projects. Set a bid and a budget, ship four lines of copy, pause whenever.
Keep it free. Make it pay.
No account, no negotiation, nothing installed on your users. Preview ads render the moment the unit lands — launch is yours to call.