Free tool

HTTP Status & Redirect Checker

Check any URL’s status code, follow every redirect, and get the exact code to fix it in Laravel, PHP, Node, Nginx, Apache and more.

Free No sign-up Shareable results
Overview

Free HTTP status code and redirect checker

Enter any URL and see what the server answers, every redirect on the way, what Google and AI bots get — and the exact code to fix what is wrong.

The checker follows a URL one hop at a time, like a browser, and records the status code, headers and timing of every step. It also tests the http, https, www and non-www versions of the site, compares six visitors from a normal browser to ClaudeBot, reads every SEO tag of the final page and its robots.txt, and writes the redirect code for Laravel, PHP, Node.js, Nginx, Apache, WordPress and eight more platforms. Jump to how to use it, all status codes, redirect code or the FAQ.

Checks Status, redirects, 4 versions, 6 bots
SEO analysis 35+ tags and rules
Code for 14 platforms
Bulk Up to 100 URLs
Price Free, no sign-up
How to use

How to check
a URL’s status code.

Five steps from a URL to a fixed redirect. Each step is explained in detail further down.

  1. 1 Input

    Enter the URL

    Type a domain like example.com or paste a full address like https://example.com/old-page. Without http:// the tool starts at https://.

  2. 2 Options

    Pick the options

    Choose who visits (browser or bot), and switch the 4-versions check, the bot comparison or bulk mode on or off.

  3. 3 Run

    Press Check URL

    The tool follows every redirect hop by hop and shows each step as it traces. Most checks finish in 1–5 seconds.

  4. 4 Read

    Read the report

    The final status, the SEO verdict, the redirect chain, the four versions, the bots and the full SEO analysis of the page.

  5. 5 Fix

    Copy the code

    Pick your platform in Get the code, copy the redirect, deploy it and press Re-check to confirm the fix.

Every option and button

What each part
of the tool does.

Open any item to see what it is for and when to use it.

The report

What every part
of the result means.

The report is built from eight blocks. This is what each one tells you.

Final status & SEO verdict

The big coloured box is the status of the last URL: green 2xx, purple 3xx, orange 4xx, red 5xx. Next to it the final URL, the number of redirects, the total time and a verdict — Good, Needs attention or Problem — with every reason listed.

Redirect chain

Every request in order: the URL, its status, the time it took, the server, the HTTP version, the IP and the Location it points to. Problem hops are marked, for example a temporary 302 or a second redirect that should be removed.

4 Versions Check

The http / https / www / non-www versions in a grid. The banner on top says whether all four end on one canonical URL, or what to fix.

Bot Comparison

Status, final URL and time for Desktop, Mobile, Googlebot, Bingbot, GPTBot and ClaudeBot. The badge answers “Can AI crawlers see this page?” with Yes, Partly or No.

Get the code

Choose what to do (redirect one URL, force HTTPS, remove www, add www, 410 Gone), the redirect type (301, 302, 307, 308) and your platform. The From and To fields are filled from your check. Copy, deploy, re-check.

Status Code Explanation

What the final status means in plain words, and its SEO impact — Good, Neutral or Bad — so you know whether to act.

SEO Analysis

A score, a Google result preview, a share preview, and 35+ checks in four groups: Basics, Content, Social sharing and Technical. Everything missing says Not found and shows the code to add, with a Copy button.

Bulk results

One row per URL with filter chips and counts, search, sort, an in-place report for every row, a progress bar with time left, and a CSV of everything.

User-Agent

Who is visiting:
the six user agents.

The User-Agent is a line of text every visitor sends to say who it is. The tool sends the real, published string of each visitor.

Desktop

Desktop browser

Chrome on Windows. The default — what most people see on a computer.

Mobile

Mobile browser

Chrome on Android. Use it when a site sends phones to an m. subdomain or an app page.

Google

Googlebot

Google’s smartphone crawler, the one that indexes your site (mobile-first indexing). If Googlebot gets an error, your page drops out of Google.

Bing

Bingbot

Microsoft Bing’s crawler. Bing results also power DuckDuckGo, Yahoo and parts of ChatGPT search.

OpenAI

GPTBot

OpenAI’s crawler. If it is blocked, ChatGPT knows less about your site.

Anthropic

ClaudeBot

Anthropic’s crawler for Claude. Shows whether your firewall or robots.txt lets it in.

Some sites verify Googlebot and other bots by their IP address. Such a site may answer our request differently from the real bot — the bot comparison then shows how the server treats the User-Agent alone.

