Redirect Types & Concepts

What is a hard redirect?

A hard redirect is a URL redirect implemented through a proper HTTP status code at the server level, specifically a 3xx status code returned in the server’s response before any page content is delivered. The server receives the request, determines a redirect is in place, and responds immediately with the redirect status code and a Location header pointing to the destination. No page content is sent. The browser follows the Location header and loads the destination.

The term “hard redirect” is the informal counterpart to soft redirect, used to distinguish a proper server-side HTTP redirect from the various workarounds that achieve a similar outcome for human visitors without issuing a proper HTTP redirect response. Where a soft redirect returns a 200 OK and uses HTML or JavaScript to move visitors, a hard redirect returns a 3xx status code that browsers, crawlers, and every other HTTP client understands natively as a redirect instruction.

In practice the term “hard redirect” is used most often in contexts where the distinction from soft redirects is being drawn, when explaining why a proper redirect is better than a meta refresh, or when auditing a site for redirect quality. In everyday redirect management the terms server-side redirect and 301 redirect or 302 redirect are more commonly used. Hard redirect is the conceptual umbrella that covers all of them.

How a hard redirect works

The mechanics of a hard redirect are the foundation of how redirects work on the web. When a browser or web crawler sends an HTTP request to a URL that has a hard redirect configured, the sequence is:

The server receives the request. Before checking for content to serve it checks the configured redirect rules. If a matching rule exists the server constructs a response containing a 3xx status code and a Location header with the destination URL. This response is typically just a few hundred bytes: no HTML, no content, just headers. The server sends this response immediately.

The browser receives the response and reads the status code. A 301 tells it the move is permanent: cache the destination, update bookmarks, expect this redirect forever. A 302 tells it the move is temporary: do not cache, keep the original URL, the redirect may not be there next time. In both cases the browser immediately makes a new request to the URL in the Location header.

The destination server receives the new request and, if everything is configured correctly, returns a 200 OK with the page content. The browser renders the destination page. The visitor sees the destination with the destination URL in the address bar.

The entire exchange, request, redirect response, second request, destination response, typically completes in well under a second. A single hard redirect hop is imperceptible to visitors on a normal connection.

What makes a redirect hard

The defining characteristic of a hard redirect is the HTTP status code returned in the server response. Any redirect that uses one of the following status codes is a hard redirect:

301 Moved Permanently: the most widely used hard redirect. Signals a permanent move. Transfers SEO equity and link juice to the destination. Cached by browsers. The correct choice for any permanent URL change.

302 Found: temporary hard redirect. The original URL stays indexed. Not cached by browsers. Correct for maintenance pages, A/B tests, and genuinely temporary situations.

303 See Other: temporary hard redirect that explicitly switches the follow-up request to GET. Used in Post/Redirect/Get patterns after form submissions.

307 Temporary Redirect: temporary hard redirect that strictly preserves the original HTTP request method. Used in API and application contexts.

308 Permanent Redirect: permanent hard redirect that strictly preserves the original request method. Used for permanently moving API endpoints where method preservation matters.

All of these are hard redirects because all of them return a 3xx status code that the browser processes natively as a redirect instruction at the HTTP level. The status code is what makes a redirect hard, not where it is configured, not what tool created it, not how the rule was written.

Hard redirects vs soft redirects

The contrast between hard and soft redirects explains why hard redirects are the only correct approach for any redirect scenario where SEO, reliability, and user experience matter.

Status code: a hard redirect returns a 3xx status code. A soft redirect returns a 200 OK. This single difference has cascading implications for every aspect of how the redirect is processed.

Processing layer: a hard redirect is processed at the HTTP level, before any content is loaded, before any JavaScript executes, before any HTML is parsed. A soft redirect is processed at the content level, after the page has been delivered and the browser has begun parsing HTML or executing JavaScript.

Speed: a hard redirect resolves in a single HTTP round trip; the redirect response is just headers, returned immediately. A soft redirect requires the browser to receive the full page response, parse its content, and then initiate navigation. This is always slower, even with zero-delay meta refresh tags.

SEO equity transfer: hard redirects communicate unambiguous permanent or temporary signals through standardised status codes. Link juice transfer is reliable and well-understood. Soft redirects return 200 OK; the wrong status code for a redirect, and search engines must infer intent from page content. Equity transfer is less reliable and potentially incomplete.

Browser caching: 301 hard redirects are cached by browsers; future visits go directly to the destination without requesting the original URL. Soft redirects returning 200 OK are cached as regular pages; the browser stores the page content, not a redirect instruction.

Crawler handling: Googlebot and other web crawlers process hard redirects in a single crawl pass: request the URL, receive the redirect, follow the Location header, done. JavaScript-based soft redirects require a second rendering pass that may occur hours or days later.

JavaScript dependency: hard redirects work regardless of whether JavaScript is enabled. They are processed at the HTTP level before JavaScript is ever involved. JavaScript soft redirects fail entirely when JavaScript is disabled.

