Flickr Base58 is the encoding behind short flic.kr photo links. It uses the same 58 unambiguous characters as Bitcoin’s Base58 but orders them differently, placing lowercase letters before uppercase. This tool encodes integers or UTF-8 text into Flickr Base58 and decodes them back, entirely in your browser.
How it works
Base58 is positional base conversion against a 58-symbol alphabet — here 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ:
- In integer mode, the input number is divided by 58 repeatedly; each remainder selects a symbol, and the symbols are read most-significant first. This is exactly how Flickr turns a photo ID into a slug.
- In bytes mode, the input is treated as one big-endian integer and converted the same way, with each leading zero byte encoded as a leading
1so it round-trips. - Decoding accumulates the characters back into the integer (integer mode) or into bytes (bytes mode).
Because the alphabet omits 0, O, I, and l, any string containing those characters is invalid and is rejected.
The Flickr short URL system
Flickr assigned each uploaded photo a large numeric ID — for example 2963218005. Encoding that integer in Flickr Base58 produces a short slug (bo7D5p in this case), which becomes the path of a flic.kr/p/ short URL. When someone visits the short link, Flickr decodes the slug back to the numeric ID and redirects to the full photo page.
This design was popular for link shorteners in the late 2000s because it produces short, case-sensitive, URL-safe slugs with no padding or special characters. Base58 was chosen specifically over Base62 partly because removing the four look-alike characters made slugs easier to share verbally or in print.
Flickr vs Bitcoin alphabet order: why it matters
Both alphabets have exactly the same 58 characters. The difference is purely in ordering:
| Position | Flickr Base58 | Bitcoin Base58 |
|---|---|---|
| 1–9 | 1–9 | 1–9 |
| 10–35 | a–z (lowercase first) | A–Z (uppercase first) |
| 36–58 | A–Z (uppercase second) | a–z (lowercase second) |
The same integer encodes to a different string in each scheme. For example, the number 1000000 encodes to bUKX in Flickr Base58 but DHWT in Bitcoin Base58 — different strings, same value. This matters when decoding: if you have a slug from a Flickr URL and decode it with a Bitcoin Base58 decoder, you will get the wrong number.
Integer mode vs bytes mode
- Integer mode: treats the input as a plain number and converts it to Base58. Leading zeros are not meaningful in a number, so
007and7produce the same slug. - Bytes mode: treats the input as a byte string where every byte position is significant. A leading zero byte is preserved as a leading
1character in the output so the round-trip is exact. Use this for encoding binary data rather than numeric IDs.
If you switch a value between this tool and a Bitcoin Base58 tool you will get different strings for the same number — that is the intended, defining distinction between the two variants.