Status classes

The five kinds
of status codes.

The first digit tells you what kind of answer it is. The tool colours them the same way everywhere.

1xx

Information

The request was received and continues. Browsers handle these by themselves; you rarely see them.

2xx

Success

The page was delivered. 200 OK is what every page you want in Google should answer.

3xx

Redirect

The content is somewhere else; the Location header says where. 301 and 308 are permanent, 302 and 307 temporary.

4xx

Client error

The request cannot be served: the page does not exist (404), was removed (410), is forbidden (403) or rate-limited (429).

5xx

Server error

The website broke while answering: code crash (500), upstream down (502), overloaded (503) or too slow (504).

All status codes

Every HTTP status
code explained.

What each code means, what it does for SEO and when you should use it.

100 Continue
What it means
The server got the headers; the client may send the body.
SEO impact
None
Use it when
Handled by the server automatically.
101 Switching Protocols
What it means
The connection switches, e.g. to WebSocket.
SEO impact
None
Use it when
Opening a WebSocket.
103 Early Hints
What it means
Lets the browser preload CSS and fonts before the real answer.
SEO impact
Faster pages
Use it when
Your server or CDN supports it.
200 OK
What it means
The page was found and returned.
SEO impact
Good: indexable
Use it when
Every normal page.
201 Created
What it means
A new resource was created.
SEO impact
None
Use it when
An API created something.
202 Accepted
What it means
The request was accepted and is processed later.
SEO impact
None
Use it when
Background jobs in an API.
204 No Content
What it means
Success, but nothing to send back.
SEO impact
Nothing to index
Use it when
APIs, tracking pixels.
206 Partial Content
What it means
Part of a file, as requested (Range).
SEO impact
None
Use it when
Video and large downloads.
301 Moved Permanently
What it means
The page moved for good to the Location URL.
SEO impact
Good: passes ranking
Use it when
URL changes, HTTPS, www moves, domain moves.
302 Found
What it means
Temporary redirect.
SEO impact
Neutral: old URL may stay indexed
Use it when
A short-term move, A/B tests, login redirects.
303 See Other
What it means
Go to another page with GET.
SEO impact
Neutral
Use it when
After a form is submitted.
304 Not Modified
What it means
The cached copy is still current.
SEO impact
Good: saves crawl budget
Use it when
Caching with ETag / Last-Modified.
307 Temporary Redirect
What it means
Like 302, but keeps the method (POST stays POST).
SEO impact
Neutral
Use it when
Temporary moves of APIs and forms. Also shown by browsers for HSTS.
308 Permanent Redirect
What it means
Like 301, but keeps the method.
SEO impact
Good: passes ranking
Use it when
Permanent moves of APIs; Vercel and Next.js use it.
400 Bad Request
What it means
The request is malformed.
SEO impact
Bad: not indexed
Use it when
Invalid input in an API.
401 Unauthorized
What it means
Login needed.
SEO impact
Not indexed (fine for private pages)
Use it when
Members-only areas.
403 Forbidden
What it means
The server refuses access.
SEO impact
Bad if bots get it by mistake
Use it when
Blocked folders. Check your firewall if bots get 403.
404 Not Found
What it means
No page at this URL.
SEO impact
Bad: dropped from Google
Use it when
Truly missing pages. Redirect moved content with 301.
405 Method Not Allowed
What it means
The URL exists, not for this method.
SEO impact
None
Use it when
A POST-only endpoint opened with GET.
406 Not Acceptable
What it means
No format matches the Accept header.
SEO impact
Bad
Use it when
Rare; usually a misconfigured security rule.
408 Request Timeout
What it means
The client was too slow.
SEO impact
Temporary
Use it when
Server-side timeouts.
409 Conflict
What it means
The request conflicts with the current state.
SEO impact
None
Use it when
APIs, e.g. a duplicate record.
410 Gone
What it means
Removed on purpose, not coming back.
SEO impact
Removed from Google faster than 404
Use it when
Deleted products and pages with no replacement.
413 Content Too Large
What it means
The upload is too big.
SEO impact
None
Use it when
Upload limits (client_max_body_size).
414 URI Too Long
What it means
The URL is too long.
SEO impact
Bad
Use it when
Endless query strings or redirect loops adding parameters.
415 Unsupported Media Type
What it means
The body format is not accepted.
SEO impact
None
Use it when
APIs.
422 Unprocessable Content
What it means
Valid format, invalid data.
SEO impact
None
Use it when
Form and API validation errors.
429 Too Many Requests
What it means
Rate limit reached.
SEO impact
Bad if it lasts
Use it when
Rate limiting; send Retry-After.
451 Unavailable For Legal Reasons
What it means
Blocked for legal reasons.
SEO impact
Not indexed there
Use it when
Legal or regional blocks.
500 Internal Server Error
What it means
The site’s code crashed.
SEO impact
Bad
Use it when
Never on purpose: check the error log.
501 Not Implemented
What it means
The server does not support the method.
SEO impact
Bad
Use it when
Unsupported HTTP methods.
502 Bad Gateway
What it means
A proxy got no valid answer from the app.
SEO impact
Bad if it lasts
Use it when
Never on purpose: the app server is down.
503 Service Unavailable
What it means
Overloaded or in maintenance.
SEO impact
Neutral for short periods
Use it when
Planned maintenance, with Retry-After.
504 Gateway Timeout
What it means
The app answered too slowly.
SEO impact
Bad
Use it when
Never on purpose: find the slow request.
505 HTTP Version Not Supported
What it means
The HTTP version is not supported.
SEO impact
Bad
Use it when
Very old or broken clients.
520–526 Cloudflare errors
What it means
Cloudflare could not reach your origin server correctly (empty answer, down, timeout, SSL).
SEO impact
Bad
Use it when
Check the origin server, its firewall and its certificate.

