Link Hints is a browser extension that complements the built-in keyboard shortcuts with ones for clicking.
Press AltJ. This makes little yellow boxes with letters, called hints, appear next to links (and other clickable things). Type the letters to click the link. Alternatively, hold Shift and type a bit of the link text.
There are a few variations on the above shortcut for opening links in new tabs or selecting text.
The keyboard shortcuts and hints are fully customizable.
Using hints to click links is not at all a new idea. What does Link Hints bring to the table?
Link Hints keeps track of all clickable elements in the background when your browser is idle. This makes hints appear quickly regardless of page size.
Other than accurately finding clickable elements, Link Hints also focuses on placing the hints intuitively and being generally easy to use and configure.
For the technically interested, here’s a list of fancy things:
- Full Shadow DOM support, including “closed” shadow roots.
- Seamless iframe support.
- Detection of covered elements using elementFromPoint.
- Background tracking of visible elements using MutationObserver, IntersectionObserver and requestIdleCallback.
- Tracking of elements with click listeners.
- Tracking of scrollable elements in Firefox.
- Tracking elements and updating hints while showing them.
- Text based hint positioning.
- Hint generation using weighted Huffman coding.
- Links with the same URL get the same hint.
- Elaborate workarounds for Firefox’s overzealous popup blocker and CSP rules.
- Support for different keyboard layouts.
In 2013 I (Simon Lydell) started contributing to the VimFx browser extension, making significant work on its link hinting feature. After a while, I became the main developer.
When VimFx was discontinued in 2017 (due to Firefox dropping their old extension system in favor of cross-browser Web Extensions), I started thinking about making a new extension, porting my favorite feature of VimFx – link hinting.
During experimentation in early 2018, I discovered a way of keeping track of clickable elements in the background (for the technically interested, a combination of MutationObserver, IntersectionObserver and requestIdleCallback). This showed potential for greatly improving on the VimFx link hinting.
A couple of months later, the first commit of Link Hints was made (then called “Synth”). Soon it was stable enough to be used for day-to-day browsing. After almost two years of experimentation, development and real-world usage, Link Hints was first released in February 2020.