Redirect Loop

A redirect loop is a redirect error where a URL sends the browser to another URL that eventually points back to the start, creating an endless cycle. The page never loads because the browser keeps bouncing between the same addresses. Browsers stop after about 20 hops and show an error instead of a page.
In Chrome, that error reads ERR_TOO_MANY_REDIRECTS. Firefox shows “The page isn’t redirecting properly.” The underlying HTTP status is 508 Loop Detected, though most servers never reach it because the browser gives up first.
Loop: /page-a → /page-b → /page-a → /page-b →... (never ends)
Redirect Loop vs Redirect Chain
A redirect loop never resolves; a redirect chain always does. A redirect chain passes through two or more hops but ends at a real page, so it only costs speed. A loop has no final destination, so the page fails to load at all. A chain is a performance problem. A loop is a broken page.
Common Causes of a Redirect Loop
Most redirect loops trace back to conflicting or misconfigured redirect rules. The usual culprits:
- Mismatched HTTPS settings. A common case is Cloudflare’s Flexible SSL mode. The server thinks the connection is HTTP and redirects to HTTPS, while Cloudflare has already served HTTPS, so the two bounce forever.
- Conflicting .htaccess rules. Two rules, one forcing
wwwand another forcing non-www, can send requests back and forth. - Wrong WordPress site URL. If the WordPress Address and Site Address settings disagree, or point to the wrong protocol, WordPress loops on every request.
- Plugin or CDN conflicts. An SEO or redirect plugin adds a rule that contradicts a server-level or CDN-level redirect.
- Self-referencing redirect. A page set to redirect to its own URL loops instantly.
How to Fix a Redirect Loop
Fixing a loop means finding the two rules that fight each other and removing one. Work through these steps:
- Clear cookies and cache first. A stale cached redirect can cause the error even after the server is fixed. Test in an incognito window to rule this out.
- Trace the redirect path. Map every hop to see exactly which two URLs bounce against each other. linkutm’s redirect checker shows the full path and each status code, making the repeating pair easy to spot.
- Check your SSL and protocol settings. If you use Cloudflare, switch Flexible SSL to Full or Full (Strict) so the origin and CDN agree on HTTPS.
- Audit your redirect rules. Open
.htaccess, the Nginx config, or your redirect plugin and remove the rule that contradicts the one you want to keep. - Fix the CMS URLs. In WordPress, confirm the Site URL and Home URL both use the correct domain and
https://.
Frequently Asked Questions
What is a redirect loop?
A redirect loop is an endless cycle where one URL redirects to another that redirects back, so the page never loads. The browser detects the repetition and stops after roughly 20 hops. It then shows a redirect error instead of the content.
What causes ERR_TOO_MANY_REDIRECTS?
The error means the browser followed too many redirects without reaching a real page. Common triggers are mismatched HTTPS settings (often Cloudflare Flexible SSL), conflicting www and non-www rules, a wrong WordPress site URL, or a plugin that contradicts a server redirect.
How do I fix a redirect loop?
Clear your cookies and cache, then trace the redirect path to find the two URLs that bounce against each other. Remove the conflicting rule, correct your SSL mode, and confirm your CMS uses the right domain and protocol. Retest in a private window to confirm the fix.
Is a redirect loop the same as a redirect chain?
No. A redirect chain passes through extra hops but reaches a final page, so it only slows loading. A redirect loop has no endpoint, so the page fails entirely with a too-many-redirects error.
To trace a broken redirect path and find the hop causing the loop, run the free redirect checker at linkutm.