Monetizing a Low-Traffic SvelteKit Blog (Real Numbers, Real Stack)
Affiliate links, Adsterra fallback, and newsletter CTA — what actually earned money at 800 visits/month.
Tested on: SvelteKit blog, 800 visits/month, US/EU traffic Revenue month 1: $4.20 total. Month 6: $89. Not life-changing, but covers hosting.
What didn't work
- Google AdSense (rejected twice at <1k monthly sessions)
- Generic Amazon affiliate links (0 conversions in 4 months)
- Paywall / Patreon (0 subscribers)
What worked — stack ranked
- Affiliate links in tutorial content (hosting referrals)
- Adsterra (after AdSense rejection)
- Newsletter sponsor slot (manual, one deal at month 5)
Affiliate link component
src/lib/components/AffiliateLink.svelte:
<script lang="ts">
let { href, children } = $props();
</script>
<a
{href}
target="_blank"
rel="sponsored noopener noreferrer"
class="text-blue-600 underline"
>
{@render children()}
</a>
Use in MDsvelte or posts:
<AffiliateLink href="https://host.com/?ref=myid">
Try this host
</AffiliateLink>
rel="sponsored" — Google requires it. Don't skip.
Adsterra after AdSense rejection
Applied with 600 monthly visits. Approved in 3 days.
One banner in sidebar (see adsterra-sveltekit-layout-integration article). RPM ~$1.20.
Newsletter CTA — highest ROI per visitor
src/lib/components/NewsletterCTA.svelte:
<form method="POST" action="https://buttondown.email/api/emails/embed-subscribe/yourid">
<input type="email" name="email" placeholder="you@email.com" required />
<button type="submit">Subscribe</button>
</form>
Buttondown free tier. No SvelteKit API route needed — form posts externally.
Disclosure page (required)
src/routes/disclosure/+page.svelte — plain HTML listing affiliate relationships.
Link in footer. FTC compliance isn't optional.
Track what earns (privacy-friendly)
<a
href="https://host.com/?ref=myid"
onclick={() => {
if (typeof plausible !== 'undefined') plausible('Affiliate Click', { props: { vendor: 'host' } });
}}
>
Plausible custom events. Know which posts drive clicks.
Monthly breakdown (month 6)
Hosting affiliate: $62.00 (2 conversions)
Adsterra: $18.40
Newsletter sponsor: $50.00 (one slot)
Total: $130.40
Hosting cost: -$0 (Cloudflare Pages free)
Domain: -$12/year
Honest advice
At <1k visits, optimize for content and email list, not ad density. Three ad slots won't save you. One good affiliate post about a tool you actually use might.