# Using `meta` `refresh` to create an instant client-side redirect

ID: H76

Technology: html

Type: Technique

## When to Use

HTML

## Description

The objective of this technique is to enable redirects on the client side without confusing the user. Redirects are preferably implemented on the server side (see Implementing automatic redirects on the server side instead of on the client side), but authors do not always have control over server-side technologies.

In HTML, one can use the `meta` element with the value of the `http-equiv` attribute set to `refresh` and the value of the `content` attribute set to `0` (meaning zero seconds), followed by the URI that the browser should request. It is important that the time-out is set to zero, to avoid that content is displayed before the new page is loaded. The page containing the redirect code should only contain information related to the redirect.

## Examples

### Instantly redirecting a page

    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Panucci's Pizza</title>
        <meta http-equiv="refresh" content="0; URL=https://planet-express.example.com">
      </head>
      <body>
        <p>This page has moved to <a href="https://planet-express.example.com">
           Planet Express</a>.</p>
      </body>
    </html>

## Tests

### Procedure

Find all `meta` elements in the document that contain the `http-equiv` attribute with value `refresh`, check that:

1. the `content` attribute has a number with a value of `0`, and
2. the number is followed by `;URL=anyURL` (where anyURL stands for the URI that should replace the current page).

### Expected Results

Steps #1 and #2 are true.

## Related Techniques

- G110

## Resources

- HTML - Refresh state (`http-equiv="refresh"`).
- Failure due to using `meta` `refresh` with a time-out.