[HOW TO]: Add DuckDuckGo as the default search engine on your iOS device

[Old Forum guest] anonymous
Created: 5 years and 7 months ago
Let's face it - we love DuckDuckGo so much that we don't want the DuckDuckGo app. No. We want DuckDuckGo to be integrated into Safari.

Of course, that's never going to happen, but if you're jailbroken, this is a dream come true for you. I am about to tell you how to add DuckDuckGo as your default Safari search engine on ANY iOS device.

Let me repeat: you need to be jailbroken to do this. If you know what a jailbreak is, full steam ahead. If not, stay back until Apple releases this officially (and then, at least we will prevail)

You will need:

A jailbroken iOS device
iFile (from Cydia, get the trial)
The same passion for DuckDuckGo as me

0) [added late] Open Settings > Safari and set Google as the default search engine. This'll change, don't worry.
1) Open iFile. Keep tapping the back thing until you end up at /
2) Find User and tap it.
3) Tap Library.
4) Find Safari and tap it.
5) Tap SearchEngines.plist and choose Property List Editor.
6) Tap SearchProviderList                Array.
7) Tap 0.
8) Change ScriptingName to DuckDuckGo. To do this, tap it and type DuckDuckGo in place of Google.
9) In the same fashion, change SearchURLTemplate to http://www.duckduckgo.com/?q={searchTerms}
10) Also change ShortName to DuckDuckGo.
11) Tap Done.
12) Go into Settings and tap Safari again. Tap Search Engine and lo and behold! DuckDuckGo has replaced Google. Tap it and press HOME.
13) If you have an iPod touch 3rd generation or above, or an iPhone 3G [S] or above, double press your HOME button and hold Safari. Tap the (-) button and restart your phone.
14) Result - DuckDuckGo should now be the default search engine. A little extra treat is that you get autocorrection of Google's search engine, but with the non-trackiness of DuckDuckGo.

Tested on an iPod touch (4th generation) with iOS 5

This forum has been archived

Thank you all for the many comments, questions and suggestions. Particular thanks go to user x.15a2 for constantly monitoring, replying and helping so many users here. To continue these discussions, please head over to the DuckDuckGo subreddit.

Wait. There were 2 SearchURL Templates in the .plist file (or at least you can't make out the difference). So which one do I change? Both? I changed both to exactly what you said. But now, when I search in safari, it will just redirect me to the duckduckgo.com homepage instead of the queried page.

I have a 4s running 5.0.1.

Please help now I am stuck. I cant even change it back to google cause I don't remember the url!!
posted by [Old Forum guest] • 5 years and 5 months ago Link
reply via email please if you can :)

posted by [Old Forum guest] • 5 years and 5 months ago Link
On further thinking, I realized how silly I was. I didn't put the {searchTerms} in there. It works awesome! Thanks man.

Trollers, please ignore my email address. Don't spam my email. Spare me. I was being desperate.
posted by [Old Forum guest] • 5 years and 5 months ago Link
Works on iPad 2. You have to change the searchURLtemplate string for iPad as well.
posted by [Old Forum guest] • 5 years and 4 months ago Link

This works great on my device for around a week then resets to the default (bing). 
I followed all instructions and changed all 3 of the SearchURLTemplates in the file. 

It resets back to bing without me restarting my device or syncing it. Is there another file somewhere that
returns safari back to it's default? I can't find it!
posted by [Old Forum guest] • 5 years and 3 months ago Link
I've tested in an iPhone 3GS. In the last step you have to restart Safari, not the phone as the text say.

Great recipe, man. Thanks :-)

I'll try to post a version in Spanish in my personal blog. Will add a link, of course.

posted by [Old Forum guest] • 5 years and 2 months ago Link
As someone said previously, this only works for a few days, then somehow defaults back to Google again. I've tried locking the SearchEngines.plist file after editing and that 'stuck' for longer, but did revert back again eventually. I'm now going to investigate whether setting some more restrictive permissions or even applying the system immutable flag to the SearchEngines.plist file will help. 

Apple seem inordinately determined not to let us change our preferred search engine!
posted by [Old Forum guest] • 5 years and 2 months ago Link
Thank you! I've been looking for a way to do this for a while. A few fixes to make it even better.

Don't replace Google. Like someone above mentioned, if something goes wrong, you want to still have Google there to go back to. Just in case. Instead, in the SearchProviderList array, add a new dictionary item with the plus in the bottom left corner. Inside that item, add the following (add in the values by selecting the items after creating them):
1. Name: ScriptingName; Type: String; Value: DuckDuckGo
2. Name: SearchURLTemplate; Type: String; Value: http://www.duckduckgo.com/?q={searchTerms}
3. Name: ShortName; Type: String; Value: DuckDuckGo
4. Name: SuggestionsURLTemplate; Type: String; Value: (copy value from Google one)
5. Name: Default; Type: Boolean; Value: On
Then delete the entire Default variable in the original Google array entry.

