Usability issues with adding search engines to Web browsers


I get a lot of feedback around adding DuckDuckGo (a search engine) to users' Web browsers. I thought I would synthesize that feedback in hope that these usability issues might be addressed.

ieaddons.pngIf you have a search engine for your site (and most big sites do), you want people to be able to easily use it in their Web browsers. In Internet Explorer (IE) 7, Microsoft introduced a native JavaScript function called AddSearchProvider that lets users add a search engine to their search bar, and optionally set it as their default engine. The dialog box looks like this.


That means that you can put a link on your site that users can click on, which will pop the above dialog. And the dialog itself is pretty simple and straightforward. If I were to really nitpick, I'd say just delete the search suggestions line if not available (instead of graying it out). I also like how Firefox's equivalent says "Start using it right away" instead of "Make this my default search provider" because it is more inline with what the user is thinking.

Microsoft also created and still provides another function called IsSearchProviderInstalled that allows you to dynamically check whether your search engine was already added. You can then use this knowledge to hide the add link on your site (if the user already added it).

In conjunction, these two functions produce pretty great usability when adding a search engine to IE. Really my only complaint is that IE doesn't let you edit the search URL string after the fact, which is something more advanced users want so they can do things like force language preferences. To be perfect, I'd add that functionality along with the ability to submit POST requests.

Nevertheless, IE has by far the least usability issues with this process. Unfortunately, the functions Microsoft created don't work that great outside of IE. 

On the other extreme is Safari, which is the absolute worst. Not only do they not implement the mentioned functions or equivalents, but you can't even add a search provider at all in the browser preferences! 

There is only one relevant dialog box, which currently gives you only three choices: Google, Yahoo! and Bing. Apparently these search engine choices are hard-wired into the browser itself, and the only way to change them without installing additional software is to hack the binary.


