I wanted to move off Comet, Perplexity’s browser. I only used it because I had a free year of Perplexity’s subscription, and even then, barely. I didn’t want Chrome or Firefox. I went with Safari, because I had never really given it a fair try.
I got my most used extensions back, except one. Detailed SEO, which checks a page’s SEO, only exists for Chrome and Firefox.
I started looking around for a replacement. At some point I broke out of that pattern and asked myself why I didn’t just build one.
So I built it. It’s called Loupe SEO and, for the way I use it, it works better than Detailed. The data is easier to read, and there’s more information.
When I say I built it, that’s a figure of speech. It was purely vibe coded. My AI agent, Hermes, wrote all of the code in an hour or two. All I did was the setup on my Mac. Installing Xcode, adding my Apple ID to it, sorting out the signing certificate and turning the extension on in Safari.
What’s in it
Loupe SEO checks the SEO of whatever page you have open. It covers what Detailed does, with code written from scratch and nothing taken from Detailed. Everything sits in tabs.
- Overview. A verdict on whether the page can show up in Google, and what’s blocking it.
- Headings. Every heading on the page, H1 to H6, with the problems, like a missing H1 or a skipped level.
- Links. Internal, external, nofollow, and a CSV export.
- Images. Missing alt text, and images served at more than twice the width they display at.
- Schema and hreflang. The page’s structured data, and its versions in other languages, each one checked.
- Social. How the page looks when someone shares it on Facebook, LinkedIn or X.
- Tools. Switch the user agent to see what a site serves GPTBot, ClaudeBot or PerplexityBot, the AI crawlers. And pull Google’s “People also ask” questions.
A right-click opens the page in Ahrefs, Semrush, PageSpeed and other tools. No tracking. Everything runs in your browser.
Screenshot to come Loupe SEO in Safari, light theme.
Screenshot to come Loupe SEO in Safari, dark theme.
Built on a machine without Safari
Hermes built Loupe on a server where Safari can’t run. So he tested it in Chromium, the open-source project Chrome is built on. He also had to work around three of Safari’s limits.
- Safari gives extensions no way to download a file. CSVs go through a link inside the page, or through the clipboard.
- The user-agent switch can’t be limited to one tab. It applies to every tab until you turn it off.
- Safari can shut down the part of the extension that runs in the background, without warning. So Loupe rebuilds its right-click menu once per session.
What failed
The Mac is where it got stuck.
A temporary extension doesn’t last. Safari removes it after 24 hours, or when you quit it. To keep Loupe, it had to be wrapped in a small Mac app, with Xcode.
The App Store’s Xcode wanted a newer macOS than mine. An older version, Xcode 26.3, ran fine on my Mac. No upgrade needed.
And the install script had never run on a Mac, since Hermes doesn’t have one. The first real build failed because the app’s ID and the extension’s ID didn’t line up. Then the new signing certificate showed up as not valid, until Apple’s current intermediate certificate was added to the keychain. The script is fixed now.
A free Apple ID was enough to sign it. In Xcode, that’s called a Personal Team. I paid nothing.
Installing it
Loupe is public on GitHub. Before you install it, know that it was purely vibe coded, for the way I use it. There are two ways to do it, and the README has every step.
- To try it, no Xcode. With Safari 26 or later, you add it as a temporary extension in the developer settings. It goes away after 24 hours, or when you quit Safari.
- To keep it. You need Xcode 26 or later and an Apple ID, the free one is enough. A script wraps it in a small Mac app, then you turn it on in Safari’s settings.

