How it works SDK Automation Features Security Compare Pricing FAQ Log in Start free Dashboard
Trusted by indie devs & studios worldwide

License, protect
& analyze every app
you ship.

One SDK for desktop, web & mobile. Runtime tamper detection, encrypted local cache, trial analytics, and zero-code license automation — all in one platform.

4SDK LANGUAGES
3PLATFORM TARGETS
99.9%VALIDATION UPTIME
AES-256ENCRYPTED CACHE
Ships inside apps built with
ReactVueAngularNext.js .NETPythonPHPSwiftKotlinFlutter
Process

Three steps, every platform.

Same sequence whether you ship a desktop tool, a web app, or a mobile game. No separate systems to learn.

01

Grab your keys

Sign up, open Settings to copy your Vendor API Key. Create a product, open the Integration Guide to copy your Product Key.

02

Embed the SDK

Paste both keys into your code. One validateLicense() call — same on every stack.

03

Protect & analyze

Tamper detection runs in the background. Trial analytics track conversions. You get a dashboard.

Browse Integration Guides
Integration

One call. Every stack.

Pick your language. The shape of the check doesn't change.

// .NET — Desktop, web, mobile, Unity
using UnifiedLicensing.v4;

var manager = new UnifiedLicenseManager(config);
var result = await manager.ValidateLicenseAsync(
    "LICENSE-KEY-HERE",
    ValidationMode.Online
);

if (result.IsValid) {
    EnablePremiumFeatures(result.License);
}

// IntegrityGuard runs 5 background timers
// — debugger detection, process blacklisting,
// — fingerprint check, DLL integrity, hash validation
var guard = new IntegrityGuard(integrityKey);
guard.StartProtection();
// JavaScript — Browser, Node.js, Electron
import { UnifiedLicenseManager } from 'unified-licensing';

const manager = new UnifiedLicenseManager({
    vendorApiKey: 'ul_xxx',
    productKey: 'my-app-xxxx'
});

const result = await manager.validateLicense('LICENSE-KEY');

if (result.isValid) {
    enablePremiumUI(result.license);
}

// Trial analytics — track what converts
await manager.trackTrialStart(trialToken, { platform: 'web' });
await manager.trackFeatureUsage(trialToken, 'export');
await manager.trackTrialConversion(trialToken, 'paid-license-key');
# Python — Desktop, CLI, automation
from unified_licensing import UnifiedLicenseManager

manager = UnifiedLicenseManager(
    vendor_api_key="ul_xxx",
    product_key="my-app-xxxx"
)

result = await manager.validate_license("LICENSE-KEY")

if result.is_valid:
    enable_premium_features(result.license)

# TamperDetector — runs automatically
# Clock drift, debugger, env anomaly checks
# Max 3 violations → blocks all validation
// PHP — WordPress, Laravel, WooCommerce
use UnifiedLicensing\UnifiedLicenseManager;

$manager = new UnifiedLicenseManager([
    'vendor_api_key' => 'ul_xxx',
    'product_key'    => 'my-app-xxxx'
]);

$result = $manager->validateLicense('LICENSE-KEY');

if ($result->is_valid) {
    $this->enablePremiumFeatures($result->license);
}

// AES-256-GCM encrypted local cache
// Grace period fallback on 429 errors
// Platform-aware cache duration
Coverage

One SDK. Three surfaces.

Wherever your app runs, the same license record validates the same way — so you write the check once and trust it everywhere.

01 / DESKTOP

Offline-first validation

Licenses verify locally with a cached RSA-2048 signature. A build running on a laptop on a plane still checks out.

  • .NET (WPF, WinForms, Console, Unity)
  • Python (Tkinter, PyQt, CLI)
  • Electron & Tauri apps
  • IntegrityGuard background protection
02 / WEB & HTML5

Real-time feature gating

Check entitlements on load and re-check on demand. Built for HTML5 games, SaaS dashboards, and subscription-gated UI.

  • React, Vue, Angular, Next.js
  • Node.js & Express
  • Chrome extensions
  • Trial analytics per session
03 / MOBILE

Cloud-synced across devices

A user's activation follows them from phone to tablet, so reinstalling never means re-buying.

  • iOS (Swift, Objective-C)
  • Android (Java, Kotlin)
  • React Native & Flutter
  • Grace periods tuned for mobile
License Automation

Zero-code license delivery.