Reliability: hard redirects are the most reliable redirect mechanism because they operate at the lowest-level protocol layer. They work identically across every browser, every crawler, and every HTTP client. Soft redirects depend on client-side execution and behave differently across different clients and configurations.

Where hard redirects are configured

Hard redirects can be configured at any layer of the web infrastructure stack that processes HTTP requests. The appropriate layer depends on the hosting environment and the complexity of the redirect requirements.

Apache .htaccess files: the Redirect and RewriteRule directives configure hard redirects on Apache servers. Redirect 301 /old-page https://example.com/new-page creates a permanent hard redirect from /old-page to the destination.

Nginx server configuration: the return directive in Nginx configuration issues hard redirects. return 301 https://example.com/new-page; creates a permanent hard redirect for the matching location block.

CDN edge rules: CDN platforms like Cloudflare support redirect rules at the edge that return hard redirect responses before requests reach the origin server. Edge-level hard redirects are the fastest possible implementation because they do not involve the origin server at all.

Application-level redirects: web frameworks issue hard redirects programmatically. res.redirect(301, '/new-page') in Express.js issues a proper 301 hard redirect. return redirect('/new-page', 301) in Flask does the same. These are genuine hard redirects because the application code returns a 3xx status code in the HTTP response.

Redirect management platforms: dedicated redirect management tools like Redirect Supply configure hard redirects through a management interface and serve them through their own infrastructure. Every redirect configured in a redirect management platform is a hard redirect; the platform’s servers return proper 3xx responses to all matched requests.

Hard redirects and SEO

Hard redirects are the foundation of SEO-correct redirect management. Every redirect recommendation in technical SEO: use 301 for permanent moves, use 302 for temporary situations, preserve link juice through migrations, assumes hard redirects. Soft redirects do not satisfy these recommendations regardless of how they are implemented.

Canonical URL enforcement: hard redirects are the definitive way to enforce canonical URLs. A 301 hard redirect from http://example.com to https://example.com leaves no ambiguity about which URL is canonical. Both versions are not simultaneously accessible. There is one canonical URL and every request to the non-canonical version is hard redirected to it.

Duplicate content elimination: hard redirects make the redirected URL inaccessible. The original URL no longer serves content; it only serves a redirect response. There is no possibility of search engines indexing both the original and destination as separate pages. Soft redirects do not eliminate duplicate content because the original URL continues to return 200 OK with content.

Link juice consolidation: backlinks pointing to the original URL pass their equity through the hard redirect to the destination with maximum reliability. A 301 hard redirect is the only mechanism that reliably consolidates backlink equity from a retired URL to its replacement.

Search engine trust: hard redirects use standardised HTTP status codes that search engines have processed for decades. The behaviour of hard redirects is well-defined, well-tested, and thoroughly documented. Search engines apply consistent, predictable rules to hard redirects. Soft redirects require search engines to interpret non-standard signals; the results are less predictable.

Hard redirects in practice

In everyday redirect management hard redirects are simply what redirects are: the default, correct implementation. When a redirect management tool, a server configuration guide, or an SEO recommendation talks about redirects without qualification, they mean hard redirects.

The term “hard redirect” becomes useful primarily in two contexts. First, when explaining why a soft redirect is insufficient: “this needs to be a hard redirect, not just a meta refresh.” Second, when auditing a site for redirect quality: checking that redirects are returning proper 3xx status codes rather than 200 OK responses with client-side navigation.

For anyone building or maintaining websites the practical takeaway is straightforward. Every redirect should be a hard redirect. Use server-side redirect configuration: .htaccess, Nginx config, CDN rules, or a redirect management platform, to issue proper 3xx responses. Use 301 for permanent moves and 302 for temporary ones. Avoid meta refresh tags, JavaScript redirects, and any other mechanism that returns 200 OK instead of a proper redirect status code.

When server access is unavailable and a soft redirect is genuinely the only option, treat it as a temporary measure and migrate to proper hard redirect infrastructure as soon as possible.

Verifying hard redirects

Confirming that a redirect is genuinely hard, returning a proper 3xx status code, is straightforward.

curl: curl -I https://example.com/old-page returns only the response headers. A hard redirect returns a 3xx status code, HTTP/1.1 301 Moved Permanently or HTTP/2 301 — immediately. A soft redirect returns HTTP/1.1 200 OK. The status code in the first line of the response is the definitive indicator.

Browser developer tools: the Network tab shows each HTTP request and its status code. A hard redirect appears as a request returning a 3xx status code followed by a second request to the destination. A soft redirect appears as a single 200 OK request followed by a client-initiated navigation event.

Online redirect checkers: tools that analyse redirect chains show the status code at each hop. A properly configured hard redirect shows the 3xx code. A soft redirect shows 200 OK regardless of what the visitor experiences.

Related terms

Related terms

Ready to keep every link alive?

Ready to keep every link alive?

Ready to keep every link alive?