Here are two examples using a random url from this website http://2d-code.co.uk/qr-code-scavenger-hunt-new-york-city/
Google’s goo.gl shortens the url to http://goo.gl/8xLR and by appending .qr to the shortened url we can produce the QR Code on the left.
Technically this is a QR code version 3-H mask #6, encoded in BYTE.
The 3 means that it is 29 x 29 modules (matrix), the H means the error correction level is set to the highest of the four levels, mask #6 is the mask selected to even out the dark and light modules and BYTE means the encoded character set is in 8-bit bytes. These are all variable components of the specification for QR Codes.
As you would expect the QR Code decodes to the original short url http://goo.gl/8xLR
bit.ly shortens the url to http://bit.ly/brqn3X (and as with Google) by appending .qr to the shortened url we can produce the QR Code on the left.
Technically this is a QR code version 2-L mask #2, encoded in BYTE.
Or 25 x 25 modules at the lowest of the error correction levels with mask #2 and encoded in 8-bit bytes.
The QR Code is dimensionally smaller in terms of modules than Google’s because it has been encoded at a lower error correction level and hence fewer modules are required.
Surprisingly the QR Code does not decode to the original short url but to the original url plus a query string http://bit.ly/brqn3X?r=qr
There is a very good reason why bit.ly appends a query string and that is to track clicks where the referrer is a QR Code. In a bit.ly account under the Analyze tab there is a Top Referrers section. Clicking the plus sign after Registered Applications will give the number of times the shortened url was used via a QR Code (example below).