Connect your payment platform. Paste one webhook URL. Licenses generate and deliver automatically — branded emails included.

STEP 1

Customer pays

Stripe, PayPal, Gumroad, WooCommerce, Shopify, or any custom system.

STEP 2

Webhook fires

Universal endpoint receives the payment event. Zero configuration.

STEP 3

License generated

Product mapped automatically. Key created, signed, and stored.

STEP 4

Delivered to customer

Branded email with license key. Customer activates instantly.

Works with
Stripe PayPal WooCommerce Shopify Gumroad LemonSqueezy Any custom system

Product Mapping

Map payment products → your license products. One-time, subscription, or tiered — each maps to the right key type automatically.

Branded Emails

License keys delivered via your branded email templates. Custom sender, subject line, and HTML body. No generic "noreply" addresses.

Activity Logging

Every webhook delivery, license generation, and email send is logged. Full audit trail in your dashboard. No black boxes.

Your webhook URL ZERO CODE
https://api.unifiedlicensing.com/api/v1/webhook/ul_Qw0yOwTed5nmzPFEOrJDlmUEyKsWNC05

Paste this into your Stripe dashboard, WooCommerce settings, or any payment platform's webhook config. That's it.

What makes us different

Protects from the inside out.

Every competitor validates at the network layer. We validate at the runtime layer — inside your app, where it matters.

Unique

Runtime Tamper Detection

SDKs actively fight reverse engineering. .NET gets 5 concurrent background timers (IntegrityGuard). Python & JavaScript get clock-drift, debugger, and environment-anomaly checks. Max 3 violations → all validation blocked.

IntegrityGuard TamperDetector
Premium

Trial Analytics Pipeline

Track feature usage during trials. See which features drive conversion. Server-side tracking by device fingerprint — can't be fooled by clearing storage.

trackTrialStart() trackFeatureUsage() trackTrialConversion()
Premium

API Testing Studio

Send test API calls and decrypt AES-256-GCM encrypted responses client-side. Verify your integration works before writing a single line of production code.

AES-GCM Decryption
Premium

Zero-Code License Automation

Universal webhook works with Stripe, PayPal, WooCommerce, Shopify, Gumroad, and any custom system. Paste the URL, map your products, done. Branded delivery emails included.

Universal Webhook
SDK

AES-256 Encrypted Local Cache

Local license cache encrypted with AES-256-GCM. Machine-bound encryption keys. HMAC-signed files. Even if someone extracts the file, they can't read or modify it.

AES-256-GCM HMAC
Under the hood

Built for the part people don't see.

The dashboard is simple on purpose. What it's backed by isn't.

RSA-2048 Signatures

Every license is cryptographically signed. Desktop SDKs validate locally against the cached public key — no network call needed.

Heartbeat + Smart Cache

Periodic heartbeats check license validity without full re-validation. SDKs cache the next allowed heartbeat time to skip unnecessary calls.

Unified Analytics

Activations, renewals, trial conversions, and platform breakdown — all in one dashboard instead of three.

Factory Functions

One-line setup for web, desktop, or mobile managers. Same API shape across all platforms — createWebServerManager(), createDesktopManager(), createMobileManager().

Sharing Detection

Flags activation patterns that look like one key spread across unrelated machines. Hardware fingerprinting ties licenses to devices.

99.9% Uptime

CDN-backed validation network. A check from anywhere resolves in under 200ms. Grace periods keep apps alive during outages.

Security

Why crackers fail.

Three attack vectors they'll try. Three reasons they give up.

"I leaked the private key"

They extract your API key from the client. Now what?

  • Fake licenses rejected — server is source of truth
  • Unknown license keys = instant denial
  • You revoke the key, they lose everything
Every validation hits the server. No key = no access.

"I'll patch the binary"

They attach a debugger. They try to NOP out the validation check.

  • Debugger attached? Validation blocked immediately
  • Known RE tools running? Blacklisted on detection
  • DLL/file modified? Integrity check fails
.NET: IntegrityGuard · Python/JS: TamperDetector

"I'll go offline"

They block network calls. They clear browser storage. They think they're safe.

  • Periodic sync catches revoked licenses
  • Hardware fingerprint survives storage wipe
  • Grace period expires — app stops working
Cache is encrypted (AES-256-GCM). Machine-bound keys.
What developers say

Trusted by devs who ship.

