---
title: "Nuxt Link Checker v5.0.0"
description: "Release notes for v5.0.0 of Nuxt Link Checker."
canonical_url: "https://nuxtseo.com/docs/link-checker/releases/v5"
last_updated: "2026-05-06T18:46:30.754Z"
---

## Introduction

The v5 release adds [ESLint](https://eslint.org) integration for instant broken link feedback in your editor, migrates DevTools to a shared layer, and bumps internal dependencies.

## ⚠️ Breaking Changes

### Site Config v4

Nuxt Site Config is a module used internally by Nuxt Link Checker.

The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check
the [breaking changes](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0).

### DevTools Migration

The DevTools client has been migrated to `nuxtseo-layer-devtools`, a shared layer used across all Nuxt SEO modules. This means the DevTools panel is now consistent across modules and maintained in one place. No action is needed unless you were importing DevTools internals directly.

## 🔗 ESLint Integration

Broken links are typically only caught at build time or during development server navigation. The new ESLint integration gives you instant feedback directly in your editor by validating relative URLs against your app's known routes and sitemap data.

### `link-checker/valid-route`

Checks that relative URLs match a known vue-router route pattern. Uses radix3 for dynamic route matching and fuse.js for "did you mean?" typo suggestions.

**Severity:** `error`

```vue
<!-- ✅ /about exists as a page -->
<NuxtLink to="/about" />

<!-- ✅ matches /blog/:slug dynamic route -->
<NuxtLink to="/blog/my-post" />

<!-- ❌ no route matches /abot -->
<NuxtLink to="/abot" />
```

### `link-checker/valid-sitemap-link`

Checks that relative URLs exist in the sitemap. For dynamic routes, warns when sibling URLs exist in the sitemap but the linked URL does not.

**Severity:** `warn`

```vue
<!-- ✅ /blog/hello-world is in the sitemap -->
<NuxtLink to="/blog/hello-world" />

<!-- ⚠️ /blog/typo matches /blog/:slug but isn't in sitemap -->
<NuxtLink to="/blog/typo" />
```

### What Gets Checked

Both rules scan for relative URLs in:

- **Vue templates:** `<NuxtLink to="...">`, `<RouterLink to="...">`, `<a href="...">`
- **TypeScript/JavaScript:** `navigateTo('...')`, `router.push('...')`, `router.replace('...')`
- **Markdown:** `[text](/url)` link syntax (via processor)

External URLs, anchors, mailto/tel links, and dynamic bindings are automatically skipped.

### Zero Config with `@nuxt/eslint`

If you're using `@nuxt/eslint`, both rules are automatically registered via the `eslint:config:addons` hook. Zero-config.

For manual setup, import the standalone export:

```js
import linkCheckerPlugin from 'nuxt-link-checker/eslint'

export default [
  {
    files: ['**/*.vue', '**/*.ts'],
    plugins: {
      'link-checker': linkCheckerPlugin,
    },
    rules: {
      'link-checker/valid-route': 'error',
      'link-checker/valid-sitemap-link': 'warn',
    },
  },
]
```

See the [ESLint Integration guide](/guides/eslint) for full details including markdown support, skipping links, and configuration options.
