SRamoras/odin-eye

React dev tool that marks accessibility, SEO and layout issues directly on your page while you develop.

TypeScript

2

94 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built OdinEye, a dev tool that marks accessibility, SEO and layout issues on your page while you code (r/reactjs)

Hi everyone! I just published my first open-source library, OdinEye It’s a React component that marks accessibility, SEO and layout issues right on the page while you’re coding (missing alt texts, buttons without a name, broken images, that kind of thing) and explains how to fix each one. You add…

0

Oct 11, 2026

README

OdinEye

See accessibility, SEO and layout problems on your page while you build it.

CI npm version bundle size license

Website · Playground · npm · Report an issue


OdinEye marking issues on a live page


OdinEye is a React component that checks the page you are working on and marks problems on the elements that have them: an image without alt text, a button without a name, an element that makes the page scroll sideways. Hover a marked element to see what is wrong and how to fix it, or open the panel to see everything at once.

It runs in your app during development, so you see issues while you write the code instead of in an audit afterwards.

Features

  • Issues are outlined on the page, with a badge on each element.
  • Hovering a marked element explains the problem and the fix.
  • A panel lists every issue by category. Clicking one scrolls to it.
  • Checks run again after route changes, DOM updates and image loads.
  • No configuration and no browser extension.
  • Renders nothing on the server, so it works with SSR and static generation.
  • The overlay's styles are scoped and the page stays clickable.

Quick start

npm install -D odin-eye

Then render it once, behind a development check:

import { OdinEye } from "odin-eye";

export default function App() {
  return (
    <>
      {/* your app */}
      {process.env.NODE_ENV === "development" && <OdinEye />}
    </>
  );
}

That's it. Open your app and look at the bottom right corner.

Setup for Next.js (App and Pages Router), Vite, Remix / React Router and Gatsby is in the package README.

Works with

ReactNext.jsViteRemix / React RouterGatsbyTypeScript
18 and upApp and Pages RouterReact templates✓✓Types included

What it checks

25 checks across three categories.

Accessibility (9)
CheckSeverity
Button without accessible nameError
Link without accessible nameError
Image without alt textError
Form field without labelError
Duplicate idError
Page without languageError
Page without titleError
Skipped heading levelWarning
Multiple <h1> headingsWarning
SEO (10)
CheckSeverity
Missing meta descriptionError
Missing viewport meta tagError
Page without <h1>Error
Meta description lengthWarning
Page title lengthWarning
Missing canonical linkWarning
Missing Open Graph tagsWarning
Link without destinationWarning
Generic link textWarning
Page is set to noindexWarning
UI and layout (6)
CheckSeverity
Element wider than the pageError
Broken imageError
Distorted imageWarning
Image larger than neededWarning
Touch target too smallWarning
Text too smallWarning

Want to see them fire? The playground has a wrong and a right example of every check.

Repository

This is an npm workspaces monorepo.

odin-eye/
├── packages/
│   └── odin-eye/     the library published to npm
└── apps/
    └── web/          the website and playground (Next.js)

Development

git clone https://github.com/SRamoras/odin-eye.git
cd odin-eye
npm install

# rebuild the library on every change
cd packages/odin-eye && npm run dev

# in another terminal, run the website on localhost:3000
cd apps/web && npm run dev

Contributing

Found a false positive, a problem OdinEye missed, or have an idea for a new check? Open an issue; there is a template for each case.

Pull requests are welcome. Read the contributing guide first: it covers running the project, testing in your own app and adding a check.

License

MIT © Diogo Silva

a11y
accessibility
developer-tools
devtools
react
seo
ui

SRamoras/odin-eye

React dev tool that marks accessibility, SEO and layout issues directly on your page while you develop.

TypeScript

2

94 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built OdinEye, a dev tool that marks accessibility, SEO and layout issues on your page while you code (r/reactjs)

Hi everyone! I just published my first open-source library, OdinEye It’s a React component that marks accessibility, SEO and layout issues right on the page while you’re coding (missing alt texts, buttons without a name, broken images, that kind of thing) and explains how to fix each one. You add…

0

Oct 11, 2026

README

OdinEye

See accessibility, SEO and layout problems on your page while you build it.

CI npm version bundle size license

Website · Playground · npm · Report an issue


OdinEye marking issues on a live page


OdinEye is a React component that checks the page you are working on and marks problems on the elements that have them: an image without alt text, a button without a name, an element that makes the page scroll sideways. Hover a marked element to see what is wrong and how to fix it, or open the panel to see everything at once.

It runs in your app during development, so you see issues while you write the code instead of in an audit afterwards.

Features

  • Issues are outlined on the page, with a badge on each element.
  • Hovering a marked element explains the problem and the fix.
  • A panel lists every issue by category. Clicking one scrolls to it.
  • Checks run again after route changes, DOM updates and image loads.
  • No configuration and no browser extension.
  • Renders nothing on the server, so it works with SSR and static generation.
  • The overlay's styles are scoped and the page stays clickable.

Quick start

npm install -D odin-eye

Then render it once, behind a development check:

import { OdinEye } from "odin-eye";

export default function App() {
  return (
    <>
      {/* your app */}
      {process.env.NODE_ENV === "development" && <OdinEye />}
    </>
  );
}

That's it. Open your app and look at the bottom right corner.

Setup for Next.js (App and Pages Router), Vite, Remix / React Router and Gatsby is in the package README.

Works with

ReactNext.jsViteRemix / React RouterGatsbyTypeScript
18 and upApp and Pages RouterReact templates✓✓Types included

What it checks

25 checks across three categories.

Accessibility (9)
CheckSeverity
Button without accessible nameError
Link without accessible nameError
Image without alt textError
Form field without labelError
Duplicate idError
Page without languageError
Page without titleError
Skipped heading levelWarning
Multiple <h1> headingsWarning
SEO (10)
CheckSeverity
Missing meta descriptionError
Missing viewport meta tagError
Page without <h1>Error
Meta description lengthWarning
Page title lengthWarning
Missing canonical linkWarning
Missing Open Graph tagsWarning
Link without destinationWarning
Generic link textWarning
Page is set to noindexWarning
UI and layout (6)
CheckSeverity
Element wider than the pageError
Broken imageError
Distorted imageWarning
Image larger than neededWarning
Touch target too smallWarning
Text too smallWarning

Want to see them fire? The playground has a wrong and a right example of every check.

Repository

This is an npm workspaces monorepo.

odin-eye/
├── packages/
│   └── odin-eye/     the library published to npm
└── apps/
    └── web/          the website and playground (Next.js)

Development

git clone https://github.com/SRamoras/odin-eye.git
cd odin-eye
npm install

# rebuild the library on every change
cd packages/odin-eye && npm run dev

# in another terminal, run the website on localhost:3000
cd apps/web && npm run dev

Contributing

Found a false positive, a problem OdinEye missed, or have an idea for a new check? Open an issue; there is a template for each case.

Pull requests are welcome. Read the contributing guide first: it covers running the project, testing in your own app and adding a check.

License

MIT © Diogo Silva

a11y
accessibility
developer-tools
devtools
react
seo
ui

Project health

Latest release

0.4.5 · Oct 9, 2026

Releases this year

9