Redirect code decision

301 vs 302 redirects

Use a 301 when the destination should become the lasting owner of the traffic. Use a 302 when the route is genuinely temporary, reversible, or still under live test.

This page is the practical decision standard for permanent versus temporary routing. Use it to stop "temporary for six months" messes, keep canonicals and internal references aligned, and validate the live chain before campaign or site changes go out.

By Dean Downes Last updated 25 Mar 2026 Part of the Shortlinkfix 5-Layer UTM Governance Model
301 = ownership shift

The old route should stop being primary and the new destination should inherit the traffic, references, and long-term attention.

302 = temporary detour

The original route still matters because the move is reversible, experimental, operational, or intentionally short-lived.

Type is only step one

You still need to check the live chain, the final URL, canonicals, and parameter survival before you trust the route.

Start here

What this page actually solves

Teams usually ask about 301 vs 302 redirects when they really have one of three practical problems: they are moving a route for good, they are detouring traffic temporarily, or they inherited a route that has been "temporary" for so long nobody remembers the original plan. The goal here is to make the decision clean before the redirect code, canonical, internal links, and campaign logs drift out of sync.

The move is truly permanent

The destination should become the long-term owner of the traffic. The old route should stop being treated as the real page.

The move is temporary or reversible

The detour serves a short-term purpose such as testing, maintenance, or limited-time routing while the original URL still matters.

The setup is already messy

You inherited a route where nobody knows whether the redirect is supposed to be temporary, permanent, or just forgotten technical debt.

Use this page when: you need to choose the right redirect type, align the route with canonicals and logs, and validate the full chain before launch.
Do not use it for: general SEO theory without a real route decision, or naming/governance questions that belong on the UTM policy pages.
Decision rule showing when to use a 301 redirect versus a 302 redirect based on whether the URL move is permanent, followed by a reminder to check the full redirect chain for extra hops, stripped UTMs, broken destinations, and protocol inconsistencies.
Permanent move = 301. Temporary or reversible route = 302. Then validate the live chain and final destination with the Redirect Checker.

Permanent vs temporary: what each code actually signals

A 301 is not just a server response. It is an operational statement that the old route should stop being the primary owner of traffic. A 302 says the detour is temporary and the original route is still conceptually the source path you intend to preserve or restore.

301 / 308

Permanent ownership shift

  • the destination should become the lasting primary URL
  • internal links and references should move to the new route
  • canonicals should agree with the redirect intent
  • campaign logs should stop treating the old URL as the live destination
302 / 307

Temporary or reversible routing

  • the original route still matters because the move is not final
  • you expect the detour to end, change, or be reviewed again
  • the old URL remains relevant in planning, documentation, or restoration
  • the route should not quietly harden into a permanent migration by neglect
QuestionIf yesUsually points to
Should the destination become the lasting owner of the traffic?Yes301
Is the change limited-time, reversible, or experimental?Yes302
Will you update canonicals and internal references to the destination?YesUsually 301
Do you still expect the original URL to come back as the main route?YesUsually 302

Use a 301 when the move is actually permanent

The biggest 301 mistake is not using it. If the destination is truly the new long-term home, a hesitant 302 usually just creates weeks or months of mixed signals.

Domain or path migrationThe old route is retiring and the new URL should become the real destination in docs, links, and planning.
Canonical normalisationHTTP to HTTPS, slash consistency, hostname normalisation, or other permanent route cleanup.
Retiring an outdated pageThe legacy URL should hand its traffic to the newer destination for the foreseeable future.
Permanent marketing-route simplificationThe short route or campaign path has one enduring destination, not a temporary detour.

Use a 302 when the route is genuinely temporary

A 302 is correct when the detour is real and time-bounded. The mistake is not using a 302; the mistake is leaving one in place after the route has effectively become permanent.

Maintenance windowsYou need to move traffic briefly while the original page or route is unavailable.
Testing or controlled experimentsYou are intentionally comparing destinations and may reverse the route after results come in.
Short-lived promotional detoursA campaign route temporarily points somewhere else for a limited offer or launch sequence.
Operational fallback routingYou need a temporary handoff while the intended destination is being repaired or replaced.

Where teams get 301 vs 302 wrong

The redirect code can be technically valid and still operationally wrong. These are the most common failure patterns in live environments.

“Temporary” for six months

The destination has clearly become the lasting owner of the traffic, but the team never converts the 302 or updates the route references.

