301 vs 302: which redirect should a short link use?
The short answer is 302, and the reason has almost nothing to do with SEO. It is about who gets to change their mind later: you, or every browser that ever saw the link.
The actual difference
A 301 says the resource has moved permanently and the client should stop asking. A 302 says it is somewhere else for now, so keep asking each time. Both send the visitor to the same place today. They differ entirely in what happens tomorrow.
Why a cached 301 is close to unfixable
Browsers take permanence literally. Once a 301 is cached, the browser stops contacting your server at all for that URL. Change the destination and returning visitors keep landing on the old one, sometimes for months, with no request reaching you that you could fix. Clearing it requires the visitor to clear their own cache, which is not a support instruction anyone can give at scale.
That is fine for a site migration, where the new URL genuinely is permanent. It is the wrong contract for a short link, whose entire value proposition is that the short form stays fixed while the destination underneath it can move.
The SEO argument, honestly
The received wisdom is that 301 passes link equity and 302 does not. That was accurate a long time ago. Search engines have since stated repeatedly that redirect type is not the deciding factor in whether signals are consolidated, and that a redirect maintained consistently is treated as such regardless of its status code.
There is also a more useful framing: short links are rarely the canonical route to a page. They appear in social posts, emails, chat messages and print. Ranking signals from those sources are weak or nonexistent anyway. The pages that matter for search are linked directly, and your canonical tags settle the rest. Choosing a redirect code to chase link equity through a shortener optimises something that was never load-bearing.
What caching does to your numbers
A cached redirect is a click you never see. The visitor goes where they intended, your server is never contacted, and your analytics record nothing. With a 301 that silence is permanent per browser: the first visit counts and every subsequent visit from that person is invisible.
For a link people follow once this barely matters. For anything recurring, a documentation shortcut, a status page, a link in an email signature, it means your figures drift downwards over time for reasons that have nothing to do with interest declining. A 302 keeps each visit observable, which is the only way a recorded-redirect count means anything at all.
The other codes, briefly
What c1k.me does
Every active link answers with a 302 and explicit no-store cache headers, so a destination change takes effect on the next request everywhere. Deleted links return 410 Gone. A slug that has never existed, or whose schedule has not started, returns 404. Paused links return 404 as well, so pausing a link does not tell crawlers to forget it permanently.
The redirect response itself carries no HTML body, no stylesheet, no font and no script, which is why it lands in single-digit milliseconds of server time. A redirect should be the fastest thing on the internet, and there is no reason for it not to be.