The Status Code Explanation card in the report shows the meaning and SEO impact of the code your URL returns.

Redirect types

301, 302, 307 or 308:
which redirect to use.

Choose by two questions: is the move permanent, and must a POST stay a POST?

301 Moved Permanently

The standard permanent redirect. Search engines move the old URL’s ranking and links to the new one and replace it in their index. Use it for changed URLs, HTTP → HTTPS, www → non-www and domain moves.

  • →Permanent
  • →Passes ranking
  • →Browsers cache it

302 Found

A temporary redirect. Google may keep the old URL indexed because you said it is coming back. Use it for short campaigns, geo or language detection, and login redirects — not for permanent moves.

  • →Temporary
  • →Old URL stays indexed
  • →Not cached

307 Temporary Redirect

The same as 302, but the browser must repeat the same method and body. Use it for APIs and forms. When you see a 307 that you never set, it is usually the browser applying HSTS.

  • →Temporary
  • →Keeps POST

308 Permanent Redirect

The same as 301, but keeps the method and body. Google treats it like a 301. Next.js and Vercel use 308 by default.

  • →Permanent
  • →Keeps POST
  • →Passes ranking

Meta refresh and JavaScript

A redirect inside the page (<meta http-equiv="refresh"> or location.href) is slower and less clear for search engines. Use a server redirect whenever you can — the SEO Analysis flags meta refreshes.

  • →Avoid for SEO

How many redirects are OK?

One. Every extra hop costs time and can lose link value; Googlebot follows up to 10 and then gives up. If the chain shows http → https → www, change the first rule so it sends visitors straight to the final address.

  • →Aim for 1 hop
  • →Google stops after 10
301 redirect code

301 redirect code
for every platform.

Redirect /old-page to https://example.com/new-page. Replace the two addresses with yours — or use Get the code in the tool, which fills them in for you.

Laravel · routes/web.php
use Illuminate\Support\Facades\Route;

Route::redirect('/old-page', 'https://example.com/new-page', 301);
// or: Route::permanentRedirect('/old-page', '/new-page');

Run php artisan route:clear after deploying if you cache routes.

PHP · top of old-page.php
<?php
header('Location: https://example.com/new-page', true, 301);
exit;

Must come before any HTML or echo.

Node.js (Express) · app.js
app.get('/old-page', (req, res) => {
  res.redirect(301, 'https://example.com/new-page');
});

Add it before your other routes and express.static().

Next.js · next.config.js
module.exports = {
  async redirects() {
    return [
      { source: '/old-page', destination: '/new-page', statusCode: 301 },
    ];
  },
};

permanent: true instead of statusCode sends a 308.

Nginx · inside server { }
location = /old-page {
    return 301 https://example.com/new-page;
}

Then: sudo nginx -t && sudo systemctl reload nginx

Apache · .htaccess
Redirect 301 /old-page https://example.com/new-page

Uses mod_alias, available on almost every shared host.

