License Key Management for Indie Developers — The Complete Guide
Everything indie developers need to know about protecting their software. Build vs buy, real cost comparison, and practical examples.
You built a paid piece of software — a desktop app, plugin, CLI tool. You've priced it at $29. Now what happens if someone buys it, extracts the binary, and shares it in a Discord server?
Most indie developers skip license protection. They tell themselves "piracy is free marketing" or "building DRM takes too long." Both can be true — but they're often excuses. A real license key system doesn't take that long to set up anymore.
Why Most Indie Developers Skip License Protection
The honest reason is time. Building a licensing system from scratch means:
- Database to store keys and customers
- Key generation with collision resistance
- A validation endpoint that's actually fast
- Expiry logic and IP tracking
- A customer-facing portal for license lookup
- Webhook events for your billing system
That's 2–4 weeks of backend work that isn't your product. So people skip it — and use a license management API instead.
The 4 Things a Good License System Needs
- Key generation — Unique, unguessable keys in a consistent format
- Validation API — A fast endpoint your app queries on startup
- Customer management — Tracking which keys belong to which customers
- Enforcement — IP limits and expiry
Build It Yourself vs Using a Service
| Factor | Build Yourself | KeyPort |
|---|---|---|
| Setup time | 2–4 weeks | < 1 hour |
| Monthly cost | Hosting ($10–40) | Free – $7.99 |
| Maintenance | You own it forever | Zero |
| Customer portal | Build it yourself | Included |
| IP system | Build it yourself | Included |
| Webhooks | Build it yourself | Pro feature |
How KeyPort Works for Indie Projects
The free tier gives you everything you need to launch:
- 200 licenses per organization
- 10 products
- IP-based access control
- Customer portal (customers view their own licenses)
- 10,000 API calls per day
The Checkout Flow in Practice
- Customer pays via Gumroad or Stripe
- On payment success, call KeyPort API to create a license
- Email the key to the customer
- On app startup, validate the key against KeyPort
- If valid → show full UI. If not → show renewal/upgrade prompt
FAQs for Indie Developers
What if my app is offline? Cache the last validation and allow a grace period offline (e.g. 7 days).
Can users share keys? Set max_ips: 2 to allow two machines per key. A fourth IP gets blocked automatically.
Is it worth it for a $10 product? At 100 sales/month, stopping even 10% casual piracy = $100/month recovered.