August 3, 2009

The Google Voice Speed Dial Bookmarklet Generator

NOTE: See update at bottom of entry for instructions on converting your whole Address Book to bookmarklets at once.

Apology in advance: If you don’t have an iPhone and Google Voice, this entry will have limited appeal. Unfortunately, iPhones are pricey and not everyone’s cup of tea. But the good news is that Google Voice is free.

Those of you who follow tech news know that there’s been quite a dust-up recently over Google Voice apps on the iPhone. First they were allowed, but now they’re banned. So until they work things out, or Google comes up with a more elegant web-based solution, placing a call using Google Voice on the iPhone is a long and drawn-out process.

I think I’ve come up with a simpler way.

I’ve put together a web app at that generates bookmarklets for anyone you want to call with Google Voice, allowing you to organize your contacts as Safari bookmarks. You can arrange them in folders, and then dialing from your bookmarks is as simple as dialing from your normal Contacts app: just tap to dial!

Setting up the first phone number takes a few more steps than I’d like, but after that the rest are easy. Maybe you won’t want to take the trouble to add everyone from your Address Book, but it’s easy to set up a “Google Voice Faves” folder with all your most-called people.

I haven’t tested this on other people’s phones, but it works for me so I’ll cross my fingers and hope that it works for you. Let me know if you have success with it. I’m a javascript amateur, so I welcome tips for improvement.

Just point your iPhone to to get started.

NOTE: No phone numbers or any other information are sent to my server. All the magic happens on your end. And this is in no way affiliated with or endorsed by Google.

Update: See also this Python script (with instructions for use) submitted by a reader in the comments that will take all of your Address Book contacts and convert them to bookmarklet links in an html file. You can import those links to your Safari bookmarks and then sync with the iPhone. I have not yet tested this. I had to make one small fix (it swapped the phone numbers around), but it works!


An obvious (to me) improvement: generate a DOM that upon refresh, dials the number and calls window.close().

Then you can save a number’s dialer as its own app icon!

Just used it, and this thing ROOLS! Thanks man. The iPhone is a lot more compatible with Google Voice now. You are the man! :-D

It’s a subtle thing, but it may feel a bit less like you’re possibly sending something to a server by simply titling your action button something other than “submit”. Maybe “generate”?

Pretty cool. It’d be a pain in the ass to add all of my contacts, but for frequently used numbers it’s a great idea.

I don’t have an iPhone, yet I still see the use in this - adding the URL to the URL field in Address Book, for example… Or just speed dial from Safari…

Anyway, just to be clear, the ‘iPhone’ number is just there to be the number you want to be talking from, correct? So if I want to use this from my computer, I just put in my cell number under the iPhone entry box?

brh: I think it will work just fine as a desktop bookmarklet. Give it a try and let me know how it works. -David

Any idea how you could easily send a text message as well? Say click a bookmark name and have a dialog appear and enter message then hit enter?

BTW this captcha crap is just that. Especially twice.

Seems to work on an iPod Touch as well. Yeah, just input your “Call From” number where it asks for your iPhone number.

I’ll second the request for an SMS version.

Many thanks!

Is this also possible for iPod Touch? I was one of the lucky ones who downloaded the GV app before it was taken out. Is there anything different I need to do to make it work? The app won’t let me make a call (dialing a number). Only the text portion actually works. Any ideas?

Hey E11, I don’t know where the “Call From” number pertains to? I am trying to make it work on my iPod Touch.
Good work by the way and the contibutor of this process.

Mmmmmm, perfect activity for my cube.

Another trick and IMHO a better way is to get one of the Phone Card Apps in the App store (I use CardCaller Free) and use your GV number as the phone card.

This App displays all your contacts (it also has a customizable Favorites list) and you could call any contact in your address book easily from within the App using your Google Voice number.

Only caveat I found is that you need to press # after the whole tone sequence is sent (looks like the # character is not supported for now). Other than that, it actually works great as a replacement for the Phone App!

Sorry, I guess I wasn’t clear. This does work on the iPod touch to the extent that the Google Voice website works. It will not allow you to use your iPod Touch as a Google Voice Phone (that’s an other trick, using Fring + Sip + Gizmo5) to make calls directly from the iPod.

What the bookmarklet does is automate one specific phone call routed through GV. Where the form asks for your iPhone number it is really asking for the number of the phone you will be using (iPhone, cellphone, landline, Gizmo5, or other). This phone needs to be registered with your GV acct as one of your phones.

When you hit the link, GV will call your phone first, once you answer it, it will dial the number you’re tyring to reach.

Re: Ell message. So it simply duplicates Jajah then?

Point Safari at

Yeah, so here’s a python script that should convert your Macintosh Address Book to a bookmark file, which you can import to Safari and then sync to your iPhone. Or use it as a quick-dial phonebook page.

[NOTE: The script as submitted had an error. It swapped phone numbers around. I have updated the link to point to the updated script. -David]

