Link management
Custom aliases or generated codes, with tags, bulk actions and CSV import and export.
Apache-2.0 · self-hosted
Short links, click statistics, divert rules and role-based permissions, running from a single Docker Compose file.
Custom aliases or generated codes, with tags, bulk actions and CSV import and export.
Trends, referrers, devices and unique visitors, down to the raw record of every click.
Send one short link to different destinations by device or user agent, matched in order.
Ten scopes, editable roles, and an audit trail for every change made in the console.
An optional interstitial shows the destination first, and each link sets how long it holds.
Three modes for the visitor address, including storing nothing at all.
Paste the long link and pick your own alias, or let Purels generate one.
The short link, a QR code, or rules that divert by device and user agent.
Trends, referrers, devices and unique visitors, all on one dashboard.
Everything Purels needs fits in one Compose file.
$ cp .env.example .env
$ docker compose -f deploy/compose.yaml up -d
$ curl localhost/readyz
{"status":"ready"}
Yes. Every write in the console needs a session, and a link belongs to the account that created it. Administrators can see all of them.
Yes. The short code itself is global — the domain only decides what the console displays and what the QR code encodes, so each one has to resolve to this deployment on its own.
Nothing. Closing registration only stops new accounts being created; every existing account keeps working.
In your own PostgreSQL. A visitor's address can be dropped entirely, kept as a plain hash, or hashed with a key you supply — three modes.
Both, and both are off until you configure them: TOTP with recovery codes, and OIDC providers. Each needs an encryption key set first.
Apache-2.0.