shrtnr är en självhostad URL-förkortare som du styr från kod och från AI-assistenter, inte bara från en panel. Varje deploy levererar ett REST API med OpenAPI-spec, typade SDK:er på npm, PyPI och pub.dev, och en inbyggd MCP-server som Claude, Copilot och alla andra MCP-klienter ansluter till via OAuth på Cloudflare Access. Länkar tillhör den som skapade dem, flera slugs kan peka på samma mål, och buntar samlar en hel kampanjs klick i en rapport. Den körs på Cloudflare Workers och D1, inom gratistjänsten.
Fastnat i installationen? Vi hjälper dig gärna. Hör av dig

Verktyg för länkar, slugs, buntar, QR-koder och analys, från samma Worker. OAuth via Cloudflare Access; varje verktygsanrop körs som den inloggade användaren. Varje verktyg är märkt som skrivskyddat, idempotent eller destruktivt.
Gruppera en kampanjs länkar. Totala klick, tidslinje, länder, referrers, enheter, webbläsare och varje länks andel, över valfritt intervall. En länk kan ingå i flera buntar.
Ett mål, en slumpmässig slug plus valfritt antal egna, var och en spårad och avstängbar för sig.
Identitet från Cloudflare Access. Den som skapar äger det den skapar; alla kan läsa. API-nycklar utfärdas per person och agerar som den personen.
TypeScript, Python, Dart. Genererade från OpenAPI-specen och låsta till dess hash i CI.
OpenAPI 3.1, interaktiv referens i varje deploy, bearer-nycklar med begränsade rättigheter.
Land, referrer, enhet, operativsystem, webbläsare, QR kontra länk, adaptiv tidslinje, botar filtrerade som standard.
Utgångsdatum, reversibel avstängning, raderingsskydd för allt som har klick, idempotent skapande, etiketter från sidans titel.
Engelska, indonesiska, svenska. Tre teman. QR-koder.
D1 och KV skapas åt dig, migreringar körs vid första anropet.
Inte ännu: lösenordsskyddade länkar, import/export, routing per enhet eller land, taggar, egna sociala förhandsvisningar, klick-webhooks.
Lanserat något via ett blogginlägg, ett GitHub-repo, en npm-sida och en docs-sajt? Lägg dem i en bunt. En gemensam bild av kampanjen, inte åtta separata diagram. Länkar kan tillhöra så många buntar de behöver, och du arkiverar bunten när kampanjen är över.


Bunta länkar från valfri domän, kampanj eller projekt. Varje bunt berättar sin egen historia.
Totala klick, tidslinje, länder, referrers, enheter, operativsystem, webbläsare, QR kontra länk och varje länks andel av totalen, över valfritt intervall.
En länk kan ingå i flera buntar samtidigt. Inga dubbletter, ingen splittrad spårning, ingen städning efteråt.
Varje shrtnr-deploy inkluderar en MCP-server. Claude, Copilot och alla MCP-klienter ansluter via OAuth på Cloudflare Access: förkorta URL:er, hantera buntar eller hämta analys i samtalet. Varje verktygsanrop körs som den person som anslöt, så en assistent kan inte stänga av eller radera en annan användares länkar. Föredrar du kod? Typade SDK:er för TypeScript, Python och Dart omsluter samma REST API.
npm install @oddbit/shrtnr
// Länkar, slugs, buntar och analys från TypeScript
flutter pub add shrtnr
// Samma klient i Dart- och Flutter-appar
pip install shrtnr
// Länkhantering från Python-tjänster och skript
https://mcp.your-domain.com
// OAuth via Cloudflare Access, ingen token att klistra in

Cloudflare Access levererar identiteten. Den som skapar äger sina länkar och buntar, och bara ägaren kan redigera, stänga av, radera eller ta bort slugs och buntmedlemmar. Alla inloggade kan läsa allt, lägga en slug på valfri länk och lägga valfri länk i en bunt. API-nycklar utfärdas per person och agerar som den personen.
Läs rättighetsmodellenSjälvhostad i ditt eget Cloudflare-konto. Dina länkar och klickdata stannar i din D1-databas.

Du äger domänen och logiken. Ingen plattformsrisk, ingen länkröta. Dina tillgångar förblir under din kontroll.

Deploya din egen. Öppen källkod, självhostad, på Cloudflares gratistjänst.
shrtnr byggde vi för oss själva och släppte fritt. Vill du ha samma ingenjörskvalitet i din egen produkt, berätta vad du bygger.