AI & TechArtificial IntelligenceDigital MarketingNewswireReviewsTechnology

I tested Claude, ChatGPT, and Gemini building the same Chrome extension – only one succeeded

Originally published on: April 28, 2026
▼ Summary

– The author tested three LLMs (Claude, ChatGPT, Gemini) by asking each to build a Chrome extension that searches Instagram story viewers, using vague prompts.
– Chrome extensions are an ideal test for LLMs because they require no backend, hosting, or deployment—just loading a folder into the browser.
– ChatGPT’s extension eventually worked after multiple rounds of debugging, but it relied on a messy manual-scroll capture system that duplicated entries and inflated viewer counts.
– Gemini failed entirely: it initially provided a prompt for another tool instead of code, and after separately providing files, the extension never functioned despite six rounds of fixes.
– Claude succeeded in three messages: it used Instagram’s internal API to build a fully functional extension with a search bar and per-story viewer lists.

When most people hear “vibe coding,” they picture full-stack CRUD apps, polished websites built in minutes, or portfolio pages with the same hero section and gradient background. As someone who constantly juggles ideas, I have been practicing my own version of vibe coding since OpenAI first launched ChatGPT publicly. Interestingly, my very first project wasn’t a website or app,it was a Chrome extension. I do not remember exactly what it did, but I recall it worked. So, I decided to revisit that starting point and put three major LLMs,Claude, ChatGPT, and Gemini,through the same challenge: build a Chrome extension from scratch.

Chrome extensions are the perfect vibe coding stress test because they strip away the usual infrastructure headaches. When building a full-fledged app, you eventually hit hosting, deployment, environment variables, and databases. Even tools like Replit or Lovable simplify deployment, but they test the platform as much as the model. Chrome extensions require none of that. No backend, no hosting, no databases. You load a folder into your browser’s Extensions section, and it either works or it does not. They consist of just a few files: a `manifest.json`, plus HTML, JavaScript, and CSS,languages LLMs handle well. Since extensions solve one specific problem, they offer a clear, bite-sized goal. For fairness, I chose an idea I genuinely wanted to build: an extension that lets me search through Instagram story viewers. It sounds silly, but if you have ever tried to find one person among hundreds or thousands of viewers, you understand the pain. I gave each model the same vague prompt,no details,to see which could figure out the rest on its own.

ChatGPT built a decent extension,it worked, but I would not use it. I used GPT-5.5 Thinking with Extended effort and the standard chat interface. It produced a Manifest V3 extension in under two minutes, called IG Story Viewer Search, and handed me a ZIP file. The first version had no toolbar popup, so clicking it did nothing. After patching, the extension worked but only with a few viewers at a time due to Instagram’s lazy-loading. GPT then added an “Index all viewers” button, but it still only captured on-screen viewers. After 2 minutes and 11 seconds of thinking, version 1.4 introduced two modes: Auto-index all (which Instagram blocked) and Start live capture, which watches the viewer list in real time as I scroll manually. On a story with 400 views, the live capture worked better but was messy,it duplicated entries, misread display names, and inflated the viewer count to 700+. Searching worked, but only after I manually scrolled the entire list. It was a rough prototype, not a polished tool.

Gemini’s first instinct was to hand me a prompt,and the extension never worked. I have been a fan of Google’s AI, but this was disappointing. Instead of writing the extension, Gemini gave me an architectural breakdown, a DOM traversal lecture, and a master prompt to paste into an agentic IDE. When I asked it to actually create the extension, it provided each file separately (manifest.json, content.js, styles.css) and told me to save them myself. The extension did not work. Gemini tried injecting a search bar into Instagram’s UI, but the bar never appeared. After six rounds of increasingly confident fixes, the bar finally showed up but could not find a single viewer. I gave up on the conversation.

Claude took three messages to get it right,the one that actually shipped. After the other two, my expectations were low. Claude’s first version did not work either. But then it examined Instagram’s current DOM structure and rebuilt the extension using Instagram’s internal API endpoints, which are more reliable since I am already logged in. It worked. Clicking the icon showed a working search bar and a full viewer list pulled straight from Instagram’s API. The only issue was that it grouped all story viewers together. One more message gave me v3, which added a visual story strip with thumbnails, timestamps, and view counts. I could tap any story to load its viewers and search within it. Done. No more follow-ups needed.

Next time, I am starting with Claude. It built the extension the quickest, with the fewest messages, and delivered a fully functional product. ChatGPT built something workable. Gemini just did not.

(Source: MakeUseOf)

Topics

vibe coding 95% chrome extensions 92% llm comparison 90% instagram viewer search 88% prototype iteration 85% lazy loading issues 82% api vs dom scraping 80% claude performance 78% chatgpt performance 76% gemini performance 74%