Warning Meta Refresh & How to Redirect an HTML Page
What a meta refresh tag does, its accessibility problems, and the three ways to redirect a webpage — server, JavaScript, or meta refresh.
A meta refresh is a <meta http-equiv="refresh"> tag that tells the browser to reload or navigate to a new URL after a set delay — a redirect implemented entirely in HTML, with no server configuration needed. The validator flags this tag anywhere it appears in the document, because it's rarely the best tool for the job (see below).
Example
<!-- Discouraged -->
<meta http-equiv="refresh" content="3;url=https://example.com/new-page">
<!-- Preferred: a real HTTP redirect from the server -->
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-pageThe content attribute holds two values separated by a semicolon: the delay in seconds before the browser acts (3 above), and the destination (url=...). Omit the url part entirely and it just reloads the current page after the delay instead of navigating anywhere.
How to redirect a webpage — three methods
| Method | How it works | Verdict |
|---|---|---|
| Server-side HTTP redirect (301/308) | The server responds with a 3xx status and a Location header before any page content loads. | Recommended — instant, no flash of old content, and the clearest possible signal to browsers and search engines. |
| Meta refresh | A <meta http-equiv="refresh"> tag in the page's own HTML, evaluated after the original page has already loaded. | Discouraged — see the accessibility and SEO issues below. |
| JavaScript redirect | window.location.href = "..." or window.location.replace("..."), run from a script. | Only for client-side-only apps with no server redirect option — invisible to users with JavaScript disabled, and slower than a server redirect since it waits for the page and script to load first. |
If you control the server or hosting platform at all — even a static host, most of which support redirect rules or config files — a real HTTP redirect is almost always available and is the right choice.
Why it matters
A meta refresh redirect happens entirely client-side, after the original page has already loaded — it bypasses the browser's normal navigation and history handling, which can make the back button behave unexpectedly (some browsers skip the redirecting page, others get stuck looping through it). For accessibility, an auto-redirect that fires before a screen-reader or low-vision user has finished reading the page is flagged directly by WCAG 2.2.1 (Timing Adjustable) unless the delay is long enough or the user can disable it. Search engines generally treat a meta refresh as a weaker signal than a real HTTP 3xx redirect, and can be slower to follow it or pass along ranking signals to the destination.
Frequently asked questions
What is meta refresh?
It's an HTML tag — <meta http-equiv="refresh" content="seconds;url=destination"> — that tells the browser to reload the page or navigate to a new URL after a delay, without any server involvement. It's a page-level redirect mechanism, as opposed to a server-level one.
What are the accessibility issues with meta refresh, and how do I fix them?
An automatic, timed page change can fire before a screen-reader user has finished hearing the page, or before a low-vision or motor-impaired user has finished reading or interacting with it — WCAG 2.2.1 requires that timing like this be adjustable, extendable, or removable by the user, which a plain meta refresh doesn't offer. The reliable fix is to stop using it: switch to a server-side 301/308 redirect, which removes the timing problem entirely rather than trying to make the delay 'long enough.'
Is a meta refresh ever acceptable?
It's sometimes used as a fallback when a real server-side redirect isn't available (e.g. a static host with no redirect rules), but a genuine HTTP 3xx redirect — configured at the server or CDN level — is the correct tool whenever it's an option.
What's the difference between a 301 and a meta refresh, for SEO?
A 301 (or 308) redirect is a clear, immediate instruction search engines follow and consolidate ranking signals through. A meta refresh requires the page to load first and is a much weaker, slower signal that search engines may not always honor the same way.