TrueURL

Free redirect tool

Meta Refresh Checker

Not every redirect is an HTTP status code. TrueURL reads the HTML of each page in the chain and finds meta refresh tags and JavaScript redirects, with their target URL and delay.

What is a meta refresh redirect?

A meta refresh is an HTML tag that tells the browser to load another URL after a delay in seconds:

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

With a delay of 0 it behaves like a normal redirect. With a longer delay, visitors see the page first, as on old "you are being redirected" pages. JavaScript redirects do the same job with code such as location.href = '...' or location.replace('...'). Both are client-side redirects: the server answers 200 OK and the browser does the redirecting.

How TrueURL detects client-side redirects

For every HTML response with a 2xx status, TrueURL scans the first 256 KB of the page for a meta refresh tag and for simple, unconditional JavaScript redirects. A Refresh HTTP header, which works like a meta refresh, is detected too. When it finds one, it shows the tag or script snippet, the resolved target URL and the delay, labels the hop as meta refresh or JavaScript, and continues the chain from the target. A refresh that only reloads the same page isn't a redirect and is ignored.

You can turn off following either type in Advanced Settings to look at the page itself. TrueURL doesn't execute JavaScript: it reads the scripts in the page and recognises redirects to a fixed URL that always run when the page loads, either immediately or in a top-level setTimeout. Redirects that depend on a condition, such as a click, a consent choice or the screen size, or that build the target URL in code aren't detected. Use GET rather than HEAD, because HEAD responses have no body to scan.

How search engines treat client-side redirects

  • Instant meta refresh (delay 0): Google treats it as a permanent redirect, like a 301.
  • Delayed meta refresh: treated as a temporary redirect, so the original URL tends to stay indexed.
  • JavaScript redirects: Google only sees them after rendering the page, which can happen well after crawling. Many other crawlers and most link preview bots don't run JavaScript at all.

Google recommends server-side redirects wherever you can configure them, with meta refresh as the fallback, for example on static hosting that can't send a 301.

Accessibility and user experience

Timed redirects are an accessibility problem: people using screen readers, or who simply read slowly, lose their place when the page changes unexpectedly. WCAG lists a timed meta refresh as a failure (F40), while an instant redirect with a delay of 0 is an accepted technique (H76).

If you have to redirect in HTML, use a delay of 0, add a canonical tag pointing to the new URL, and include a visible link to it in the page for visitors whose browser doesn't follow the refresh.

Guides

Frequently asked questions

Does a meta refresh pass SEO value like a 301?

Google treats an instant meta refresh (delay 0) as a permanent redirect, so in practice it works much like a 301. A delayed refresh counts as temporary. Other crawlers may handle meta refresh less reliably, so use a server-side 301 whenever your hosting allows it.

Why does my redirect checker show 200 when the page redirects in my browser?

The redirect happens in the page's HTML or JavaScript, not in the HTTP response. Tools that only follow status codes, such as curl -L, stop at the 200 page. TrueURL scans the page content and shows the client-side redirect as a hop of its own.

What delay should a meta refresh use?

0, if the goal is to redirect. Any delay makes it a temporary redirect for Google, keeps visitors waiting and causes accessibility problems. A delay only makes sense on a page that has to show a message first, and that page should also have a clear link to continue.

Can TrueURL detect every JavaScript redirect?

No, only simple, unconditional ones with a fixed target URL in the page's HTML, such as location.href = '...', window.location = '...' or location.replace('...'), also inside a top-level setTimeout. Redirects in external script files, behind conditions, triggered by user actions or with a computed URL need a real browser to run. If the chain stops on a page that you know redirects, that's probably why.

Why would a site use a meta refresh instead of a 301?

Usually because it can't send HTTP redirects: static hosting without redirect rules, a page builder or an old CMS. Some link shorteners and click trackers also use HTML redirects so they can run analytics scripts first or control the referrer the destination sees.

Does a HEAD request detect meta refresh?

No. A HEAD response has headers but no body, so there is no HTML to scan. TrueURL warns you when you check with HEAD; use GET for this tool.