How a redirect actually works
A browser requests a URL. Instead of sending back a page, the server sends back a status code in the 3xx range and a Location header pointing at a different URL. The browser reads that header and requests the new URL on its own, usually in well under a second, with nothing more visible to the visitor than a brief flash in the address bar. It looks like one click landing on one destination, but there is an invisible hop wedged in between that the visitor never sees.
That hop does more work than it looks like it does. It is the point where a server can log a click before sending the visitor on, which is the whole mechanism behind link shorteners, affiliate links, and any tracked link on a bio page. The visitor experiences a single tap; the server experiences a request, a log entry, and a second request right behind it.
301 vs 302: the distinction that actually matters
Almost everything else on this topic is detail layered on top of one choice. A 301 tells the browser, and any search engine crawling the link, that the old URL has moved for good and should be treated as replaced. A 302 says the opposite: this URL happens to point elsewhere right now, but do not assume that will still be true tomorrow.
That difference changes real behavior, not just a number in a log file. Browsers and CDNs are allowed to cache a 301 and skip the round trip on repeat visits. A 302 is not supposed to be cached. Search engines have historically treated a 301 as a signal to carry the old URL's ranking history over to the new one, and treated a 302 as making no such promise, because the entire point of a 302 is that the old URL might come back.
| Code | Name | Meaning | Cacheable | Typical use |
|---|---|---|---|---|
| 301 | Moved permanently | The resource now lives at a new URL for good | Yes | Domain migrations, permanent URL changes |
| 302 | Found | The resource is temporarily at a different URL | No | Most tracked links, temporary promotions |
| 303 | See other | Forces the browser to GET the new URL regardless of the original method | No | Redirecting after a form submission |
| 307 | Temporary redirect | Same as 302 but preserves the original request method and body | No | API calls, redirects that must keep POST data intact |
| 308 | Permanent redirect | Same as 301 but preserves the original request method and body | Yes | Permanent redirects that must keep POST data intact |
Server-side redirects vs client-side redirects
Everything above describes an HTTP redirect, decided before the browser renders anything, using only a status code and a header. Two other mechanisms get called redirects informally and behave very differently. A meta refresh is an HTML tag inside the page itself, telling the browser to load a new page after a delay. A JavaScript redirect sets the page's location from a script once the page has already started loading.
Both require the page to load first, which makes both slower than an HTTP redirect, and both fail silently if JavaScript is off or a crawler does not execute scripts. Search engines generally follow HTTP redirects without hesitation and treat meta refresh and JavaScript redirects with more caution, sometimes indexing the original URL instead of the target. If a redirect needs to be trusted by anything other than a human with a fully loaded browser, the HTTP version is the one that reliably works.
Where redirects quietly break tracking data
This is the part most explanations leave out. A redirect only forwards what it is told to forward. If a link has three hops between the one someone clicked and the page they land on, each hop is a separate chance for a query string to get dropped. A tracking link carrying a UTM parameter or a click ID, something like a source tag and an ad platform's click token stacked together in the URL, survives a redirect only if whatever built that redirect explicitly copies the incoming query string onto the outgoing URL. A redirect that just points at a fixed destination will silently drop everything after the question mark. The page loads fine and nothing about the visitor's experience looks wrong; it's the campaign data behind it that quietly disappears, usually noticed only once someone tries to explain why last week's clicks all show up with no source attached.
This is also a real reason to avoid redirect chains, not just a speed concern. Every extra hop is another place for that drop to happen, on top of the extra round trip before the visitor sees a page at all.
A redirect is not the same thing as a proxy
One more distinction worth having, because it changes what to expect from a tool. A redirect changes the URL in the address bar to the destination, while a reverse proxy serves the destination content and leaves the original URL sitting there unchanged. When a link-in-bio tool lets you put your own domain on it, from Raydar's first paid plan for example, that is reverse proxy infrastructure: your domain stays in the address bar the whole time, rather than a redirect that would immediately bounce a visitor from your domain over to the platform's own. It is worth checking which one a tool actually gives you, because a redirect-based custom domain still shows the underlying platform's URL the moment the page finishes loading, which defeats a lot of the point of using your own domain in the first place.
How to check what a link is actually doing
You do not need to guess. Browser developer tools show the exact status code a redirect returned, in the network tab, along with every hop in a chain if there is more than one. That process, and what to do if a link is misbehaving, is covered in how to test a redirect. It is also worth checking a link's behavior inside an in-app browser specifically, since Instagram, TikTok, and Facebook's built-in browsers sometimes handle redirect chains differently than Safari or Chrome do, which is a common cause of a link that works everywhere except from the app it was actually shared in. The referrer a redirect hands off, and any click ID riding along with it, are the two other pieces worth understanding once the redirect itself makes sense.