WordPress · functions.php
add_action('template_redirect', function () {
    if (untrailingslashit(wp_parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)) === '/old-page') {
        wp_redirect('https://example.com/new-page', 301);
        exit;
    }
});

Put it in a child theme or a code-snippets plugin. A redirect plugin works too.

Django · views.py + urls.py
from django.urls import path
from django.views.generic.base import RedirectView

urlpatterns = [
    path('old-page', RedirectView.as_view(url='https://example.com/new-page', permanent=True)),
]

permanent=True sends 301, False sends 302.

Flask · app.py
from flask import redirect

@app.route('/old-page')
def old_page():
    return redirect('https://example.com/new-page', code=301)
Ruby on Rails · config/routes.rb
get '/old-page', to: redirect('https://example.com/new-page', status: 301)
ASP.NET / IIS · web.config
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Old page" stopProcessing="true">
        <match url="^old-page$" />
        <action type="Redirect" url="https://example.com/new-page" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Needs the IIS URL Rewrite module.

Cloudflare Worker
export default {
  async fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === '/old-page') {
      return Response.redirect('https://example.com/new-page', 301);
    }
    return fetch(request);
  },
};

Without code: Rules → Redirect Rules → Single Redirects.

Vercel · vercel.json
{
  "redirects": [
    { "source": "/old-page", "destination": "/new-page", "statusCode": 301 }
  ]
}
Netlify · _redirects
/old-page  /new-page  301

Put the file in your publish folder.

HTTPS & www

Force HTTPS and
one www version.

The two redirects every site needs. Afterwards the 4 Versions Check should say “All versions point to one canonical URL”.

Nginx · HTTP → HTTPS and www → non-www in one hop
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    return 301 https://example.com$request_uri;
}

The certificate must cover both example.com and www.example.com.

Apache · .htaccess (HTTPS + remove www)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

One rule, one hop: http://www, http:// and https://www all go straight to https://example.com.

Laravel · force HTTPS (bootstrap/app.php, Laravel 11+)
->withMiddleware(function (Middleware $middleware) {
    $middleware->trustProxies(at: '*'); // behind Cloudflare or a load balancer
    $middleware->web(prepend: \App\Http\Middleware\ForceHttps::class);
})

// app/Http/Middleware/ForceHttps.php
public function handle(Request $request, Closure $next)
{
    if (! $request->secure() && app()->isProduction()) {
        return redirect()->secure($request->getRequestUri(), 301);
    }
    return $next($request);
}
Express · HTTPS + remove www
app.set('trust proxy', true);
app.use((req, res, next) => {
  const host = req.headers.host || '';
  if (req.secure && !host.startsWith('www.')) return next();
  res.redirect(301, `https://${host.replace(/^www\./, '')}${req.originalUrl}`);
});
SEO Analysis

Every SEO check
in the report.

What the SEO Analysis looks at, the standard it checks against, and what to add when it says Not found.

