Open-source alternative to Branch.io, AppsFlyer OneLink, and Firebase Dynamic Links.
Self-hosted deep linking engine with device detection, analytics, deferred deep linking, and smart routing. No per-click pricing, no vendor lock-in, full data ownership — runs on your own PostgreSQL.
Firebase Dynamic Links shut down in August 2025. LinkForty is a production-ready, open-source replacement.
curl -O https://raw.githubusercontent.com/linkforty/core/main/docker-compose.yml
docker compose up -dThat's it. LinkForty is running at http://localhost:3000.
docker run -d \
--name linkforty \
-p 3000:3000 \
-e DATABASE_URL=postgresql://user:pass@host:5432/linkforty \
-e REDIS_URL=redis://host:6379 \
linkforty/core:latest- Smart Link Routing — Device-specific URLs for iOS, Android, and web
- Deferred Deep Linking — Probabilistic fingerprint matching for install attribution
- Click Analytics — Geolocation, device type, platform, UTM tracking
- QR Code Generation — Built-in PNG/SVG QR codes for any link
- Webhooks — HMAC-signed event notifications with retry logic
- iOS Universal Links & Android App Links — Automatic
.well-knownfile serving - OG Preview Pages — Social media scraper detection with Open Graph meta tags
- Redis Caching — Optional Redis for high-performance link lookups
- TypeScript — Fully typed API
| Variable | Required | Default | Description |
|---|---|---|---|
DATABASE_URL |
Yes | — | PostgreSQL connection string |
REDIS_URL |
No | — | Redis connection string (recommended) |
PORT |
No | 3000 |
Server port |
NODE_ENV |
No | production |
Environment mode |
CORS_ORIGIN |
No | * |
CORS allowed origins |
IOS_TEAM_ID |
No | — | Apple Team ID for Universal Links |
IOS_BUNDLE_ID |
No | — | iOS app bundle ID |
ANDROID_PACKAGE_NAME |
No | — | Android package name |
ANDROID_SHA256_FINGERPRINTS |
No | — | Android signing certificate fingerprints |
- Architectures: linux/amd64, linux/arm64
- Base: Node.js 22 Alpine
- Security: Non-root user, SBOM + Provenance attestations
- Health checks: Built-in
| Tag | Description |
|---|---|
latest |
Latest stable release |
v1.6.1 |
Specific version (recommended for production) |
v1.6 |
Latest patch of minor version |
v1 |
Latest minor of major version |
Pin versions in production:
services:
linkforty:
image: linkforty/core:v1.6.1services:
linkforty:
image: linkforty/core:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://linkforty:linkforty@postgres:5432/linkforty
REDIS_URL: redis://redis:6379
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: linkforty
POSTGRES_PASSWORD: linkforty
POSTGRES_DB: linkforty
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U linkforty"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:| Platform | Package |
|---|---|
| React Native | @linkforty/mobile-sdk-react-native |
| Expo | @linkforty/mobile-sdk-expo |
| iOS (Swift) | LinkFortySDK |
| Android (Kotlin) | LinkFortySDK |
| LinkForty | Branch | AppsFlyer | Firebase Dynamic Links | |
|---|---|---|---|---|
| Pricing | Free (self-hosted) | $299+/mo | $500+/mo | Shut down |
| Open Source | Yes (AGPL-3.0) | No | No | No |
| Self-Hosted | Yes | No | No | No |
| Data Ownership | Complete | Vendor | Vendor | Was Google |
- Source Code: github.com/LinkForty/core
- Documentation: docs.linkforty.com
- Cloud Platform: linkforty.com (hosted SaaS)
- Issues: GitHub Issues
AGPL-3.0 — see LICENSE for details.