Additional software solutions aren't that great either. I was looking forward to the recent inclusions of extensions in Safari 5, but they didn't open up the search bar in the extensions API! Victor Quinn made a DuckDuckGo extension (it's open source btw), but it has to add a toolbar to provide search functionality.


Many people understandably hate the bar taking up all this extra space. The other current alternative is to install Glims, which is a plugin that does a lot of things including tweaking the search box. It is a bit of overkill though if you just want to make that one change. Perhaps the best solution right now is to make one plugin dedicated to this purpose like Inquisitor, but that is a lot of custom work to solve this one issue for Safari users.

Chrome causes me the second most complaints by far. It's also the most frustrating to me because it is so close to being good, but yet still so far. You'll see what I mean.

There is a specification called OpenSearch that allows you to add some meta tags to your site that describe the search engine associated with it. For DuckDuckGo, those meta tags like this:

<link title="DuckDuckGo" type="application/opensearchdescription+xml" rel="search" href="/opensearch.xml">link title="DuckDuckGo (SSL)" type="application/opensearchdescription+xml" rel="search" href="/opensearch_ssl.xml">

These have the effect on IE and Firefox of letting the user know via the search box that they have options to potentially add. Here's what that looks like:


On Chrome, however, there is no equivalent drop down because the address bar and the search bar are one and the same--a really cool feature that I truly like btw. What they've chosen to do with opensearch is add any search engine that comes up in meta tags automatically to a list of possible providers you could use as the default. The first issue with this process (easily fixable) is that they add new engines to the bottom of the list.


The problem is that when people go looking to add a search engine they immediately have trouble finding the one they're trying to add. In particular, they generally expect the one they're looking for to be at the top, especially since it usually corresponds with being on that site at that moment. Trouble is that the location of the engine is in the exact opposite place you'd expect, i.e. at the bottom. 

And since Chrome adds every site that has an opensearch plugin, and lots of sites have them, it can be a very long list. Furthermore, if you decide to change providers but originally visited the site you want a while ago (often the case), it's probably somewhere in the middle of the list. I've gotten many reports that people just couldn't find it when it turned out to be "hidden" in the middle.

Second, Chrome provides a dialog box (see below) to add a new search engine from a link via the AddSearchProvider function, like I described for IE above. Trouble is, if it is already in that mega-list AddSearchProvider silently fails and refuses to pop the dialog. Given that you usually use opensearch meta tags to surface the above pictured functionality for IE & Firefox, this dialog box basically never can show up, rendering it completely useless.


Nevertheless, it suffers from another problem, namely that there is no option (unlike IE/Firefox/Opera) to also make it the default search engine. So if you somehow manage to get the dialog, you're left wondering what happened and why isn't it working in the search bar? What happened is that it got added to the bottom of that long list, and to make it the default you'll have to open that list in your preferences, scroll to the bottom, and click 'Make Default'. 

As if that wasn't enough annoyance, IsSearchProviderInstalled is also essentially rendered useless. Since again everyone generally uses opensearch, and Chrome uses it to add providers automatically, search providers are always "installed" and so this function pretty much always returns true. This behavior means that you can't easily tell if a user added your engine or not and thus you are forced to keep showing 'Add to Chrome' links everywhere, even if the user already made it their default engine in Chrome. (Note sites often use cookies to save this info, which will work at least until the cookies are cleared.)

Opera causes problems too. My main issue with Opera is that they don't implement AddSearchProvider or IsSearchProviderInstalled or use opensearch at all, which means the user is forced to do everything manually.

They do have a path to do it, both in the preferences and via a right-click shortcut, but both cause a lot of confusion. The easiest way to find the preferences is by clicking the down arrow in the search bar and then 'Mange search engines...'. Simple enough, though annoying they don't just populate choices automatically from the meta tags, like IE and Firefox (pictured above).


There is then an 'Add...' button that gives you this dialog box.


The trouble with this dialog is all the empty boxes. An average user has no idea what to type in any of these boxes, and no example text is given whatsoever! So instead, the path that I now sent people is on is to right click the search box and select 'Create Search...' like this:


This has the effect of at least partially populating the dialog box like this:


This still has a bunch of problems. First of all, you just can't click OK -- it is literally grayed out. At least let the user click OK and then tell them what they're doing wrong! It turns out you have to fill in a 'Keyword' to proceed, e.g. 'd'. I do give them extra points for adding a POST option though, which no one else does.

Which brings me to Firefox...  They're second behind IE in doing it right, but they still have two issues that cause significant complaints. They do get the basic process right though, which is great.

You can use AddSearchProvider to pop this dialog box and easily set an engine as the current search provider.


This is arguably the best dialog box in the whole lot. It's simple, straightforward, and it works!

The issues in Firefox are more around the edges. First, the IsSearchProviderInstalled function is not implemented, which means you cannot easily tell if you've already installed an engine or not, which means you can't stop showing the 'Add to Firefox' links. Sound familiar?

The second issue annoys advanced users. Just like in IE, you cannot actually edit the search string for the search engine once added (or while being added). But what if you want to use URL params to customize the engine? Sorry, the only way to do it is to create a new opensearch plugin, which is why you start getting all of these.


In short, no one does this process perfectly. I compiled feedback on these issue in hope that this part of the browser user experience gets fixed in all these great pieces of software. The ideal process is pretty simple actually:

  • Make AddSearchProvider and IsSearchProviderInstalled functions work as one expects them to, i.e. not to fail silently, always return false/true etc. If you do have a concept of a default engine, let IsSearchProviderInstalled see that too, or add another function to query that boolean value.

  • Make the dialog box that results from AddSearchProvider allow you to a) make it the default/current search engine; and b) change the url string via an advanced section (that offers useful help text).

  • Use the well-established opensearch meta tags appropriately, i.e. to suggest engines to add (as opposed to ignoring them or adding them automatically).

  • Make it obvious how to change providers and edit them after they have already been added. Executing AddSearchProvider could pop an edit dialog, for example.


If you have comments, hit me up on Twitter.
I'm the Founder & CEO of DuckDuckGo, the search engine that doesn't track you. I'm also the co-author of Traction, the book that helps you get customer growth. More about me.