TheRealURL Chrome Extension

Lately I’ve been using Chrome quite a bit, and liking it a lot, which is why I was particularly excited to get a note from Don Magee at Tactical Coder saying he’s now using TheRealURL to power his Chrome URL Expander extension.

Don has some kind words for TheRealURL, too:

This is done by using the API found at: I know this is the second time I have switched backends. This new backend is even faster and supports every single url shortening service I have tried.

Thanks :)

I installed it on my Chrome and it works great. Note that the UI is a bit different from the Firefox extension – rather than displaying the long URL in the status bar, it inserts it in the HTML instead of the short one. So now we got Firefox, Thunderbird and Chrome covered (all, by the way, thanks to the kindness of developers I’ve never met, volunteering their code). If someone wants to do an IE/Safari/Opera extensions, let me know – I’d be happy to help any way I can.


The Not-Really-That-Much-Hype Cycle

So TheRealURL extension got “public” status at the addons.mozilla, and I guess it was on the “new add ons” or similar page for some time, which resulted in some nice graphs:

This is after about a week of pretty much flat lines, when it was still in the sandbox. The red line active daily users. Nothing crazy, but nice steady growth, all in all. I really like the way the blue line – daily downloads – matches nicely to the Hype Cycle line:

Well, there wasn’t that much “Peak of Inflated Expectations” so the “Trough of Disillusionment” wasn’t that deep either ;). 1,522 downloads in total so far, in about 2 weeks.

TheRealURL Firefox/Thunderbird Add On

TheRealURL Firefox add on (which also works in Thunderbird, Flock, and Seamonkey) lets users get URL information on links – once the extension is installed, right clicking a link will show a new option in the context menu, “Get TheRealURL”:

Clicking it retrieves the URL’s information from TheRealURL’s JSON service and displays the unshortened URL, the page title and the content type on the status bar:

You can change the information displayed via the add on preferences settings:

I find it useful for checking URLs in possibly-spam messages, which recently started using URL shorteners to mask their addresses, and generally checking short links in blogs/twitter/etc. I was happy to discover Softpedia now lists it, with a %100 clean guarantee.

TheRealURL extension’s code was contributed by Rod Whiteley, creator of Mail Tweak, following a message I posted at MozillaZine forums. It was pretty amazing to post an idea on the evening and have a working first version by morning. Rod did an incredible job, with a lot of attention to detail, which I’m very grateful for. Thanks Rod!

Google App Engine Quotas on > 430k Requests/Day

[UPDATE: Posted this yesterday for >140k requests/day, updating now with >430k requests..]

TheRealURL had a particularly busy Thanksgiving Day Black Friday for some reason. Just for curiosity’s sake, here’s the quota usage for a GAE application under a relatively high load. The quotas that aren’t pictured are all on %0. Billing is now turned on (for the Incoming Bandwidth) but limited to up to $1/day – and was never used yet.

Bear in mind this is a pretty minimal app, of course, but still – not too shabby.

UnShorten WordPress Plugin Uses TheRealURL

I recently found that Jon Rogers, a developer from the UK, released the UnShorten WordPress plugin, which uses TheRealURL to unshorten links displayed by the Twitter Tools plugin.

That’s pretty cool, TheRealURL was designed as a web service with exactly this type of use in mind.

Between this and other users TheRealURL now serves over 40,000 requests a day. It’s nice to see Google App Engine handling that with barely using any of the various daily quotas (except for incoming bandwidth… Need to check on that one):

TheRealURL GAE Quota Usage

TheRealURL Adds Page Titles

I needed this for a project I’m working on, so I added a new feature to TheRealURL unshortening service: JSON/P requests now return the page title (scraped from the HTML <title> tag) as well as its original URL.

For example, returns:

{ "url" : "", "title" : "Apple" }

The plain text format remains as is – nothing but the unshortened URL – so I don’t think there should be any issues for existing API users. Response times don’t appear to be affected much either. If you do get any issues, please let me know in the comments or at

The Real URL

[UPDATED on April 21st, 2009 to reflect the JSON/P additions. Since it’s <24 hours after the initial release, I hope it won’t cause anyone problems.]

The Real URL began as a joke – after discovering, while working on another project, over 80 URL shortening services, I figured there must be room for a service that un-shortens all these URLs. (The web is overflowing with hype and blog posts/articles complaining about it just add to the noise, so it’s better to make your point by building something. My favorite example is the Twittering Office Chair).

Turns out there are already several out there: (eg, trueurl) but I built it anyway, since I had a slightly different approach in mind. The Real URL is meant to be used as a web service rather than on its own. It returns the “real” URL in either raw text, JSON or JSONP format – examples and details are on the homepage. (I added JSON mostly for JSONP, per Chris’ comment – admittedly I didn’t even know it existed ;) This enables cross site JS requests which might actually make The Real URL useful.

While I do want The Real URL to be solid and reliable in the long term, I don’t want to spend much time/money keeping it up. It’s a sustainability issue – building a system that will work reliably over a long time while requiring minimal care and resources. I made a few design decisions to that end:

  • Keep it simple (always a good idea). Real URL does only one thing and is accessible in only one way (the homepage demo uses XHR to access the service, to keep it so). It now supports text/JSON/JSONP, but it’s just the same output formatted differently. Sometimes you give up some elegance to make the product useful. As in the following item:
  • Deploy with Google’s App Engine. Initially it was nice, super-minimal Sinatra code. Unfortunately Google App Engine doesn’t support Ruby yet and there’s no service that offers comparable cost/stability ratio, so I rewrote in slightly less minimal Python for GAE.
  • Use App Engine’s domain ( Buying a domain and keeping it renewed isn’t a big deal, but it still requires some attention – especially if you happen to hit a nice domain name which people try to grab or piggyback on. Sticking with appspot.domain minimizes this issue. (if the need rises I might add a “real” domain later on, but in any case will remain active)

If you find a use for The Real URL this or have an idea for one, please comment here or email me at Let the street find its own uses etc ;)