
What a bookmarklet is and why SEOs still use them
A bookmarklet is a normal browser bookmark whose URL starts with javascript: instead of https:. Click it and the browser executes that JavaScript in the context of the page you currently have open. That means it can read the DOM, pull out the canonical, count the H1s, highlight nofollow links, or bounce you to another tool with the current URL pre-filled.
This entry originally pointed at Christian Hänsel's 2021 bookmarklet collection on haensel.pro, which included a neat one that compared a page's actual title tag against what Google was showing in the SERP (very relevant in 2021, when Google started rewriting titles aggressively). His post has since gone offline, so consider this the replacement: what those tools did and how to build your own.
Why bother in an era of all-in-one extensions? Three reasons I keep coming back to. First, extensions want permissions to "read and change all your data on all websites", and every extension you install is supply-chain risk; a bookmarklet is twenty lines of code you can read yourself. Second, bookmarklets work in any browser, including a client's locked-down Edge where you cannot install anything. Third, speed: one click, answer, done. No panel to open, no tabs of noise.
How they work
Installation is the same everywhere: create any bookmark, edit it, replace the URL with the javascript: snippet, name it something short, and park it on the bookmarks bar. That is the entire setup.
A starter kit that covers most daily checks
These are the patterns I actually use. Each is short enough to audit at a glance before you trust it.
Show canonical vs current URL:
javascript:(function(){var c=document.querySelector('link[rel=canonical]');alert('URL: '+location.href+'\nCanonical: '+(c?c.href:'NONE')+(c&&c.href===location.href?'\n= self-referencing':'\n= DIFFERENT, look closer'));})();
Show robots meta and X-Robots hints in the DOM:
javascript:(function(){var m=document.querySelector('meta[name=robots]');alert('Robots meta: '+(m?m.content:'none present'));})();
List all headings in order (spots multiple H1s and skipped levels instantly):
javascript:(function(){var o='';document.querySelectorAll('h1,h2,h3,h4,h5,h6').forEach(function(h){o+=h.tagName+': '+h.textContent.trim().slice(0,70)+'\n'});alert(o||'No headings');})();
Highlight nofollow links by painting them red:
javascript:(function(){document.querySelectorAll('a[rel*=nofollow]').forEach(function(a){a.style.background='#fbeaea';a.style.outline='2px solid #cf2e2e'});})();
Jump to tools with the current URL: a site: check via javascript:location.href='https://www.google.com/search?q=site:'+encodeURIComponent(location.href), or the same pattern pointed at PageSpeed Insights, the Wayback Machine, or a validator. The Hänsel title-comparison trick was a variant of this: grab document.title, run the site: query, and eyeball whether Google rewrote it.
Bookmarklet, extension, or crawler?
| Aspect | Bookmarklet | Extension | Crawler (Screaming Frog, Sitebulb) |
|---|---|---|---|
| Scope | Current page only | Current page, richer UI | Whole site |
| Setup | Paste a bookmark | Install, grant permissions | Install, configure, license |
| Privacy surface | Code you can read yourself | Trust the vendor and every update | Local, controlled |
| Sees | Rendered DOM | Rendered DOM, sometimes headers | Source and rendered, headers, logs |
| Best use | Instant spot checks | Frequent deep single-page review | Audits and monitoring |
The gotchas nobody mentions
A bookmarklet reads the rendered DOM, not the HTML the server sent. That cuts both ways. It is a feature when you are checking what a JavaScript framework actually injected (the canonical React added client-side, for example). It is a trap when you assume Googlebot's first pass sees the same thing; for the raw source you still need view-source, curl, or a crawler with JavaScript rendering toggled off, and comparing the two is where the interesting findings live.
Second gotcha: some sites ship a Content Security Policy that blocks inline script execution, and on those pages your bookmarklet silently does nothing. Not broken, just blocked. Third: modern WordPress and most CMS editors will mangle javascript: URLs if you try to share them in content (this very page shows them as text for that reason), so share bookmarklets via GitHub or plain text files. And the security point cuts both ways: never install a bookmarklet you have not read, because that code runs with full access to whatever page you click it on, including your logged-in Search Console or CMS session. It is a small damn program; read it first.
- Keep a named folder of bookmarklets on the bookmarks bar
- Read and understand any snippet before installing it
- Use them for rendered-DOM checks extensions overcomplicate
- Chain them to tools: site: queries, PSI, Wayback, validators
- Version your collection in a GitHub gist so it survives browser changes
- Paste code from random sites into your browser unread
- Use bookmarklets as a substitute for a proper crawl
- Assume the rendered DOM equals the served HTML
- Forget CSP can silently block them on some sites
- Run write-action bookmarklets while logged into client CMSs
FAQ
Do bookmarklets still work in modern browsers?
Are bookmarklets safe?
Bookmarklet or extension, which should I use?
Can a bookmarklet see HTTP headers like X-Robots-Tag?
Where do I find good ready-made collections?
If your bookmarklet clicks keep turning up weird canonicals and rogue noindex tags, the site needs a systematic pass: crawl, logs, rendering comparison, the works.
Source: https://haensel.pro/seo/seo-bookmarklets (offline as of 2026)
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