★★★★★
"We switched from Keygen in a weekend. The tamper detection alone saved us from three reverse-engineering attempts in the first month."
Marcus R. · Indie game studio, Germany
★★★★★
"The grace period feature is genius. Our desktop app never shows 'validation failed' to users anymore — even when our API is under heavy load."
Priya K. · SaaS founder, India
★★★★★
"Trial analytics showed us 68% of users who try the export feature convert to paid. We had no idea. Changed our entire onboarding flow."
Alex T. · Product lead, UK
47% Avg. conversion lift
<200ms Validation latency
0 False tamper positives
4 SDK languages
Comparison

How we stack up.

Feature comparison against the most common alternatives. We're not the cheapest. We're the most complete.

Feature UnifiedLicensing Keygen Cryptlex LicenseSpring
Runtime Tamper Detection 3-tier (all SDKs)
Trial Feature Analytics Start → Track → Convert Trial only Trial only Trial only
AES-256 Encrypted Cache All SDKs
License Automation Universal webhook Webhooks Webhooks
API Testing Studio Built-in
Offline Validation Signed cache Relay License files On-prem server
SDK Languages 4 (C#, JS, Python, PHP) 4 10+ 5
Free Tier 50 licenses 100 licenses 50 licenses Free tier
Starting Price $9/mo $49/mo $99/mo Custom
Common concerns

Questions before you start.

"I already use Keygen / Cryptlex. Why switch?"

You don't have to migrate everything at once. Start a new product on UnifiedLicensing alongside your existing provider. Run both in parallel — test the SDK, tamper detection, and automation on one product before committing. When you're ready, new customers go through UnifiedLicensing and you sunset the old system on your timeline.

"What if the API goes down?"

Desktop SDKs cache a signed license record locally. Validation works offline. If the API is unreachable, the SDK falls back to cached data with a configurable grace period — your app never breaks.

"Is the free tier actually useful?"

10 licenses/month with full SDK access. Enough to validate the integration, test tamper detection, and ship a prototype. No credit card required. Upgrade when you have paying users.

"We're a solo dev. Is this overkill?"

Exactly the opposite. Solo devs don't have time to build licensing from scratch. One validateLicense() call replaces weeks of custom work. The free tier is designed for you.

Pricing

One price, every platform.

No separate charge for adding web or mobile. Pick a tier by license volume, not by surface.

Free

$0/mo

For validating the SDK on a single app.

  • ✓ 50 licenses
  • ✓ 2 products
  • ✓ All SDK languages
  • ✓ API testing studio
  • ✓ Community support
Start free

Starter

$9/mo

For a shipping app with real users.

  • ✓ Up to 500 licenses
  • ✓ 5 products
  • ✓ License automation (webhooks)
  • ✓ API testing studio
  • ✓ Email support
Get started

Standard

$19/mo

For growing products with trials.

  • ✓ Up to 5,000 licenses
  • ✓ 15 products
  • ✓ Trials & telemetry
  • ✓ License automation
  • ✓ API testing studio
  • ✓ Priority support
Get started

Enterprise

Custom

For large fleets and compliance needs.

  • ✓ Unlimited licenses
  • ✓ Unlimited products
  • ✓ White-label solution
  • ✓ SLA guarantee
  • ✓ Dedicated support
Contact Sales
FAQ

Frequently asked questions.

I already use Keygen / Cryptlex. Why switch?+

You don't have to migrate everything at once. Start a new product on UnifiedLicensing alongside your existing provider. Run both in parallel — test the SDK, tamper detection, and automation on one product before committing. When you're ready, new customers go through UnifiedLicensing and you sunset the old system on your timeline.

What platforms and frameworks are supported?+

Desktop (offline-first): .NET (WPF, WinForms, Console, Unity), Python (Tkinter, PyQt, CLI), Electron, Tauri.
Web & HTML5: React, Vue, Angular, Next.js, Nuxt.js, Node.js, Express, Chrome extensions, HTML5 games.
Mobile: iOS (Swift, Objective-C), Android (Java, Kotlin), React Native, Flutter, Xamarin.
Server & PHP: Laravel, WordPress, WooCommerce, any PHP environment.
4 SDK languages: C#, JavaScript, Python, PHP.

How does license automation work? Do I have to generate keys manually?+

No manual key generation. Paste your webhook URL into Stripe, PayPal, WooCommerce, Shopify, Gumroad, or any payment platform. When a customer pays, the webhook fires automatically — a license key is generated, signed, and delivered to the customer via branded email. Zero code required. You can also map specific payment products to specific license tiers, so a "Pro" purchase gets a "Pro" key with the right features unlocked. Every delivery is logged in your dashboard.

What happens if the API goes down?+

Desktop SDKs cache a signed license record locally. Validation works offline. If the API is unreachable, the SDK falls back to cached data with a platform-aware grace period — your app never shows "validation failed" to users.

Does offline validation actually work without a network call?+

Yes. The SDK caches the RSA-2048 signed record locally and validates it against the public key without contacting the server. This works on desktop, mobile, and even in air-gapped environments.

How does tamper detection work without slowing down my app?+

Tamper detection runs quietly in the background — it never blocks your app's main thread. On .NET, the IntegrityGuard performs continuous background checks: debugger detection, process blacklisting, fingerprint integrity, and hash validation. On Python and JavaScript, the TamperDetector monitors for clock manipulation, debug environments, and suspicious process changes. All checks are lightweight and non-blocking — your users won't notice a thing.

What if I go over my monthly license count?+

Existing activations keep validating. New issuance pauses until you upgrade or the next billing cycle starts. Nothing breaks for your current users.

Can I cancel or downgrade at any time?+

Yes, from Account Settings. Downgrading takes effect at the start of the next billing cycle so you keep current-tier limits until then.

What happens to my customers' licenses if I stop using UnifiedLicensing?+

Desktop & mobile: Keep working. The SDK caches a signed license record locally and validates offline. No network call needed — your customers won't notice anything.
Web apps: depend on how you integrated. If you call the API on every page load, validation will fail once the account is deactivated. If you cached the validation result client-side (localStorage/sessionStorage), it continues working until the cache expires. The key insight: license keys are just strings. You can store them in your own database and build a simple validation endpoint if needed.

Can I export my license data?+

Yes. Click "Export" in the Licenses tab to download all license keys, customer assignments, and activation history as CSV (for Excel/Google Sheets) or JSON (for scripts and migrations). Keys are plain strings — no proprietary format.

Do you own my license data or do I?+

You do. License keys, customer data, and analytics are yours. You can access everything via the API. If you delete your account, all data is permanently removed per our data retention policy.

What if I want to switch to another provider later?+

Export your license keys from the Licenses tab (CSV or JSON). Keys are standard strings — any system that can validate them can replace us. The more involved part is swapping the SDK calls in your codebase, but since we use a similar pattern to most providers, the migration is usually straightforward.

Do you support floating licenses?+

Not yet. Current licensing is per-device with hardware fingerprinting. Floating/concurrent license support is on the roadmap for Q3 2026.

Is there a self-hosted option?+

Contact our support team to discuss self-hosted deployment options for Enterprise customers.

How long does integration take?+

Most developers validate their first license in under 15 minutes. The full integration — generate key, embed SDK, validate at runtime — typically takes under an hour. We provide platform-specific guides for every supported stack.

Is my customers' data safe? Are you GDPR compliant?+

Yes. All data is encrypted at rest (AES-256) and in transit (TLS 1.3). We don't store payment information — only license keys and optional customer emails. We're GDPR compliant and support data deletion requests. Your customers' hardware fingerprints are hashed, not stored raw.

What happens if you go out of business?+

Your license keys are standard strings — they don't depend on our servers to exist. Desktop and mobile SDKs validate offline using cached signatures. We also provide a 90-day data export window if we ever shut down, so you can migrate to another provider.

Can I white-label the license keys or emails?+

License keys use the UL- prefix by default. Custom key formats and branded delivery emails (custom sender, subject, HTML template) are available on the Professional plan and above.

Won't crackers see my vendor API key in the client code?+

Your vendor API key never goes in client-side code. Only the product key (a public identifier like bm-crafts-my-nice-app-xxxxx) is embedded in the client — it's safe to expose because it only identifies which product is being validated, not your account. The vendor API key stays on your server for generating and managing licenses. For desktop and mobile apps, the binary is harder to reverse-engineer, and the SDK's tamper detection actively fights extraction. For web apps, keep the vendor key in your backend and call the API from there.

Do you offer refunds?+

Yes. If you're not satisfied within the first 14 days of a paid plan, contact support for a full refund. No questions asked.

Developer FAQ → · Security FAQ →

Stop building licensing from scratch.

Issue your first key in under 5 minutes. No credit card required.