Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have noticed that certain websites (e.g. Stack Exchange sites, Dell, etc.) are automatically added to my list of search engines in Google Chrome.

They even add a keyboard shortcut to their entry. Here are some examples:

  • Dell: Keyboard ->
  • Stack Exchange Web masters: Keyboard ->
  • Reuters: Keyboard ->

Q1: Is this the default behavior in Chrome? (to let websites add themselves to the list of search engines?)

Q2: Is it possible to disable this behavior in Chrome?

Note: I'm running the latest version of Chrome: 11.0.696.57 on Windows 7 64, and I only have one extension installed: Google URL shortener.

share|improve this question
@ Sathya, Why? I want to have the flexibility to disable it. If your question is why would I disable something like this: the interface to edit search engines is not particularly good, and as the list grows it's hard tell which search engines I added manually and which ones were added automatically. It's also harder to find a particular entry within a large list. – Amelio Vazquez-Reina Apr 27 '11 at 17:41
@Sathya - Many reasons: * Convenience: Sometimes you want to search ABOUT a site, rather than ON that site. * Consistency: Randomly and silently adding new "search engines" causes unexpected behavior in the omnibox. * Privacy: Chrome does not inform you when it decides to add new "search engines," and they don't go away when you clear your browsing history. * Common courtesy: Shouldn't I be able to choose whether to enable this "feature" is enabled, or—failing that—at least choose to be informed when Chrome decides to add a site, so I can countermand this decision? – phenry Oct 28 '11 at 17:43
up vote 10 down vote accepted

There are two ways to do this:

  1. Add this userscript to Tamper Monkey:

    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
  2. If you're not a regular Tamper Monkey user and don't feel like wasting 15-20 MB of RAM just to load the Tamper Monkey extension for this purpose, then you can roll your own super lightweight extension that won't consume any memory. Instructions are provided below.

How to create your own extension to remove the OpenSearch <link> tag and prevent Chrome from auto-adding search engines:

  1. Create a folder where you will be putting the extension files.

  2. Inside this folder, create two text files named manifest.json and content.js containing the code provided below.


      "manifest_version": 2,
      "name": "Disable OpenSearch",
      "version": "1.0.0",
      "description": "Remove the OpenSearch <link> tag to prevent Google Chrome from auto-adding custom search engines.",
      "content_scripts": [
          "matches": ["<all_urls>"],
          "js": ["content.js"]
      "permissions": [


    var elOpenSearch = document.querySelector('[type="application/opensearchdescription+xml"]');
    if (elOpenSearch) elOpenSearch.remove();
  3. In Chrome, go to chrome://extensions/ (enter this into the URL bar).

  4. Enable Developer Mode.

  5. Click on 'Load unpacked extension', select the folder you created in step 1, and click 'OK'.

Congratulations! Now Google Chrome should be a little less annoying to use :-).

Limitation: This solution is not 100% reliable. If you go to a URL that contains a search parameter (e.g.,, then in rare cases a custom search engine will still be added. I suspect this is because Chrome can parse the OpenSearch <link> tag before the userscript or extension has a chance to remove it from the DOM.

share|improve this answer
I'm surprised nobody has posted this as an official extension to the store, seems like it would be popular. Ideally I'd like an extension to ask me before adding a search engine, or have an icon in the address bar that lets me add it, just like RSS feeds. – shthed Feb 21 at 4:27
Thanks for the great code and @shthed thanks for the inspiration! I've just released a Google Chrome Extension which does just that. You can find it here. Source code here. Let me know what you think! :-) – Greg Sadetsky Mar 31 at 18:03

This was making me absolutely insane, so I found a hackish, but effective solution to the issue.

Chrome stores it's search engines in a simple sqlite3 database. I found that you can create a trigger when chrome goes to add the search engine that causes the database insert statement to be ignored.
Note that the search engines are still kept in memory, so they will still show up in the list until the browser is restarted. However you wont have to clear them out all the time, and so if you want to add your own search engines, you won't have to worry about accidentally deleting them (yes, manually adding search engines will still work).

First you must locate the Web data file.

  • Mac OS X: ~/Library/Application Support/Google/Chrome/Default/Web Data

  • XP: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default\Web Data

  • Vista/7: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Web Data

  • Linux: ~/.config/google-chrome/Default/Web Data or ~/.config/chromium/Default/Web Data

Then open it with an sqlite3 editor.

Chrome must be shut down at this point.

The official sqlite web site has a download page with a pre-compiled command line utility for the various operating systems. Though any editor capable of working with sqlite3 databases will work.

For the command line utility, use a command such as the following (don't forget to escape or quote the space in the file name):

sqlite3 /path/to/Web\ Data

Add the trigger.

CREATE TRIGGER no_auto_keywords BEFORE INSERT ON keywords WHEN (NEW.originating_url IS NOT NULL AND NEW.originating_url != '') BEGIN SELECT RAISE(IGNORE); END;

You're done. Close the editor and start chrome back up.

The way it works is that when chrome goes to add auto-add a search engine to the keywords table, chrome sets the originating_url field to the web site it came from. The trigger basically looks for any inserts with a non-empty originating_url field, and issues a RAISE(IGNORE) which causes the statement to be silently skipped.
Manually added search engines don't have an originating_url, and so the trigger allows them to be added.

share|improve this answer
After trying a few editors out, SQLiteStudio my favorite. No way am I related to this product. Just a useful tool I found after some searching. – mateuscb Mar 14 '14 at 21:55
This is great and it works. However, for me, Chrome still added search engines, not in the database, but in another folder, "Sync Data Backup". Disable write permissions for that folder in Windows/Linux and it will be gone for good. – Martin Hansen Sep 13 '14 at 10:01
This doesn't appear to work anymore, at least in Chrome v47beta. After restarting Chrome, the auto-added search engine is still in the list, although typing the keyword doesn't trigger it anymore. – 10basetom Nov 6 '15 at 3:34
FYI: 1/ make a copy of this file first in case you mess it up :) 2/ on Mac 10.11.4 (El Capitan) I was unable to open the file/database with ("Error: unable to open database "~/Library/Application Support/Google/Chrome/Default/Web Data": unable to open database file). 3/ if you try and run the CREATE TRIGGER command whilst Chrome is open, you get Error: database is locked so exit Chrome first. 4/ once Chrome was closed, this opened the database successfully worked: /Volumes/Macintosh\ HD/Applications/sqlite3 ./Web\ Data (in Terminal, when in specified directory) HTH – sming Apr 7 at 12:26
  1. Yes, this is by design.
  2. No, there's no way to disable this.
share|improve this answer
I love this answer. This is simple but informative – nXqd May 9 '12 at 14:03

Try using this simple userscript:

// ==UserScript==
// @name       Block Opensearch XML specs
// @namespace  *
// @version    0.3
// @description  Block opensearch xml links
// @match      *
// @copyright  2012+, Christian Huang
// ==/UserScript==

var i;
var val;
var len;
var opensearches;

opensearches = document.getElementsByTagName('link');
len = opensearches.length;
for (i = 0; i < len;i++) {
    val = opensearches[i].type;
    if ( val == "application/opensearchdescription+xml") {
share|improve this answer
where do add this script? or execute it? – mateuscb Mar 14 '14 at 21:23
@mateuscb You can get it from here. Then just drop the script in the extensions settings page in chrome, chrome://extensions/. – Victor Häggqvist May 14 '14 at 14:39
This. Is. Awesome. I needed to create a dummy manifest.json (as per this SO answer and install it via dev mode (as an unpacked extension), but apart from that it worked like a treat. – womble Jun 11 '14 at 5:58
Or, you can use it in Tamper Monkey. If you're used to making modifications to websites, TM should be a must-have addon. – JasonXA Dec 28 '14 at 17:19
You can also use this one-liner: document.querySelector('[type="application/opensearchdescription+xml"]').remove‌​(); (see my answer below). – 10basetom Nov 6 '15 at 6:12

If I'm understanding what you're describing correctly, then this isn't the websites doing anything at all. Rather, Chrome itself identifies search boxes on websites and then itself adds those to its list of search options in the omnibar.

A1: Yes, this is default behavior, but it's not the websites adding themselves, it's Chrome adding the websites.

A2: I do not believe you can disable this behavior, however you can remove search engines by going to the tool menu -> Options -> Manage Search Engines; they will appear under "Other Search Engines". You may be able to specify that one should not be re-added when you remove it, I'm not sure -- I happen to like this feature, so I'm not going to try removing them.

share|improve this answer
Thanks @Kromey, That's a good point. I just updated the question to reflect your comment. – Amelio Vazquez-Reina Apr 27 '11 at 17:49
This answer is incorrect, websites do effectively add themselves to Chrome as they use what is called an OpenSearch description document to enable Chrome to add their website's search engine to Chrome's list of search engines your browser can interface with. – Marcel Jun 11 '15 at 12:01
@Marcel OpenSearch merely lets sites describe their search feature. It still requires the browser to act upon that. Therefore this is not incorrect, I just didn't include the technical spec that's being used to "...[identify] search boxes on websites..." in my answer, as I felt it would have complicated an otherwise-simple matter -- the exact mechanism of how the browser finds a search box isn't relevant to the average user, only to webmasters who want theirs to be added. – Kromey Jun 11 '15 at 16:35

Here a somewhat hacky workaround which works just fine for me. Just rename the search alias to something cryptic like "§$%!/()&/". While the search engine is still there you won't see it again, ever. Pretty annoying if you can't google for "jenkins" because chrome forces you to search in jenkins.

share|improve this answer
Seriously - crazy annoying. Thanks for the tip. – TJ Biddle Jun 3 '13 at 23:06
It does this to me for jenkins, jira, and confluence - It drives me absolutely crazy that I can not initiate a general search from my address bar for anything related to these three. This, is by far the best and only working workaround I have seen. Cheers. – Matt Clark Aug 4 '15 at 22:35
@MattClark jira exactly! I want to search about jira, not in it! – ErikE Sep 23 '15 at 18:22

One workaround I've found for this is to acquire the habit of starting all my searches with a space. If you type ・Splunk median (where represents the space character), Chrome will perform a Google search on Splunk median.

share|improve this answer
Starting the search with a question mark (?) will also use your default search engine. – Ari May 30 '14 at 2:07
Nice! I like that better than the space. – Jun-Dai Bates-Kobashigawa May 30 '14 at 14:34
For me it didn't work. On Chrome 39, Win 7, typing spacekeyword didn't bring up the search interface. However, your solution was useful elsewhere, in naming. If I want my defined searches to appear on top of the automated ones, one space in front of the name and presto. All automated search engines go below and now it's easier to manage / remove them. – JasonXA Dec 28 '14 at 17:21

<-- Background -->

I have an alternate, less-intrusive idea for you here (at least if you're running an ad blocker, as so many of us are for our own sanity/safety). I like using existing extensions/scripts as much as possible to avoid the bloat of a whole extension for just one feature (worst-case scenario) so this solution works under this principle.

Adblock, and its variants/successors (uBlock is my weapon of choice), have the ability to block web page elements, including <link> elements, which is used for autodiscovery of OpenSearch Descriptions (OSDs), the XML files that contain the information which permits auto-adding search engines and causes us these headaches. I say "permits" because it's hardly mandatory, as, so far as my research has shown, Firefox simply reads this information and makes it available for easy addition under the Search Engines dropdown box, rather than quietly auto-adding it like Chrome does.

The use of the feature is described in the Opensearch specifications in multiple places: (ignore the specific subtltle of this section for our purposes as it's just an example of it in use)

<-- The Solution -->

As it states that OpenSearch Descriptions (OSDs) have a unique type, we can filter them out with the following AdblockPlus/uBlock rule:


I've tested this and the rule shows the correct match on my test sites ( etc) and the search engines are no longer auto-adding, so I believe this is a full solution.

A quick note on the history I've found behind this: Chromium's engineers have labeled this "WontFix" several times over the years (a power-user disable option/flag was requested multiple times) stating that this is considered a niche issue since the feature is "generally useful", their stance is that niche issues should be solved by extensions or 3rd-party scripts rather than by the devs adding countless flags and the like to cater to all whims, so basically what we're doing here is just in line with their preference and keeps it nice and manageable.

Best of luck! If anyone else tries this let us/me know how it works!

share|improve this answer
This didn't work for me (try searching on I've come to the conclusion that there is no 100% reliable solution :( – 10basetom Nov 6 '15 at 3:46

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.