The legendary @davewiner has recently written a couple articles about how to fix URL shorteners.
How to fix URL-shorteners
How to fix URL-shorteners, part II
Dave’s solution involves using Adjix with his own short domain to create and track the short URLs. He also duplicates all the shortened URLs to an Amazon AWS S3 bucket. If Adjix ever goes away, or he becomes unhappy with their service he can repoint his own domain to his AWS S3 bucket and the short URLs will continue to work. It won’t be as easy to create new short URLs or track the traffic they get, but the URLs will continue to work.
After reading yet another TechCrunch article about yet another URL-shortener that offers nothing new and thinking about’s Dave’s suggestions I had an idea for something new in the world of URL shorteners….
Personal Shortened Subdomains
Instead of shorteneing only the path part of the URL, I propose adding a shortened, personalized subdomain unique to each user. As you will see by reading the rest of this post, there will be many benefits to this. The DNS would use a wildcard DNS record so the DNS would not need to be modified for each new user.
Users would be able to select their own vanity subdomain, their initials, their name, etc. or the shortest available domain would be assigned to them.
Even shorter paths
If every user has their own subdomain the path portion of the URL can be even shorter. Instead of needing to be unique across all users, it only needs to be unique for that user. If we use a character set of A-Z, a-z, and 0-9 the path portion for each user’s first 62 URLs will be a single character. Of course this comes at the expense of requiring a subdomain. Don’t bail on me yet, there are other advantages to the path being unique only to your subdomain.
Looking at the links Dave Winer has posted since implementing his new URL-shortener it looks like his paths are unique across all Adjix links, so instead of being one or two characters, they are four characters. The more other people use Adjix, the longer his URLs will become.
Link authority
A problem with URL-shorteners is most do not reveal what the destination is, or if the content is safe. With my proposed link shortener because each user’s subdomain is unique and the path is unique only to that subdomain you can rest assured that gk.ur.ls is a link from Guy Kawaski or dw.ur.ls is a link from Dave Winer and therefore fairly safe for you to visit. (ur.ls is just an example short domain, I wish it were available.)
Dave’s solution may give the false impression of this, but since his paths are unique to all of Adjix and his domain is a CNAME of adjix.com you can put an Adjix path for a link he didn’t create after his domain and the link will redirect properly. Thus giving the false impression that a URL like http://c.oy.ly/gek7 is his, when it isn’t. With this proposed URL shortener since the path would be unique only to the personal subdomain, every link that goes through that subdomain will have been created by the owner of that subdomain.
Homepage of your personal subdomain shows stats for all your recent URLs
Because the subdomain is unique to the user you could easily make the homepage of that subdomain show information about that user and show public stats for the domains he links to. With existing shorteners there is no obvious way to do this since everyone shares the same pool of paths and domain. Even for Dave’s domain which is unique, http://c.oy.ly is the Adjix.com homepage, rather than anything specific to him or his domain, because his domain is just a CNAME of Adjix.com
People could go to the homepage of your personal subdomain and get stats for the URLs you have been linking to. It could be like Dave Winer’s 40 Twits showing the 40 most recent URLs you have shortened and how many clicks they have received. It could also be a more in-depth page like Digg or TweetMeme showing page titles and snippets along with the number of clicks.
Redirect a domain you own to your personal subdomain
A major concern since tr.im announced they were shutting down (and then later changed their mind) is the persistence of shortened URLs. The first step required in having URLs that can outlive the shortener is using your own domain. You would be able to create a CNAME record for a domain you own, or redirect a domain you own to your personal subdomain on this new URL shortener. Then the links you post would be to a domain you control and they would go through this URL shortener for tracking and management.
Export your links and redirect your personal domain
The reverse of this would also be available. If you have used this new shortener and decided to take your link management to your own server, or to another similar shortener you would be able to export your links in a number of formats, XML, Apache redirects, .html files with meta redirects, etc. Once you set these paths up on your new service you would tell the existing shortener to redirect all requests for your domain to the new service. If you were using a domain you owned and redirecting to the shortener you would simply need to change where your domain is pointing and all your links would continue working.
If a URL shortener decided to stop offering its service, the links would be able to live on by managing only the domain level redirects to the service of your choice. The path portion of the URL would pass through the redirect unchanged, so even new short URLs created after moving would work.
An API could be created to allow you to export your new URLs regularly and archive them where you are in complete control.
As I was writing this post some of the advantages described above occurred to me. I’m sure there are other advantages and other ways to make a new URL shortener that offers something different. What are your ideas?
P.S. be sure to check out http://tweete.rs it is still in the early stages of construction, but it already has lists of tweeters, their tweets, and related tweets from all tweeters on nearly 100 topics.
The best (imo only) solution for the URL shortening problem is for sources to create their own URLs and advertise them via HTTP Link: headers and HTML LINK elements. That way user agents can find the URLs quickly and easily and the result is still transparent (e.g. http://microsoft.com/win7). The performance impact is negligible (especially if the same domain and therefore HTTP connection is used) and the redirects will survive at least as long as the content itself.
My proposal for advertising this relation is rel=shortlink, which is already supported on something like 120m pages (most of which are wordpress.com blogs).
Sam
Another solution that avoids shorteners altogether would be for twitter to support an additional field for the URL so it doesn’t count against your 140 characters. They are adding fields for latitude and longitude now. They could add a URL field. The problem is every twitter client would have to be updated to support it, and you would likely be limited to one link per tweet.
I expect rel=”shortlink” to become a more common element of pages, thanks in large part to WordPress.com.
Nice post. I wrote one kinda like it — with a slightly different twist.
1) Get your own short domain and rolling your own short URLs from that, rather than relying on a subdomain under somebody else’s domain. I even ran out and got a couple shortened versions of domains that I blog under (e.g. gzrcst.com resolves to geezercast.com, hvn2.com resolves to haven2.com).
2) Make sure the “non-www” version of the domain also resolves, saving 4 characters.
3) In the case of WordPress, use the “ugly” URL that WP creates for each post rather than the (usually longer) permalink.
The result is pretty-short links that I never have to worry about losing, ’cause they’re MINE! ALL MINE!
Here’s an example, which points to the post I wrote about this topic;
http://hvn2.com/?p=209
Mike, this is obviously a very good solution for the people who are technically inclined enough to do it. And if all they want to link to are their own blog posts, WordPress makes it easy. There could be some issues with tracking and analytics, but nothing that can’t be overcome
[...] How to Fix URL Shorteners – My Take « tweete.rs blog tweete.rs/blog/how-to-fix-url-shorteners-my-take – view page – cached #tweete.rs blog » Feed tweete.rs blog » Comments Feed tweete.rs blog » How to Fix URL Shorteners – My Take Comments Feed tweete.rs blog How to Fix URL Shorteners – My Take — From the page [...]
If you were following Marshall and Dave’s “Bad Hair Day” during/after the tr.im announcement, you may have heard me on their show talking about “rp.ly” – a brand-new open source, community-owned (still working out how that will work exactly), shortener that [[ uses your domain not ours ]]. It’s a clone of the tr.im API.
The service is beta testing with a few users now. You can log in with read-only Twitter OAuth and set up one of your own domain names or sub-domains as a shortener, rp.ly will “remotely host” the URL shortener for you while returning the URL data as an RSS feed. This is done without any complex setup on your part, just redirect a domain or sub-domain at rp.ly
de-coupling your short URLs from free 3rd-party providers is now possible with the new services from Adjix, http://rp.ly and others. Once you have your URL data in hand and are using your own domain name, the reliability of your short URL provider doesn’t matter because you can choose to self-host or move your shortening/redirecting service from rp.ly to Adjix to ____.
“loosely coupled”
Brian Hendrickson
Co-founder http://nozzlmedia.com
Founder http://megapump.com
brian@rp.ly
Brian, I listened to that Bad Hair Day live. When I first read about rp.ly on Dave’s blog I figured your domain was pronounced “Reply”, but if I recall correctly, you pronounced it “Ripley”. I definitely like the idea of an open-source community-owned shortener, and if I create a shortener like the one I described would try to make it like that. Like you, I’m not sure how a community owned site will work, I think tr.im is trying to figure that out too.
Domain shorteners definitely seem to be moving in the right direction with the work you, Adjix, and Dave have done. And the decision to shutter tr.im and then the decision to open tr.im up brought this issue to the forefront.
Once again, the problem I have with redirecting a domain I own to the root level domain of a shortener is people can impersonate my links. This looks like a link from Dave Winer, but in reality I created it myslef on Adjix and changed the domain to Dave’s: http://c.oy.ly/gek7
Really interesting discussion here at http://tweete.rs – I forgot to mention that I was motivated to post a comment on this article because of your attention to the length-of-shortcode issue.
I designed rp.ly so that each shortener has a totally separate database (in fact, a separate API back-end too), so the URLs look like this http://bh.ly/b and currently use [a-z0-9]. I wasn’t sure if [A-Z] could be problematic
You mentioned the pronunciation of “rp.ly” and I have fallen into the habit of saying & thinking “ripley” but my wife says “reply” and I think that sounds a lot cooler so i’m trying to say that
Cheers
— Brian
Hi Mike,
I really like some of your ideas here – especially the part about resolving c.oy.ly so I implemented it to test it out. I’m not sure if there’s a better way to implement it, though. So consider it, in this case, as in “QA”.
I think this is what you had in mind:
http://c.oy.ly
We’re also considering writing out the stats for each link as an XML file to your bucket so that the key data would be transferable should a user move away from Adjix. There are a lot of possibilities.
We launched Adjix a year ago with the ability to use your own domain name – obviously, though, most users don’t use this feature.
Cheers,
Joe
Joe, nice work making http://c.oy.ly redirect to Dave’s 40Twits page! In the shortener I described that content would be at the domain itself, rather than redirecting elsewhere, but that doesn’t matter much.
I like your idea of making the stats available as XML.
One problem with Adjix I’m sure you’ve heard over and over is that it returns a status code of 200 instead of 301 (because you redirect with a meta tag), so link juice is not passed to the final destination. I’m not sure how important that is. For all I know most places people use shortened links have a nofollow attribute on the link so the link juice isn’t passed anyway. You clearly think the advantages of doing it your way outweigh the disadvantages, you may be right.
Hi Mike,
Please take another look – I think you’ll now see that we’re trying out a 301 redirect.
I’ve considered publishing stats – but there are privacy concerns.
Cheers,
Joe
Nice! I checked the headers for http://c.oy.ly/ before my previous comment, and it returned a 200, still does, but that of course is a special case and not a normal redirect.
Good thoughts.
The idea of mapping the short tracker domain to an about page or redirect to the users preferred url is a good suggestion for providing some form of identity on the urls that are being generated.
A subdomain, as you point out, would work for this. However, adding a clear subdomain that actually is immediately identifiable without becoming too long (defeating the purpose of a short url) could become a challenge. And you basically get into name squatting, spoofing and impersonation issues just like everywhere else. Though that could be moot since its a universal problem.
The subdomain does allow for a good technical separation of ownership.
A more casual approach without subdomains could be to just append a short url with an ID for example – http://my.su/Ru6_sull where ’sull’ is my id and http://my.su/sull or http://sull.my.su could be my about page on the service or itself a redirect to my preferred url that identifies me such as my sull.tel domain
This casual approach could work in conjunction with your subdomain idea and allow for preserving a domain’s vanity appeal without interrupting it with a subdomain. for example, if i had the domain jmp.to, i might not want to have to add an ID subdomain to it (sull.jmp.to/Ru6). It just messes up the vanity appeal. so instead, jmp.to/Ru6_sull means the link is by sull and a user could check me out at sull.jmp.to.
As for your other points, they are important and as you noted they are being considered by the likes of Brian Hendrickson’s rp.ly, adjix and tr.im as well as any self-hosted DIY system. I’ve pointed to Yourls.org a few times in other blog comments (i have not used it myself) and at least a half a dozen Wordpress plugins and many more tutorials and scripts floating around.
I personally lean towards suggesting DIY solutions in this space. But a good mix is the next best solution. I plan to test out rp.ly etc and compare to my own software/techniques. I like the adjix experimentation with s3. My software also depends on static files with XML (ie. RSS) feeds for exportability and mirroring (and could involve importing to s3 account without giving shared access to the buckets).
Though I don’t agree with some of the methods involved in the adjix recipe (ie. meta-refresh, requiring subdomain/CNAME etc.) I do love the experimentation and willingness to delve into helping Dave Winer and others with the issue of data ownership and branding.
These are good community efforts and yourself, Joe Moreno, Brian Hendrickson, Eric Woodward, Dave Winer, Marshall Kirkpatrick and others are all socially available participants. In a way, that’s the best part of this whole silly url shortening debate.
[...] How to Fix URL Shorteners – My Take « tweete.rs blog. Good thoughts. [...]