Title tag The clickable headline in Google.
Standard
30–60 characters, one per page
Example
<title>Main Keyword – Brand</title>
Meta description The text under the title in Google.
Standard
70–160 characters, one per page
Example
<meta name="description" content="…">
Canonical URL The main address of this content.
Standard
One, usually pointing to itself
Example
<link rel="canonical" href="https://example.com/page">
Meta robots Index / follow rules for this page.
Standard
Not set = index, follow
Example
<meta name="robots" content="noindex">
Meta googlebot The same rules for Google only.
Standard
Optional
Example
<meta name="googlebot" content="nosnippet">
X-Robots-Tag The robots rules as an HTTP header.
Standard
Optional; good for PDFs and images
Example
X-Robots-Tag: noindex
Viewport Makes the page fit phones.
Standard
Required for mobile-first indexing
Example
<meta name="viewport" content="width=device-width, initial-scale=1">
Language The page language on <html>.
Standard
Set it
Example
<html lang="en">
Charset How the text is encoded.
Standard
UTF-8
Example
<meta charset="utf-8">
Meta keywords A list of keywords.
Standard
Ignored by Google; not needed
Meta refresh A redirect inside the page.
Standard
Avoid; use a 301
H1 heading The main heading.
Standard
Exactly one
Example
<h1>Main topic</h1>
H2 / H3 Sub-headings.
Standard
Use them to structure content
Example
<h2>Section</h2>
Word count Visible words on the page.
Standard
300+ for pages that should rank
Image alt text Text that describes an image.
Standard
Every content image
Example
<img src="a.jpg" alt="What it shows">
Links Internal, external and nofollow links.
Standard
At least some internal links
Example
<a href="/related-page">
og:title / og:description
What it is
Title and text when shared on Facebook, LinkedIn, WhatsApp.
Standard
Set both
Example
<meta property="og:title" content="…">
og:image The picture of a shared link.
Standard
1200 × 630 px
Example
<meta property="og:image" content="https://…/share.jpg">
og:url / og:type / og:site_name Address, type and site name for shares.
Standard
Set them
Example
<meta property="og:type" content="website">
twitter:card How a link looks on X.
Standard
summary_large_image
Example
<meta name="twitter:card" content="summary_large_image">
twitter:title / description / image X-specific texts.
Standard
Optional: X falls back to og: tags
Example
<meta name="twitter:title" content="…">
HTTPS Secure connection.
Standard
Required
HSTS header Tells browsers to always use HTTPS.
Standard
Recommended
Example
Strict-Transport-Security: max-age=31536000
Hreflang Language versions of the page.
Standard
Multilingual sites; include x-default
Example
<link rel="alternate" hreflang="de" href="…">
Structured data JSON-LD schema for rich results.
Standard
Valid JSON, a matching type
Example
<script type="application/ld+json">…
Favicon
What it is
The small icon in tabs and Google results.
Standard
Set it
Example
<link rel="icon" href="/favicon.ico">
Apple touch icon Icon when saved to a phone home screen.
Standard
Optional
Example
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
robots.txt Crawl rules for the whole site.
Standard
Should exist and answer 200
Example
User-agent: * / Allow: /
XML sitemap
What it is
The list of your URLs for search engines.
Standard
Listed in robots.txt
Example
Sitemap: https://example.com/sitemap.xml
Crawl access
What it is
Whether robots.txt lets Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot and Google-Extended crawl this URL.
Standard
Googlebot must be allowed
Example
Disallow: /private/
Compression gzip or Brotli for text.
Standard
On
Example
gzip on;
HTML size Size of the page’s HTML.
Standard
Under 500 KB
Server response time
What it is
Time to the first byte of the final page.
Standard
Under 800 ms

Above the checks you also get a score (the share of passed checks), a Google preview of how your title and description look in search, and a share preview with your og:image.

SEO tags

A complete
SEO head and robots.txt.

Copy these as a starting point and replace the example texts and addresses.

HTML <head> with every SEO tag
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Main Keyword – Brand Name</title>
  <meta name="description" content="A clear 120–160 character summary of the page with its main keyword.">
  <link rel="canonical" href="https://example.com/page">
  <link rel="icon" href="/favicon.ico" sizes="any">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">

  <!-- language versions (multilingual sites only) -->
  <link rel="alternate" hreflang="en" href="https://example.com/page">
  <link rel="alternate" hreflang="x-default" href="https://example.com/page">

  <!-- Open Graph: Facebook, LinkedIn, WhatsApp -->
  <meta property="og:type" content="website">
  <meta property="og:site_name" content="Brand Name">
  <meta property="og:title" content="Main Keyword – Brand Name">
  <meta property="og:description" content="The same summary for social shares.">
  <meta property="og:url" content="https://example.com/page">
  <meta property="og:image" content="https://example.com/images/share-1200x630.jpg">

  <!-- X (Twitter) -->
  <meta name="twitter:card" content="summary_large_image">
</head>
Structured data (JSON-LD)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "Main Keyword – Brand Name",
  "url": "https://example.com/page",
  "publisher": {
    "@type": "Organization",
    "name": "Brand Name",
    "logo": "https://example.com/logo.png"
  }
}
</script>

Test it with Google’s Rich Results Test before publishing.

robots.txt (site root)
User-agent: *
Disallow: /admin/
Allow: /

# block AI training crawlers (optional)
User-agent: GPTBot
Disallow: /

Sitemap: https://example.com/sitemap.xml

Disallow stops crawling, not indexing. To keep a page out of Google, use noindex and let it be crawled.

Nginx · gzip compression
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/css application/javascript application/json image/svg+xml text/plain application/xml;
Fix common problems

10 redirect problems
and how to fix them.

What the tool finds most often, and the fix for each.

FAQ

Questions
people ask.

A three-digit number the server sends with every answer. It says whether the page was found (200), moved (301, 302), missing (404) or broken (500). Browsers and search engines decide what to do based on it.

Last updated: · Built by Manamil Dev.