one tiny api. one job.

redirects as a service.

POST a destination, get back a short link on site-shortner.link. Share it, ship it, paste it in a README or a release note — then repoint it later without touching anything that's already out there.

try it

dry run — nothing is created
request · generated as you type

# runs entirely in this page — it writes the request for you, it doesn't send it. wire in your own key and it's real.

the whole lifecycle

how it works

  1. POST a link

    Send a destination URL (and a slug, if you care). You get back site-shortner.link/<slug> — a stable address that answers with an HTTP redirect to wherever it currently points.

  2. Ship it anywhere

    App release notes, READMEs, email footers, support macros, config files, social bios. Anywhere a long ugly URL would go, the short one goes instead — and keeps working when the long one doesn't.

  3. PATCH it later

    Docs moved? Campaign over? One PATCH and the very next request lands on the new destination. Nothing already shipped has to change, because the address never did.

a design decision, explained

why our links answer 307

A 301 tells browsers "this moved forever" — and they take that personally. Many will cache it indefinitely and never ask again, which means a 301'd link can never truly change its mind.

A 307 says "go here, for now" — every request checks back with us, so an edit takes effect on the next hit, for everyone, everywhere. Editability is the entire point of this service, so 307 is the default. Want a permanent 301 for SEO reasons? It's one field in the API.

→ the full field guide to 301 / 302 / 307 / 308

what a hit looks like
$ curl -I https://site-shortner.link/launch HTTP/2 307 location: https://example.com/launch-post cache-control: no-store # re-checked every time → always editable

what's in the box

small surface, sharp edges

api

Five endpoints

Create, read, update, delete, stats. JSON in, JSON out, sensible errors. You'll be done reading the docs before your coffee is.

cli

A real CLI

shortner new, shortner edit, shortner stats. Scriptable, CI-friendly, quiet on success like a good tool should be.

slugs

Slugs you choose

Vanity slugs for things humans will read aloud, random ones for everything else — generated without 0/O and 1/l/I lookalikes.

stats

Hit counts, not humans

Per-link totals, daily series, coarse geo, device class. We count requests; we don't profile the people making them.

lifecycle

Expiry & fallbacks

Give a link an end date and a place to send people after. Retired links point somewhere deliberate, not at a 404.

bulk

Bulk import

A CSV in, a column of short links out — one per row, each individually editable afterward. Built for the 400-link migration day.

keys

want in?

Keys go out in small batches while the service grows at a pace one pager rotation can handle. Email a line about what you're building and you'll hear back within a couple of days.