Inspection Rules · Nuxt Link Checker · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/link-checker/getting-started/introduction)

[API](https://nuxtseo.com/docs/link-checker/api/config)

[Releases](https://nuxtseo.com/docs/link-checker/releases/v5)

Link Checker

- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v5.0.9

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/link-checker/getting-started/installation)
- [Troubleshooting](https://nuxtseo.com/docs/link-checker/getting-started/troubleshooting)

### Core Concepts

- [Inspection Rules](https://nuxtseo.com/docs/link-checker/guides/rules)
- [Link Checker DevTools](https://nuxtseo.com/docs/link-checker/guides/live-inspections)
- [Checking Links on Build](https://nuxtseo.com/docs/link-checker/guides/build-scans)
- [Exclude Links](https://nuxtseo.com/docs/link-checker/guides/exclude-links)
- [Exclude Pages](https://nuxtseo.com/docs/link-checker/guides/exclude-pages)
- [Generate Reports](https://nuxtseo.com/docs/link-checker/guides/generating-reports)
- [ESLint Integration](https://nuxtseo.com/docs/link-checker/guides/eslint)

Core Concepts

# Inspection Rules

[Copy for LLMs](https://nuxtseo.com/docs/link-checker/guides/rules.md)

The module runs 15 inspections covering broken links, SEO best practices, and accessibility. To disable any rule, add it to `skipInspections` in your config.

## [Rule Categories](#rule-categories)

| Category | Rules |
| --- | --- |
| Broken Links | `no-error-response`, `missing-hash`, `redirects` |
| SEO | `no-uppercase-chars`, `no-underscores`, `trailing-slash`, `no-whitespace`, `no-non-ascii-chars` |
| URL Structure | `absolute-site-urls`, `no-baseless`, `no-double-slashes`, `no-duplicate-query-params` |
| Accessibility | `link-text`, `no-missing-href`, `no-javascript` |

## [Disabling Rules](#disabling-rules)

To disable any rule, add it to `skipInspections`:

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: ['rule-name']
  }
})
```

## [Available Rules](#available-rules)

Rules are based on the [URL structure best practices for Google](https://developers.google.com/search/docs/crawling-indexing/url-structure).

| Rule | Description |
| --- | --- |
| [`absolute-site-urls`](#absolute-site-urls) | Checks for absolute links that are internal. |
| [`link-text`](#link-text) | Ensures link text is descriptive and meaningful. |
| [`missing-hash`](#missing-hash) | Checks for missing hashes in internal links. |
| [`no-baseless`](#no-baseless) | Checks for document relative links. |
| [`no-double-slashes`](#no-double-slashes) | Checks for double slashes in URLs. |
| [`no-duplicate-query-params`](#no-duplicate-query-params) | Checks for duplicate query parameters in URLs. |
| [`no-error-response`](#no-error-response) | Checks for error responses (4xx, 5xx) on links. |
| [`no-javascript`](#no-javascript) | Checks for JavaScript links. |
| [`no-missing-href`](#no-missing-href) | Ensures that `a` tags have an `href` attribute. |
| [`no-non-ascii-chars`](#no-non-ascii-chars) | Checks for non-ASCII characters. |
| [`no-underscores`](#no-underscores) | Checks for underscores. |
| [`no-uppercase-chars`](#no-uppercase-chars) | Checks for uppercase characters. |
| [`no-whitespace`](#no-whitespace) | Checks for whitespace. |
| [`redirects`](#redirects) | Warns when links respond with 301/302 redirects. |
| [`trailing-slash`](#trailing-slash) | Checks for trailing slashes on internal links. |

### [`absolute-site-urls`](#absolute-site-urls)

Checks for absolute links that are internal

Using relative paths is recommended as it makes your site more portable and easier to maintain.

❌ Invalid

✅ Valid

Disable Inspection

```
<NuxtLink to="https://example.com/about">my page</NuxtLink>
```

```
<NuxtLink to="/about">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'absolute-site-urls'
    ],
  },
})
```

### [`link-text`](#link-text)

Ensures link text is descriptive and meaningful.

Descriptive link text [provide improved accessibility](https://usability.yale.edu/web-accessibility/articles/links#link-text), allowing screen readers to better understand the context of the link. It flags non-descriptive link text such as "click here", "click this", "this", "learn more", "go", "here", "start", "right here", "more", and similar.

❌ Invalid

✅ Valid

Disable Inspection

```
<NuxtLink to="/about">click here</NuxtLink>
```

```
<NuxtLink to="/about">About</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'link-text'
    ],
  },
})
```

### [`missing-hash`](#missing-hash)

Checks for missing [Document Fragments](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks#document_fragments) for internal links.

Having valid hashes ensures that users are navigated to the correct section of the page, improving the user experience and accessibility.

❌ Invalid

✅ Valid

Disable Inspection

```
<div id="valid-anchor"></div>
<NuxtLink to="#valid">my page</NuxtLink>
```

```
<div id="valid"></div>
<NuxtLink to="#valid">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'missing-hash'
    ],
  },
})
```

### [`no-baseless`](#no-baseless)

Document relative links are valid but can cause SEO maintenance issues when moving around your content.

It's recommended to use root relative links to avoid these issues.

❌ Invalid

✅ Valid

Disable Inspection

```
<NuxtLink to="link">my page</NuxtLink>
```

```
<NuxtLink to="/link">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-baseless'
    ],
  },
})
```

### [`no-double-slashes`](#no-double-slashes)

Checks for double slashes in URLs.

Double slashes in URLs can cause canonicalization issues and can lead to duplicate content.

❌ Invalid

✅ Valid

Disable Inspection

```
<NuxtLink to="/link//">my page</NuxtLink>
```

```
<NuxtLink to="/link/">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-double-slashes'
    ],
  },
})
```

### [`no-duplicate-query-params`](#no-duplicate-query-params)

Checks for duplicate query parameters in URLs.

Duplicate query parameters can cause issues with caching and can lead to duplicate content.

❌ Invalid

✅ Valid

Disable Inspection

```
<NuxtLink to="/link?param=1&param=2">my page</NuxtLink>
```

```
<NuxtLink to="/link?param=1">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-duplicate-query-params'
    ],
  },
})
```

### [`no-error-response`](#no-error-response)

Checks for error responses [(4xx, 5xx)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) on links.

Ensuring that links do not lead to error responses improves the user experience and improves your sites crawlability. For internal links, the module will suggest similar pages when a match is found. External links require `fetchRemoteUrls: true` to be checked.

Invalid

Valid

Disable Inspection

```
<NuxtLink to="/broken-link">my page</NuxtLink>
```

```
<NuxtLink to="/valid-link">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-error-response'
    ],
  },
})
```

### [`no-javascript`](#no-javascript)

Checks for JavaScript links.

JavaScript links provide poor user experience as they override the default browser behaviour.

It's recommended to use a `<button type="button">` if you need an on click event.

Invalid

Valid

Disable Inspection

```
<a href="javascript:doSomething()">my page</a>
```

```
<button type="button" @click="doSomething()">my page</button>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-javascript'
    ],
  },
})
```

### [`no-missing-href`](#no-missing-href)

Ensures that links have an `href` attribute.

Having an `href` attribute is required for links to be accessible and usable. If you need a an anchor that doesn't navigate, use a `<button>` instead or the `role="button"` attribute.

Invalid

Valid

Disable Inspection

```
<a>my page</a>
```

```
<a href="/link">my page</a>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-missing-href'
    ],
  },
})
```

### [`no-non-ascii-chars`](#no-non-ascii-chars)

Checks for non-ASCII characters in URLs.

Non-ASCII characters can cause issues with encoding and can lead to broken links.

Invalid

Valid

Disable Inspection

```
<NuxtLink to="/my-ページ">my page</NuxtLink>
```

```
<NuxtLink to="/my-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-non-ascii-chars'
    ],
  },
})
```

### [`no-underscores`](#no-underscores)

Checks for underscores in URLs.

Underscores are not recommended in URLs as they can cause issues with readability and SEO.

Invalid

Valid

Disable Inspection

```
<NuxtLink to="/my_page">my page</NuxtLink>
```

```
<NuxtLink to="/my-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-underscores'
    ],
  },
})
```

### [`no-uppercase-chars`](#no-uppercase-chars)

Checks for uppercase characters in URLs.

Uppercase characters are not recommended in URLs as they can cause issues with readability and SEO.

Invalid

Valid

Disable Inspection

```
<NuxtLink to="/MyPage">my page</NuxtLink>
```

```
<NuxtLink to="/my-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-uppercase-chars'
    ],
  },
})
```

### [`no-whitespace`](#no-whitespace)

Checks for whitespace in URLs.

Whitespace in URLs can cause issues with encoding and can lead to broken links.

Invalid

Valid

Disable Inspection

```
<NuxtLink to="/my page">my page</NuxtLink>
```

```
<NuxtLink to="/my-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'no-whitespace'
    ],
  },
})
```

### [`redirects`](#redirects)

Warns when a link responds with a 301 or 302 redirect.

Redirects use up your crawl budget and increase loading times. It's recommended to link directly to the final URL when possible.

Invalid

Valid

Disable Inspection

```
<!-- Links to a URL that redirects to /new-page -->
<NuxtLink to="/old-page">my page</NuxtLink>
```

```
<NuxtLink to="/new-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'redirects'
    ],
  },
})
```

### [`trailing-slash`](#trailing-slash)

Checks that internal links all either have or don't have a trailing slash depending on your configuration.

Inconsistent trailing slashes can cause issues with canonicalization and can lead to duplicate content.

The behavior depends on the `siteConfig.trailingSlash` setting. The example below assumes trailing slashes are disabled, which is the default.

Invalid

Valid

Disable Inspection

```
<!-- trailing slashes disabled (default) -->
<NuxtLink to="/my-page/">my page</NuxtLink>
```

```
<NuxtLink to="/my-page">my page</NuxtLink>
```

```
export default defineNuxtConfig({
  linkChecker: {
    skipInspections: [
      'trailing-slash'
    ],
  },
})
```

[Edit this page](https://github.com/harlan-zw/nuxt-link-checker/edit/main/docs/content/2.guides/0.rules.md)

[Markdown For LLMs](https://nuxtseo.com/docs/link-checker/guides/rules.md)

Did this page help you?

[Troubleshooting Solve common link checking issues and create reproductions for bug reports.](https://nuxtseo.com/docs/link-checker/getting-started/troubleshooting) [Link Checker DevTools See link validation errors in real-time during development with Nuxt DevTools integration.](https://nuxtseo.com/docs/link-checker/guides/live-inspections)

On this page

- [Rule Categories](#rule-categories)
- [Disabling Rules](#disabling-rules)
- [Available Rules](#available-rules)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Nuxt SEO Pro")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/pro/docs/getting-started/mcp-setup)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)