Using a 301 on an experiment

The route is still being tested or may be reversed, but the implementation tells the stack it is final.

The redirect and canonical disagree

The code says one thing, the canonical says another, and the team is effectively publishing conflicting intent.

The code is right, but the chain is not

Extra hops, wrappers, broken destinations, or parameter loss make the route unsafe even if the final status code is correct.

301 vs 302 is also a tracking decision

Neither code automatically strips UTMs. The risk lives in the live route: added wrappers, hostname rewrites, or badly rebuilt destinations. But the choice still matters because the redirect type changes how teams document the route, how long they keep old URLs in circulation, and whether campaign logs keep pointing at a path that should have been retired.

Tracking-safe mindset

Validate the final URL, not the theory

  • check every hop in the live chain
  • confirm the final destination is correct
  • verify utm_* values or click IDs survive as expected
  • log the approved final route in your source-of-truth inventory
Reporting risk

Temporary routes tend to get messy when they linger

  • old campaign links keep pointing at detours nobody reviews
  • teams forget whether the destination is still supposed to be reversible
  • canonicals and internal links drift away from the real route intent
  • readable attribution becomes harder to reconcile over time

If you need deeper parameter-survival diagnosis, use Do redirects remove UTMs?. If the route is breaking in practice, not just in theory, validate the full chain first.

The publish-safe workflow before you set any redirect live

After choosing the right redirect type, test the actual route in the Redirect Checker so code intent, destination truth, and hop cleanliness still agree before launch.

Follow the same sequence every time so you do not let redirect-type decisions drift away from the real job of the route.

1. Decide if the move is permanent or temporaryIf you cannot answer this cleanly, you do not have enough operational clarity to publish the route yet.
2. Align canonicals and internal referencesIf the route is permanent, stop publishing signals that keep the old URL conceptually alive as the primary destination.
3. Validate the live chainUse the Redirect Checker to confirm hops, final destination, and protocol or hostname behaviour.
4. Confirm parameter survivalCheck whether utm_* values and click IDs survive as expected when the route finishes.
5. Log the approved live routeRecord the final working destination, redirect type, owner, and review rhythm in your link inventory or governance sheet.

Common live scenarios

The right code becomes much clearer when you translate the decision into real route jobs.

HTTP to HTTPS

This is a permanent canonical normalisation job, so it usually points to a 301. Then validate that the chain does not add unnecessary hops or strip parameters.

Affiliate routes

The redirect type may be less important than the wrappers upstream and downstream. Validate the actual chain and final landing URL before assuming the status code is the real issue.

Temporary promo detours

If a route only points to a seasonal or short-lived destination for a defined period, a 302 is usually the safer operational signal.

Legacy migrations

If the old URL is never coming back as the primary destination, stop treating the move like a temporary comfort blanket and convert it to a permanent route.

If you inherit a messy redirect setup

Inherited routes are where 301 vs 302 problems get expensive. Use this checklist before you start changing codes blindly.

  • identify the original purpose of the route: permanent move, temporary detour, or now-forgotten exception
  • confirm where the live chain actually lands today
  • check whether canonicals and internal links agree with the current redirect intent
  • find routes that are still marked temporary long after the destination became permanent
  • remove extra hops and wrappers where possible before blaming the status code alone
  • record an owner and a review date so the route does not become anonymous technical debt again

FAQ

Use these answers as the quick operating standard when the route decision starts getting muddy.

Is a 301 always better than a 302?

No. A 301 is right when the move is truly permanent and the destination should become the primary URL. A 302 is right when the routing is temporary, experimental, or intentionally reversible.

Can a 302 cause the old URL to stay primary?

Yes. That is the point of a temporary redirect. If the move becomes permanent, convert it to a 301 or 308 and update the canonical, internal links, and live route references so the signals agree.

Do 301 and 302 redirects affect UTMs differently?

Neither code automatically strips UTMs. Tracking usually breaks because a rule, wrapper, or hidden hop drops query parameters or sends users somewhere unexpected. Always validate the final URL and parameter survival in the live chain.

When should I care about 307 and 308?

Use 307 and 308 when preserving the original request method matters. For most standard marketing-link workflows, the practical decision is still permanent versus temporary, which is usually handled with 301 or 302.

What is the most common real-world mistake?

Leaving a 302 in place long after the destination has clearly become permanent. That usually signals a process problem: nobody owns the route, reviews it, or updates the related canonicals and logs.