Changing the default to DuckDuckGo in the Plist file as well as in the Safari setting should ensure it stays default, and doesn't revert back like some people have mentioned.
posted by [Old Forum guest] • 5 years and 2 months ago Link
^^ it doesnt working..
posted by [Old Forum guest] • 5 years and 1 month ago Link
I just followed these steps on my iPad running iOS 7. However to edit the plist file I copied it over to my computer (using Fugu sftp) and did the edits in Xcode. The only difference is in step 5, where the Boolean gets set to "Yes" instead of "On".

It worked like a charm!
posted by <hidden> • 3 years and 5 months ago Link
Doesn't work for me either:

iPhone 4 iOS 5.0.1
posted by [Old Forum guest] • 5 years and 1 month ago Link
Mine was the post above, which ended "Apple seem inordinately determined not to let us change our preferred search engine!"

Here are the results of some more tinkering I did, which seems to have worked. Safari's search has not defaulted away from DDG for a month now.

Firstly, creating a new dictionary entry doesn't work. The file reverts as soon as you save it. So I stuck with the original concept of editing the Google entry. It's not like Google's hard to find, is it?

Here's what I did. I used the free DiskAid to navigate to the .plist files and double-click to open them in Xcode for editing, but I also did some of the job in a terminal, as it makes it easier to see what's going on as regards ownership and permissions of the files. I don't know if all these steps are strictly necessary, but it's what worked for me. As ever, YMMV:

1: First force quit Safari and System preferences from your iOS gadgets task bar

2: Now duplicate the existing /User/Library/Safari/SearchEngines.plist file. I did this by SSHing into my iPhone via a terminal:
  1. cd /User/Library/Safari/
  2. cp SearchEngines.plist SearchEngines-copy.plist
3: Now edit the copy [I used DiskAid / Xcode here] and make your changes. Editing a copy might not be necessary but after seeing my edits to the original disappear after saving it several times, I came to the conclusion iOS uses some kind of black magic to know when you've tinkered with that file!

3: Now change the copy file to be owned by root:wheel and make it read-only. Again, I did this via a terminal:
  1. chown root:wheel SearchEngines-copy.plist
  2. chmod 444 SearchEngines-copy.plist

4: That should stop iOS overwriting this .plist file with the default version, every time you open up Safari. Now swop the new copy version for the original. Again, I did this in a terminal:
  1. mv SearchEngines.plist SearchEngines-old.plist
  2. mv SearchEngines-copy.plist SearchEngines.plist
There you go. Like I say, one month on and it's still "sticking" for me, so hope that helps some of the rest of you.

One other thing: I would think making the SearchEngines.plist file read-only would stop you being able to change search engines from DDG to either of the other two offerings. I'm OK with that. I never use Bing or Yahoo!, but if you like to switch between search engines regularly, this is probably not the answer for you.
posted by [Old Forum guest] • 5 years and 29 days ago Link
Thanks, I'll try this later and report in.
posted by [Old Forum scepticrail] • 5 years and 28 days ago Link
Try repeating these instructions on
if the search engines revert back to default.

posted by [Old Forum guest] • 5 years and 17 days ago Link
Could someone simply share the .plist file? I could simply open it with iFunBox and copy inside my iPhone.
posted by [Old Forum guest] • 4 years and 8 months ago Link
I just did this on my ipad and it worked like a charm.  thank you.
posted by [Old Forum guest] • 3 years and 11 months ago Link
You need to delete the SearchEngines.plist% that iOS creates when modifiying SearchEngines.plist to prevent it from changing back...

Detailed steps available here: http://apropostech.com/2013/make-duckduckgo-the-default-search-engine-in-ios/
posted by [Old Forum guest] • 3 years and 8 months ago Link
This comment has been removed for violation of our forum rules.
posted by <hidden> • 9 months and 17 days ago
I can confirm that this does work on iOS 7.0.4 with Evasi0n7!

Also Xcode with iFunBox makes all of this way easier if you're on a Mac.
posted by <hidden> • 3 years and 5 months ago Link
likewise - can confirm, working on iOS 7.0.4

ftr, as explained below (https://duck.co/forum/comment/10568), i added DDG as a new (default) dictionary in both /User/Library/Safari/SearchEngines.plist AND /Applications/MobileSafari.app/SearchEnginesFallback.plist, and i deleted the ...plist% files it subsequently created.

one issue: at the top of the suggestions list, the following text is displayed:

"localized string not found Search" screenshot link attached.

any ideas what's causing this and how to modify the instructions we have here to prevent it?

posted by <hidden> • 3 years and 5 months ago Link
ok - fixed this by editing Localizable.strings in the relevant .lproj directory in /Applications/MobileSafari.app, as described here: http://apropostech.com/2013/make-duckduc...
posted by <hidden> • 3 years and 5 months ago Link
link is not working anymore. could you please explain how you fixed it. thanks
posted by <hidden> • 2 years and 7 months ago Link
This comment has been removed for violation of our forum rules.
posted by <hidden> • 3 years and 1 month ago
We do not approve link building on duck.co
posted by TV 2 years and 7 months ago Link