Is there a way I can add a custom search URL to the Firefox search bar? e.g. I'd like to provide a URL such as http://blahblah.com?search=%s, where Firefox replaces the %s with the content of the search box.

Both IE and Opera can do this, but I can't figure out how to set it up in Firefox.


20 Answers 20


The method to do this has changed - this answer is how to do it in 2018. Read further down to see more recent answers

Add keywords to the address bar:

For example, you can set up your browser to search for bread at stackoverflow.com by simply typing so bread into the omnibar.

Do this by right-clicking on the search bar on the website you commonly search. You can do this for the Search field on any website.

Right click on the search bar


  1. Go to the site you want to use to search
  2. Right-Click on the search box you fill out on their page (not Firefox's)
  3. Select "Add a keyword"
  4. Enter the keyword to use when you want to search in that site (eg: "so")
  • 7
    @Jed Daniels Chrome does have it in the form of custom search engines - Options -> Manage Search Engines
    – Dan H
    Jul 3, 2011 at 7:12
  • 9
    Is there more updated info on this maybe? Just downloaded latest Firefox on macOS and this doesn't work. :-(
    – user24601
    Mar 16, 2018 at 13:39
  • 5
    This is not working now Mar 31, 2018 at 19:27
  • 12
    Of course, this only works if there is a search-box available to click on, and worse, it doesn't let you customize the actual query. I can't believe Firefox still doesn't let you natively add customize search engines which Chrome has let you do since it first came out. :-|
    – Synetech
    Mar 1, 2020 at 1:10
  • 4
    @baptx: What would be better is for Firefox to fix this - bugzilla.mozilla.org/show_bug.cgi?id=1683969 Dec 22, 2020 at 23:04

I'd like to provide a URL such as http://blahblah.com?search=%s where Firefox replaces the %s with the content of the search box.

You can do this with Firefox! Add a bookmark with that URL, where %s is the search query, then simply set a keyword for the bookmark. You can then search using <key> <search term> in the address bar. For example, the bookmark http://www.google.com/search?q=%s with keyword g means you can type g stack overflow in the address bar to search Google for "stack overflow".

Alternatively, go to the site you want to search, right click in the search box and click "Add a keyword for this search".

  • 14
    And what if I don't want a bookmark? What if I only want a search engine without bookmarking it?
    – Synetech
    Jul 13, 2017 at 18:55
  • 8
    Best answer IMO, as it depends only on URLs, not website-specific search boxes.
    – ThomasH
    Mar 2, 2018 at 10:25
  • 7
    Apparently putting the %s in the domain part of the URL is now deprecated/broken in FF67 and up. See bugzilla.mozilla.org/show_bug.cgi?id=1553377
    – kmarsh
    Jul 9, 2019 at 14:50
  • 5
    Although it's very counter-intuitive, it works (v69.0) Sep 30, 2019 at 4:56
  • 9
    @qed: it's not awesome at all. This functionality should be exposed in Preferences -> Search, but it's not - bugzilla.mozilla.org/show_bug.cgi?id=1683969 Dec 22, 2020 at 23:04

Actual answer:

@Kleinfrund's answer is valid but Firefox doesn't always recognize sites that support search. If the website doesn't show up using @Kleinfrund's method, continue reading.

  1. Open a new tab and type about:config in the address bar
  2. In the search box type: browser.urlbar.update2.engineAliasRefresh
  3. Click on the little + symbol on the right. This is what it should look like after you pressed it: boolean true value after pressing plus sign
  4. Go to firefox Settings → Search. Or enter this in the address bar: about:preferences#search
  5. In the "Search Shortcuts" section you should notice a new "add" button. search add button
  6. Press the add button and fill in the name, search engine url and a keyword(optional).
  7. Go to the "Default Search Engine" section and select the engine you just added.
  8. Enjoy.

(Please note that the engine url should contain a "%s" in the url. Firefox replaces the %s with your search terms. An example of this is https://www.google.com/search?q=%s)

PS: This does not work for search engines that use POST requests.

  • 7
    Worked for me. Too bad this is a somewhat secret, backdoor feature.
    – Pistos
    May 11, 2023 at 16:13
  • 27
    This should be the accepted answer. May 17, 2023 at 20:33
  • 3
    Did anybody submit a bug to make this config option the default? This isn't a complex feature, so I don't know why they would hide it.
    – SineSwiper
    Sep 13, 2023 at 17:01
  • 4
    @SineSwiper I think this is what you're looking for: bugzilla.mozilla.org/show_bug.cgi?id=1195005
    – BugSquanch
    Sep 15, 2023 at 14:46
  • 9
    This is the actual answer, everything else is just ugly and super inconvenient workarounds.
    – o0'.
    Sep 27, 2023 at 19:07

The actual, no-bookmark solution for this task:

  1. Open a web page that has a search on it (e.g. SuperUser: superuser.com).

  2. In the address bar, expand the address bar by clicking on it.

  3. If the website supports searching, it will show up in the bottom area of the expanded address bar. Click the plus icon that is enclosed in a green circle. This adds the web page’s search to the search engines in your preferences.

Screenshot of the bottom of Firefox's expanded address bar when on superuser.com


  1. Open a web page that has a search on it (e.g. SuperUser: superuser.com).
  2. Right-click on the address bar.
  3. If the website supports searching, where will be an option to add it.

Screenshot of the Firefox's context menu for the address bar when on superuser.com

If you want to set a keyword (e.g. su) for this search, follow these steps:

  1. Open the search preferences (or type the following URI in your address bar: about:preferences#search)
  2. In the table under the column for “Keyword”, double-click in order to set your own keyword.
  • 16
    It's sad that FF allows to do that only for web sites which explicitly provide this feature.
    – Monsignor
    Oct 7, 2019 at 12:16
  • 13
    @Monsignor It's amazing how impossible it is it add a search engine in Firefox, compared to Chrome. I filed a bug against this at bugzilla.mozilla.org/show_bug.cgi?id=1683969 Dec 22, 2020 at 23:02
  • Thank you so much for that reminder! I did this in the past, but browsers changed so much and it was said that using addons.mozilla.org would be the easiest way. But I end up with installing extensions, which is so painfully terrible getting served results that you know are bad. I did create xml or rdf or what ever files by hand 15 years ago, things were said to improve with every product generation. It's not the case, it's just driving "customers" to big corporations. :-(
    – LiveWireBT
    Mar 3, 2021 at 22:43
  • @LiveWireBT I assume this is how they earn money - by making sure that the search-engines that don't pay to have their name in the list will be locked out for most Firefox users. Oct 13, 2021 at 9:53
  • Except, it doesn't work for Searx pages :/
    – xeruf
    Dec 7, 2021 at 0:05

The Add custom search engine extension lets you create a new search engine and customize it.


Your best bet is to go to the Mycroft Project and search for an already made search engine plugin.

If you can't find one you can create your own on the submissions page. Full instructions are available.

  • Wow this saved the day for me! This answer should be much higher upvoted. If you want to modify one of your default search engines, you may need to change the plugin name slightly
    – Pluto
    Mar 16, 2018 at 22:12
  • I was able to add duckduckgo POST to my firefox using the Mycroft search engine.
    – user674669
    Jul 14, 2018 at 6:08
  • I thought @Pluto was exaggerating ... I simply wanted hub.docker.com and it was there. I would add this answer should be a lot more specific. You click on the search to add and THEN click the URL bar to see the "add to search" at the bottom
    – Ari
    Aug 29, 2022 at 2:11

Ready2Search is also an available free service that helps you do this for any site. It makes search plug-in for Internet Explorer, Firefox, Chrome, and Google Toolbar with great customization options (icons, query parameters, etc.).

Screenshot of Ready2Search


Alternative way for custom search

For an example Google Translate string: https://translate.google.com/m/translate#auto/en/%s so top answer here doesn't work. So I found a workaround with the plugin: add-custom-search-engine

And here we go:

enter image description here

Goes to :

enter image description here

  • 5
    This extension works perfectly to add a custom search engine. It should be a core part of Firefox, not an extension!
    – wisbucky
    Sep 24, 2019 at 20:49
  • Thanks for this. This works great and is one of the more user-friendly solutions. I'd rather not use the bookmarks solution as I mirror my Firefox bookmarks from another browser. This solution ensures that my custom search engines don't get messed up when I do a mirror or syncing of bookmarks. Jan 15, 2020 at 3:12
  • @galacticninja plus the "bookmark search engines" are just just straight up castrated. They show way fewer suggestions, and when I do wanna select a suggestion it just searches using the default engine. Dec 29, 2021 at 17:30
  • Does this approach URL encode the search term?
    – Sera H
    Aug 28, 2022 at 15:38
  • Perfect. If you need two (or more) keywords in separate positions of a URL, make a webpage like mysite.com/search.php with the code below, then use mysite.com/search.php?query=%s in the plugin. <!DOCTYPE html><html><head><meta http-equiv="refresh" content="<?php list($first, $second) = explode(' ', $_GET['query']); $target = "0; url=http://www.website.com?kwd1=" . $first . "&kwd2=" . $second; echo "$target"; ?>"/></head><body></body></html> Searching this that with the custom search will get you to http://www.website.com?kwd1=this&kwd2=that. Nov 16, 2022 at 22:07

New solution (since the previous one does not work anymore):

Now if you visit a website like Twitter, Firefox will let you add the Twitter search easily (https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox). But in case you want to add another website that is not supported, you will need a web server like Apache. Below would be the solution for Twitter in case they don't use the search engine file opensearch.xml anymore.

Create a file, for example twitter_search.htm (this HTML source code is used on twitter.com, I just removed the / before opensearch.xml):

<link rel="search" type="application/opensearchdescription+xml" href="opensearch.xml" title="Twitter">

Then create another file, with the same name used in the href parameter of the previous HTML code, for example opensearch.xml with this content (this XML source code is used at https://twitter.com/opensearch.xml):

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <Description>Twitter Search</Description>
  <Url type="text/html" method="get" template="https://twitter.com/search?q={searchTerms}"/>
  <Image width="16" height="16">https://abs.twimg.com/favicons/favicon.ico</Image>

If needed, customize these files to replace the search URL, search form URL, name, description and icon. Put these 2 files in a folder of your web server and open the HTML file that you can find by visiting http://localhost in your web browser. You will be able to add your custom search engine to Firefox.

Previous solution (not working anymore):

Here is how I restored the Twitter search engine for Firefox, which seems to have been removed in Firefox 78 (you could create a search for other websites also based on this answer):

I tested with the Linux version of Firefox (Ubuntu package) but it should work with any operating system by creating the distribution folder / subfolders and search plugin file (https://wiki.mozilla.org/Mobile/Distribution_Files).

In my profile folder .mozilla/firefox/xxx.default/, there was a file search-metadata.json that contained a link to a non-existing file /usr/lib/firefox/distribution/searchplugins/locale/en-US/twitter.xml.

So I created this file with the following content (based on the documentation https://developer.mozilla.org/en-US/docs/Mozilla/Creating_MozSearch_plugins and search plugins already present https://packages.ubuntu.com/focal/amd64/firefox/filelist):

<?xml version="1.0" encoding="utf-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <Description>Twitter Search</Description>
  <Image height="16" width="16">data:image/x-icon;base64,
  <Url type="text/html" method="get" template="https://twitter.com/search?q={searchTerms}"/>

To get the Base64 of the latest Twitter icon that you can see above, I downloaded https://twitter.com/favicon.ico and used the Linux command base64 favicon.ico.

The following files were present in my profile folder but were not needed anymore so I removed them to avoid potential conflicts (you can backup files in case you want to reuse them): search-metadata.json, search.json, search.json.mozlz4.

The following answers did not work for me but contained useful information:



  • Speaking of search engines, there are many websites which will let the reader store the icon as a data url without knowing about base64.
    – jpaugh
    Jul 6, 2020 at 15:12
  • 1
    @jpaugh indeed there are other ways to convert the image. The Linux base64 command has the advantage to not depend on an online third-party tool. There should be similar offline tools for other operating systems also.
    – baptx
    Jul 7, 2020 at 20:37
  • Quite! JavaScript's btoa function might be the most available method. I'm imagining that your instructions are almost capable of being carried out by someone who knows nothing of XML or data urls, which is why I added an alternative.
    – jpaugh
    Jul 8, 2020 at 20:00
  • I couldn't make this work. This statement from a Firefox developer says they've removed support for defining search engines with XML. Does this answer still work for any of you?
    – aude
    Jan 22, 2021 at 1:03
  • 1
    @aude I noticed a few months ago that my custom Twitter search engine was gone, even if the file is still present. So it looks like it is not working anymore. I used the official web search instead, for example twitter.com/search for Twitter. When I have a moment, I will try to find another way to add a custom search engine to Firefox.
    – baptx
    Jan 24, 2021 at 14:18

You can also make complex searches with multiple parameters, and here’s how.

For instance, imagine you have a two field search like this fictitious example:

http:// mymusic.com/search?artist=david+bowie&album=ziggy+stardust

You can make a new mm search like:


(in Firefox it would be a bookmark with keyword mm)

Then you can directly search for: mm david bowie,ziggy startdust (directly in the address bar)

I choose “,” as the separator, but it’s just an example. It’s perfectible, but you get the idea, and anything is possible.

※ Notice that some browsers (including Opera 12) may not execute your JavaScript in a new tab with no preloaded page.


Update 2022: Now you can just right-click the URL on the address bar and click Add <name of the site>. It will show up in about:preferences > Search Shortcuts, from where you can assign a keyword.

enter image description here


For ESR, you can add (and set default) a new search engine using policies.json. E.g. use the following:

  "policies": {
    "SearchEngines": {
      "Default": "DuckDuckGo",
      "Add": [
          "Name": "DuckDuckGo",
          "URLTemplate": "https://duckduckgo.com/?q={searchTerms}&t=h_&kp=1&ia=web",
          "Method": "GET",
          "IconURL": "https://duckduckgo.com/favicon.ico",
          "Alias": "Ducky",
          "Description": "Duck Duck Goose"

The location of the policies file is described e.g. in this post.

  • Does this approach URL encode the search term?
    – Sera H
    Aug 28, 2022 at 15:38

As of FF100, for the website searches that cannot be added with Green plus, a solution is to use the mozlz4-edit plugin.

FF stores all the search engines within a file search.json.mozlz4 that cannot be edited in a regular text editor.

With that plugin, one can directly (but guided) add search engines.

E.g. Adding "AllMusic" as search engine: enter image description here

If you want a icon, you can dowload an icon from the website and add it too.

Rem: you have first to locate that search.json.mozlz4 file. On Win10 it is in %appdata%\Mozilla\Firefox\Profiles\xx_profile_id_xx.default-release\

  • Does this approach URL encode the search term?
    – Sera H
    Aug 28, 2022 at 15:39

It's as simple as right clicking in a search field.

The other advantage is that this process creates a bookmark for you. If you use something like XMarks to synchronize your bookmarks, you can access the same search functionality across all synchronised computers.

  • Unfortunately it doesn't seem to play nicely with the builtin Firefox Sync.
    – sourcejedi
    Apr 7, 2013 at 11:49
  • This is what the accepted answer says. I realize it's 11 years later, but now, this answer has become redundant. Dec 22, 2020 at 22:51

A bit late to the party, but for those finding this thread now you can click the search icon in the search bar when on the site you want if it has a green + icon on it.

  • 2
    What if it does not show the green + like on a site (e.g., eBay)?
    – Synetech
    Jul 13, 2017 at 18:59

To mimic chrome's "site search" feature: https://www.reddit.com/r/firefox/comments/ob8ffw/question_custom_url_for_duckduckgo_search_when/h3mcfh7/

worked exactly as expected and super easy to config

  • 2
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    May 18, 2022 at 16:29

[As of August 2022]

If you happen to have Duck Duck Go set as your search engine, !Bangs are another option.


I've created an online web app that lets you add custom search engines to Firefox, simply enter the info then click add and corner click in the URL bar:


Svelte Code
    let searchUrl = '';
    let name = "";
    let image = "";
    let encoding = "UTF-8";
    let description = "";
    $: error = searchUrl ? (!searchUrl.startsWith('https://') ? 'URL invalid' : '') : 'Search URL must be present';
    function getXML({
}) {
  const XML_TEMPLATE = `<?xml version="1.0" encoding="utf-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<Image height="16" width="16"></Image>
<Url type="text/html" method="get" template=""></Url>
<Url type="application/x-suggestions+json" method="get" template=""></Url>
  const parser = new DOMParser();
  const doc = parser.parseFromString(XML_TEMPLATE, "application/xml");

  // Name
  const shortName = doc.getElementsByTagName("ShortName")[0];
  shortName.textContent = name;

  // Search URL
  const searchUrl = doc.querySelector('Url[type="text/html"]');
  searchUrl.setAttribute("template", url.replace(/\%s/g, '{searchTerms}'));
  if (usePost) {
    searchUrl.setAttribute("method", "POST");
    for (const [name, value] of Object.entries(postParams)) {
      const param = doc.createElementNS(
      param.setAttribute("name", name);
      param.setAttribute("value", value);
  } else {
    searchUrl.setAttribute("method", "GET");

  // Icon
  const img = doc.getElementsByTagName("Image")[0];
  if (image) {
    img.textContent = image;
  } else {

  // Suggest URL
  const suggestSearchUrl = doc.querySelector(
  if (suggestUrl) {
    suggestSearchUrl.setAttribute("template", suggestUrl);
  } else {

  // Input Encoding
  const inputEncoding = doc.getElementsByTagName("InputEncoding")[0];
  if (encoding) {
    inputEncoding.textContent = encoding;

  // Description
  const desc = doc.getElementsByTagName("Description")[0];
  if (description) {
    desc.textContent = description;
  } else {

  const serializer = new XMLSerializer();
  return serializer.serializeToString(doc);

    async function addSearchEngine(xml){
        if (document.querySelector("button")?.disabled){return}
        let url = await fetch("https://cors.explosion.workers.dev?https://paste.mozilla.org/api/", {
            "credentials": "omit",
            "headers": {
                "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0",
                "Accept": "*/*",
                "Accept-Language": "en-US,en;q=0.5",
                "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
                "Sec-Fetch-Dest": "empty",
                "Sec-Fetch-Mode": "cors",
                "Sec-Fetch-Site": "same-origin"
            "body": `content=${encodeURIComponent(xml)}&format=url&lexer=xml`,
            "method": "POST",
            "mode": "cors"
        }).then(r => r.text()).then(t => t.trim());
        window.open(URL.createObjectURL(new Blob([
         <head><link rel="search" type="application/opensearchdescription+xml" title=${JSON.stringify(name)} href="${url}/raw"></head>
         <h1>Corner click the URL bar and click "Add ${name.replace(/[^a-z0-9 ]+/gi, ' ')}"</h1>
        <style>body {display: grid; place-items: center; height: 100vh;} h1 {font-family: sans-serif; font-size: 2rem; font-weight: 100; width: 100%; display: block; text-align: center}</style>
        ], {type: 'text/html'})), '_blank')
<div class='container'>
    <h1>Add search engine</h1>
    <input bind:value={name} placeholder="Name"/>
    <input bind:value={searchUrl} placeholder="Search engine URL (use %s for search term)"/>
    <input bind:value={description} placeholder="Description"/>
    <input bind:value={image} placeholder="Image URL (data urls work)"/>
    <input bind:value={encoding} placeholder="Encoding"/>
    {#if error}<span>{error}</span>{/if}
    <button disabled={!!error} on:click={() => addSearchEngine(getXML({name, url: searchUrl, image, encoding: encoding || "UTF-8", description}))}>Add</button>

    span {
        font-style: italic;
        font-weight: 200;
        color: #777;
    .container {
        display: flex;
        flex-direction: column;
        gap: 10px;
        width: 80vw;
        max-width: 600px;
        margin: 0 auto;

    input {
        padding: 8px 15px;
        border-radius: 3px;
        border: 1px solid #eee;
    button {
        padding: 8px;
        cursor: pointer;
    h1 {
        font-weight: 100;
        text-align: center;
        width: 100%;
        display: block;
  • While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
    – Destroy666
    Jul 27, 2023 at 20:19

This can be done using the browser console (hamburger menu/more tools/browser console, or ctrl+shift+j).

    "Google Verbatim",

To remove,

Services.search.getEngineByAlias("gv").then(engine => Services.search.removeEngine(engine));

This service is documented here (appears to be slightly out of date, eg removeEngine isn't listed; you might look in the implementation source file for more complete info.)

  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Jan 30 at 3:47

I believe he's referring to keyword.URL in Firefox's about:config page.

In Firefox's address bar type about:config, then search for keyword.URL and replace its contents with "https://blahblah.com/search?q=", for example.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .