need to use a separate URL shortening service just to shorten URLs in a tweet. On other such services, using a URL shortener can allow linking to web pages which would otherwise violate this constraint. Some shortening services, such as , , and can generate URLs that are human-readable, although the resulting strings are longer than those generated by a length-optimized service. Finally, URL shortening sites provide detailed information on the clicks a link receives, which can be simpler than setting up an equally powerful server-side analytics engine, and unlike the latter, does not require any access to the server. URLs encoded in two dimensional barcodes such as QR code are often shortened by a URL shortener in order to reduce the printed area of the code, or allow printing at lower density in order to improve scanning reliability. Registering a short URL Some websites create short links to make sharing links via instant messaging easier, and to make it cheaper to send them via SMS. This can be done online, at the web pages of a URL shortening service; to do it in batch via bulk upload with tools like CSV importer or on demand may require the use of an API. A few well-known websites have set up their own URL shortening services for their own use for example, Twitter with t.co, Google with g.co, and GoDaddy with x.co. Techniques In URL shortening, every long URL is associated with a unique key, which is the part after its top-level domain name. For example, has a key of , these keys are case-sensitive most of the time and entering wrong case may lead to different destination URL. Not all redirection is treated equally; the redirection instruction sent to a browser can contain in its header the HTTP status 301 (Moved Permanently), 302 (Found), 307 (Temporary Redirect) or 308 (Permanent Redirect). There are several techniques to implement a URL shortening. Keys can be generated in base 36, assuming 26 letters and 10 numbers. In this case, each character in the sequence will be . Alternatively, if uppercase and lowercase letters are differentiated, then each character can represent a single digit within a number of base 62 (26 + 26 + 10). In order to form the key, a hash function can be made, or a random number generated so that key sequence is not predictable. Or users may propose their