Whoops. I don’t have a Google Voice account (or an iphone for that matter) so I couldn’t test it.

help me here is google voice source page??

Google Voice. View the source of the page, and find the text rnr_se in the source code. The text around it that you’re looking for looks something like this:

Re: Mike —
The process of making calls is very similiar between Google Voice and Jajah.

Google Voice service overall offers a lot of functionality that Jajah doesn’t seem to and is generally cheaper internationally, and free for calls within the US.

The whole issue here, and reason a gv dialer app or bookmarklet is key, is this gap between the potential Google Voice offers to unify all voice/sms messaging between yourself and the rest of the world (while saving you money) and the reality of using it which is that A) if you want to have your gv phone number show up on the caller id of those who you call there’s intermediate process to deal with, and B) that intermediate process extends and complicates what we all want to be the simple act of dialing a phone number (or tapping/clicking a saved contact’s number).

Since jaja doesn’t give you a new phone number and seek to engage in all kinds of high tech forwarding/voicemail/transcribing services they don’t have to worry about the caller id issue quite as much, because with GV: at the end of the day its about getting everyone, at anytime, to call the same number to reach you…. [this is going to put some receptionists out of work]

This thing is still pointless.

If you simply Bookmark your Google Voice Contacts screen on your Springboard, one tap gets you to GV, then one more tap to select the contact, and tap call button.

This saves no time and no taps.

Thanks but I jailbreak my iPhone 3GS just for Google Voice, but thanks again for your hard work.

Check out the workaround posted on . It uses an application called Card Caller, which is available in the the itunes store. It allows for automating commands to your Google Voice number (try it and you’ll see) and use of your contact list on your iphone. Don’t forget to hit the “#” after the automation!

Using the python script I was able to get all the contacts into my bookmarks, and that aspect seems to work fine. However once I select someone I call it just redirects to the GV page of that contact and claims to be “calling” but the call is never initated. Has anyone else had this problem?

I get an ImportError when I run the python script:

~> python Desktop/
Traceback (most recent call last):
File “Desktop/”, line 43, in
from AddressBook import *
ImportError: No module named AddressBook

How do I tell Python where my AddressBook module is?

Also, where is my AddressBook module? Or where do I get one?

You need to run the script on Mac OS X 10.3.9 or later. Earlier versions won’t work.

I’m running on 10.5.8. Do I have a bum Python installation?

seems like this links are now being blocked. anyone else having an issue?

I am getting the following error when attempting to run the python script:

Traceback (most recent call last):
File “Desktop/”, line 163, in
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe1’ in position 26375: ordinal not in range(128)

it does not create a file

Clinton looks like maybe you have a weird character in one of your contacts…

Try changing 2nd-to-last line:




Maybe that will do something.

Greetings everyone, I keep on getting the following error on trying to run the script:

TypeError: coercing to Unicode: need string or buffer, long found

The XML file never appears on the desktop. Any ideas about what is going wrong?

Not sure, but maybe you have a strange character in your address book somewhere?

Get an internal server error 500 message. Believe it is due to the source page address for GV - do not see what you set for in your instructions:
Any ideas?

Worked perfectly - had to examine the source page more carefully - Thanks

I’m having the same internal server error 500 message. I don’t see what was done to fix it. Can you help?

Is there a way to generate the htm script on windowsfor the python program? I have iphone but my computer is on windows

Hi, Is there a way to generate the .htm file on windows (instead of Mac) for the python program that bookmarks all phone numbers on my iphone?

Side Note: the bookmarklet WON’T work in EDGE-only mode (you have to have WIFI or 3G enabled).

I think that if your “LONGSTRINGOFCHARACTERS” has funky characters like slaskes, equals signs, etc, then you need to use the url encoding replacements. Thats the only reason that I can think of that mine isnt working, because I have worked at this for about 3 hours now. Hopefully I can piece it together by using the stuff I find at this page:

does anyone else think that they have my problem? Has anyone else overcome it?

scratch my previous comment… The reason that the link wasnt working for me is because of the i2 variable in the string. Thats the one that has your callback number. It was screwing up the call back default that I already have at

I opened up the link in textedit and deleted everything in the URL that had anything to do with “i2” (they were all bunched together.” Once I did that, it works just fine. Except that it doesnt work when I put it as the “website” fiels in my contact information ;(

As far as the python script, I think that I will just put the whole thing in the excell file that I export from my google contacts (which syncs with my phone with google sync) and build the urls myself.

I made a website that does all this for you. Just put in number) and you will connect to the phone number that you specify, if you are logged into google.

Or you can just go to to have a pretty dial pad which will conect you to where you want to go.

Had a few errors but I worked it out in the end and it now works great for me, thanks a lot.

This works great. Thank you.

Right, Google Voice is free, but you must have an account. Or an iphone. Great news, indeed!

I am still three taps away from making a phone call, I counted them very carefully. So where’s the point?