Branded URLs, custom domains, click analytics — plus Universal Links, App Links, and deferred deep linking baked in. The link shortener built for teams shipping iOS and Android.
App installedOpens in-app at /products/black-friday
App not installedApp Store → install → deferred match delivers /products/black-friday on first open
Desktop browserGoes to https://acme.com/products/black-friday
Routing preview only — links are created via the dashboard or the API.
The link shortener your app deserves.
Branded URLs, custom domains, click analytics — the table-stakes. Plus the mobile-app routing the other link shorteners don't ship.
Branded short links
Your domain. Your aliases. Your data.
Short URLs on a branded subdomain or your own custom domain. Edit destinations anytime, schedule expirations, customize the social preview — without the link rotting.
Random short codes or custom aliases (links.acme.com/black-friday)
Custom domains via Cloudflare — point DNS, we provision SSL + the worker route
Branded subdomains free out of the box (yourapp.clppr.xyz)
Link expiration, post-creation edits, OG / Twitter preview overrides
Universal Links and App Links served from the edge per domain. Deferred matching so the destination survives the install. The mobile parts Bitly, Short.io, and Dub don't ship.
Universal Links (iOS) — AASA served at the edge per domain
App Links (Android) — assetlinks.json served at the edge per domain
Deferred deep linking — click before install, land on the right screen after
Custom URL schemes (yourapp://) as fallback for older OS versions
Most accounts have all three sharing the same Slack channel.
Mobile product teams
Drop the SDK in your iOS, Android, or Flutter app. Universal Links, App Links, install referrer, and clipboard match are wired up once and work everywhere. Your links land users on the right screen.
One Clippr.initialize() call
AASA + assetlinks.json served at the edge per domain
Deferred deep linking — destination survives the install
Marketing teams
Branded short URLs on your own domain. Click analytics on every hit. Schedule expirations for limited-time promos. Edit a destination without breaking the link you've already shared.
Custom domains with one-click setup
Country, device, OS, and referrer per click
Destination edits + scheduled expiration without rotating the URL
Agencies and consultancies
Spin up branded subdomains for each client. Manage portfolios across multiple apps and domains from one dashboard. Move data into your reporting stack via API.
Per-client custom domains, fully automated
Multi-app dashboards with team roles
REST API for pulling click data into client reports
Get a branded subdomain like acme.clppr.xyz immediately, or point your own — Cloudflare handles the SSL.
→
2
Create your first link
Dashboard, REST API, or in-app via the SDK. Pick an alias, set the destination, customize the OG preview if you want.
→
3
Share it. Track the clicks.
Every click logged with country, device, OS, referrer. App installed? It opens in-app. Not installed? Store install + deferred matching.
Create links from inside your app
Native SDKs in Swift, Kotlin, and Dart. No JavaScript bridge, no React Native wrapper. Spin up a branded short URL with a deep-link path, get back the URL, share it. Receive the destination on the other end when the link is opened.
createLink() for in-app share sheets and invite flows
getInitialLink() + onLink for incoming Universal / App Links
Deferred linking — install referrer (Android), clipboard match (iOS)
import ClipprSDK
Clippr.initialize(apiKey: "clippr_live_xxx")
// Create a branded short link from inside the applet params = LinkParameters(
deepLinkPath: "/product/123",
title: "Black Friday — 40% off",
campaign: "bf-2024"
)
let link = try await Clippr.createLink(params)
print(link.url) // https://acme.clppr.xyz/x7k2qe// Receive incoming Universal Links on the other endif let incoming = await Clippr.getInitialLink() {
route(to: incoming.path)
}
Clippr.onLink = { route(to: $0.path) }
MainActivity.kt
import xyz.useclippr.sdk.Clippr
Clippr.initialize(context, apiKey = "clippr_live_xxx")
// Create a branded short link from inside the appval params = LinkParameters(
deepLinkPath = "/product/123",
title = "Black Friday — 40% off",
campaign = "bf-2024"
)
val link = Clippr.createLink(params)
println(link.url) // https://acme.clppr.xyz/x7k2qe// Receive incoming App Links on the other end
Clippr.getInitialLink()?.let { route(it.path) }
Clippr.onLink = { route(it.path) }
main.dart
import'package:clippr/clippr.dart';
await Clippr.initialize(apiKey: 'clippr_live_xxx');
// Create a branded short link from inside the appfinal params = LinkParameters(
deepLinkPath: '/product/123',
title: 'Black Friday — 40% off',
campaign: 'bf-2024',
);
final link = await Clippr.createLink(params);
print(link.url); // https://acme.clppr.xyz/x7k2qe// Receive incoming Universal / App Links on the other endfinal incoming = await Clippr.getInitialLink();
if (incoming != null) route(incoming.path);
Clippr.onLink = (link) => route(link.path);
Built the way you'd build it.
Edge-served redirects, native SDKs, a documented REST API, and webhooks for the moments you care about.
Edge
Cloudflare workers at every PoP
Link redirects served from the closest edge location to the user, not a single region. Resolution and click logging happen in the same request.
SDKs
Native, not wrapped
Swift on iOS, Kotlin on Android, Dart on Flutter. No JavaScript runtime, no React Native bridge. Each SDK uses the platform primitives the platform expects.
API
REST API, not a black box
Everything the dashboard does is in the public API. Create links, query analytics, manage domains. Token-scoped per app.
Custom domains
Bring your own, one-click setup
Point DNS at Clippr — we provision the SSL cert and register the worker route automatically. Per-customer subdomains and apex domains both supported.
Editable links
Edit a destination after you've shared it
Change a link's destination, expiration, deep-link path, or social preview at any time. The short URL stays the same. The link doesn't rot when the campaign moves.
OSS
SDKs you can read
All three SDKs are open source on GitHub. Read the source, file issues, send patches. We respond.
Frequently asked questions
The questions we get most on demo calls.
How is Clippr different from Bitly, Short.io, or Dub?
Same primitives — short URLs, custom domains, click analytics. Plus the mobile parts none of them ship: native iOS/Android/Flutter SDKs, Universal Links, App Links, deferred deep linking. Your links open your app, not a browser bouncing off the App Store.
Do I need a mobile app to use Clippr?
No. The link shortener works on its own — branded URLs, analytics, custom domains, OG preview overrides. The mobile SDKs are there when you're ready, but not required.
Can I use my own domain?
Yes. Point DNS to Clippr and we provision the Cloudflare SSL cert and the edge worker route automatically. Per-customer subdomains and apex domains both supported.
Do you charge per click?
No. Plans are tiered on number of links, custom domains, and data retention. Clicks are unlimited on every paid plan.
Can I edit a link's destination after I've shared it?
Yes. Change the destination, expiration, deep-link path, or OG metadata at any time. The short URL stays the same — the link doesn't rot.
How does deep linking actually work?
Register your iOS bundle ID and Android package name in the dashboard. We start serving AASA (iOS) and assetlinks.json (Android) at the edge for your domain. Click a Clippr link with the app installed — opens in-app. App not installed — Store install + deferred matching delivers the destination on first open.
What happens to my links if I leave Clippr?
Export everything via the REST API. Custom domains stay yours — point the DNS elsewhere, no lock-in. Links on the shared clppr.xyz subdomain will stop resolving 30 days after account closure.
Pricing
Free while you build. Fair when you grow.
No per-click fees. No per-event taxes. Three plans, transparent limits on links and custom domains.
Free for early-stage appsGrowth from $49/moEnterprise for serious volume