Wednesday, January 17, 2007

Stop Highlighting Referrer Search Terms!

Please, ANYONE who reads this, don't do it. Every web page out there has the option today of automatically highlighting search terms used in the Google search which brought people to your page. Just because you can do it doesn't make it a good idea! This is another god damn blink tag.

I frequently use Google to "find" pages which I've visited 100 times, and in some cases, whose URLs I do in fact know. I do it because it's easy. And the thing is, I'm a Web developer. I have a higher knowledge of URLs than the average person. Many people don't even know (or care) what a URL is. They use Google to find stuff too, because they have a URL box and a Google box, and they don't know what either box does, but the Google box throws errors less frequently. So they use the Google box instead of the URL box, and I do it too. I do it because it's quick, they do it because it's easy -- really these are the same reasons, but the long and the short of it is, using Google to find something you're already familiar with is actually a very common use case.

In this use case, you don't need highlighting to show you the search term. Specific example: I need some documention on the acts_as_ferret Rails plugin. I google it, I get the right page, click, boom, good. Except how many times does "acts_as_ferret" appear on the acts_as_ferret site? More than once! And nearly every time it appears, it's in an H1 or some other kind of emphasized context. The additional emphasis of the highlighting is redundant and unhelpful.

And while I'm ranting against stupidity, can I just paraphrase the blogger who complained that acts_as_ferret has a totally inaccurate name? Wouldn't is_searchable have made a lot more sense? It's not as if acts_as_ferret smells funky, bites people, and tries to eat rabbits, is it?

Seriously, the "acts as" convention is good, but let's not go crazy here. If you look at the more rational uses of it, like acts_as_taggable, it's actually a very specific thing. Anything which acts_as_taggable conforms to an interface called Taggable. I understand all the hero worship around DHH, he's very smart, he's very good-looking, and he's got balls you could knock down bowling pins with. That's great. But a little less "monkey see, monkey do" and a little more high standards of rationality in method names, would that really hurt anybody? Let's take this thing back to its Smalltalk roots. isFoo is a very common naming convention in Smalltalk and it exists for a reason. Giving acts_as_ferret a more logical, simple, and descriptive name like is_searchable would have made life easier for everyone.

Anyway, back to usability stuff. The whole assumption behind highlighting referrer search terms is that the search term is what people are actually looking for -- and further that it's going to be sufficiently buried in additional text that highlighting could have some usefulness in the first place. But obviously that isn't the case in this example. I can tell you, in my own personal experience, there are many examples where it isn't the case.

Further, in my own personal experience, even when it is the case, I'd still rather use the find function in my browser. The find function in your browser will highlight whichever search term you're looking for, and unlike highlighting referrer terms when the page renders, the find function only keeps the text highlighted for that brief moment when you're trying to find it. It doesn't remain highlighted indefinitely, while you're trying to read an entire paragraph located around it.

Any typographer can tell you that highlighting a random word won't make the surrounding paragraph easier to read. It's 2007, and we all know Web usability has a lot to do with typography. Referrer search term highlighting is a really dumb mistake, and after more than ten years of Web UI, it'd be nice if the dumb mistakes could stop happening.

Personally, whenever I encounter a page with referrer search term highlighting, I copy the URL, close the window, and open a new window with the URL. It's a pain.

Look at it from another perspective and it still looks like a blink tag, or worse. Think about the difference between what Google is and what Google says it is. It says it's a search engine. What is it really? It's the primary navigation system for the Web. When you're highlighting search terms from Google, at best you're setting up a blink tag -- a useless, irritating distraction. At worst, you're exposing the internal mechanics of the Web to people who have no idea what they're looking at.

In conclusion, stop highlighting referrer search terms. Please!


  1. What about smarter algorythm: the keyword appears rarely (more rare than one word per screen), or simply is found somewhere on the third screen.

    The good idea is to highlight it and do one of the following:

    1. Highlight for a 3 seconds and scroll to the first appearance (remember, it is on the third screen)

    2. Highlight without time limit, no scrolling. Just undo highlight on MouseOver event to kick that annoying yellow box off.

    If there are more than 3 occurences, or the first occurence is found on the first screen it seems there is no reason to highlight them.

  2. The find function in your browser already enables the smartest algorithm possible: only do it when the user requests it.


Note: Only a member of this blog may post a comment.