Skip to content
QRMakery

Vanity QR Code

A vanity QR code is an ordinary symbol carrying a link you own: brand.co/spring rather than a rented slug or 110 characters of campaign tracking. The case made for it everywhere else is that people trust a link they can read, which may well be true and which nobody has published a number for. Here is the half that can be measured: a shorter link is a physically smaller code.

Type the slug you are considering. This prices it in modules and in millimetres of print, before you buy anything.

Error correction
LinkCharsModeVersionModulesMin print
As you typed ithttps://qr.brand.com/spring27Byte33714.8 mm
In capitalsHTTPS://QR.BRAND.COM/SPRING27Alphanumeric23313.2 mm
As typed, 37 modules
Capitals, 33 modules

Capitals save 4 modules here, which is 1.6mm off the smallest width this code can print at.

The scheme and domain are case-insensitive by spec, so HTTPS://EXAMPLE.COM always resolves. The path after the domain is not: most servers treat /SPRING and /spring as different pages. Make the redirect case-insensitive, or keep the slug to digits and characters that have no case, before printing an uppercase code.

Custom QR code with rounded modules, styled finder shapes, and scan check
Design board comparing QR module and finder-eye shape combinations
Custom short link connected through a styled QR code to a landing page

Capitals Make the Code Smaller. Really.

QR encoding is not one character, one cost. ISO/IEC 18004 defines several modes, and two of them matter here. Byte mode spends 8 bits per character and takes anything. Alphanumeric mode packs two characters into 11 bits, roughly 5.5 bits each, but its alphabet is fixed at 45 characters: digits, capital letters, space, and $ % * + - . / :. No lowercase. Not one letter.

So https://qr.brand.com/spring encodes in byte mode, and HTTPS://QR.BRAND.COM/SPRING encodes in alphanumeric mode. Same link, same destination, and on the measurements above it is a whole symbol version smaller. Fewer modules means each module is physically larger at the same print size, which is the thing that decides whether a code on a business card reads at arm’s length.

There is a catch, and it is the reason this trick is not on every generator. RFC 3986 makes the scheme and the host case-insensitive, so HTTPS:// and the domain are safe to shout. The path is a different thing: it goes to your server as typed, and any server mapping URLs onto a case-sensitive filesystem, which is the default for Apache and nginx on Linux, treats /SPRING and /spring as two pages. So the redirect has to accept both spellings before the uppercase code is printed. Set it up, scan it, then take the smaller symbol.

Do You Need a Second Domain?

This is the question the vanity pages skip, and it decides whether you spend money. Five shapes of the same campaign link, measured.

Measured when this page was built, by the same encoder the tools use. Minimum print width is at 0.4mm per module, and every symbol was decoded back to its input before its row was published.
Link shapeCharsModules, MMin print, MMin print, H
Short vanity domainYou own itcapitals availablehttps://qr.brand.co/springA second domain bought for links. The shortest realistic option, and the one people mean by vanity.263313.2 mm16.4 mm
Provider slugYou rent itcapitals availablehttps://exmpl.co/7Kd2QaWhat a link shortener hands you. Same length class as a vanity domain, and you are renting the slug.233313.2 mm14.8 mm
Subpath on your main domainYou own itcapitals availablehttps://www.brandname.com/springNo second domain, no subscription, and the redirect is yours. Costs a few modules for the www and the longer name.323714.8 mm16.4 mm
The real destinationYou own itcapitals availablehttps://www.brandname.com/collections/spring-sale-2026The page the vanity link redirects to. This is the code you print if you skip vanity links entirely.544116.4 mm19.6 mm
The tracked destinationYou own ithttps://www.brandname.com/collections/spring-sale-2026?utm_source=poster&utm_medium=qr&utm_campaign=springThe same page with the tags an analytics team asks for. This is what a vanity link is really saving you from.1064919.6 mm26 mm

The second domain buys you 4 modules against a path on the domain you already own, which is 0mm of print width at high error correction. Against the tracked URL it replaces, the same vanity link saves 16 modules and 9.6mm. That second number is the one worth acting on. The first is a rounding error you can spend on a shorter slug instead of a domain registration.

My read: buy the short domain when humans have to type or say the link, and skip it when the only reader is a camera. The modules you save against a path on your existing domain are a rounding error. The modules you save against a fully tagged campaign URL are not, and you get those from any redirect you control, including one on the domain you already pay for.

Choosing a Slug That Encodes Well

Five decisions, all made before the code exists, all cheap now and annoying later.

  1. 1Digits and hyphens are free, underscores are notThe alphanumeric set has a hyphen in it and no underscore. Swapping _ for - in a slug can be the difference between two encoding modes, and it costs you nothing to decide now.
  2. 2Keep the query string out of the printed linkA question mark, an equals sign and an ampersand are all outside the set, so a single utm tag forces byte mode for the whole link. Put the tags on the redirect's destination instead, where no camera has to read them.
  3. 3Pick a slug that survives being shoutedSPRINGSALE26 is still readable on a poster. A camelCase slug or a word that only parses in lowercase is not, and it throws away the capitals option covered above before you have had a chance to use it.
  4. 4Count the characters before you buy the domainqr.brand.co and links.brandname.com are not the same purchase. The planner above prices both in modules, which is the only unit that matters once the code is on a card.
  5. 5Never print a vanity link you do not ownA rented slug puts a renewal date on something physical, and the shortener decides when it lapses rather than you. Codes die this way, and the fix costs a domain registration.

Encode the Link

Once the slug is settled and the redirect is live, the code itself is the easy part. Paste the vanity link here and the symbol is generated in your browser, decode-tested, and yours as an SVG.

Add your link or content

What the code should contain

Only http and https links are allowed. Missing schemes become https.

Customize your QR code

Finder squares stay square whichever you pick. They are what a scanner locates the code with.

The blank margin scanners need. 4 is the standard minimum.

Download your QR code

✓ Scan-tested: this code reads back correctly.

Contrast 21:1, Strong

Version 2 · 33 modules · print at least 13.2 mm wide

What QRMakery does not do here

The vanity half is yours to host, and it is worth being exact about where the line falls.

  • No custom domains. The dynamic codes on this site redirect through this site’s address, so they are editable but they are not your brand in the link.
  • No link shortening. This page prices a slug, it does not register or serve one. Once it is settled, the plain generator encodes it in two fields.
  • No redirect hosting on your domain. That is a DNS record and a rule on your own server or CDN, and it is the part that makes a vanity QR code genuinely yours.
  • The planner encodes what you type as plain text so it can measure a half-finished slug. The generator below validates it as a URL, which is the check that matters before you print.

If the destination might change later, static vs dynamic QR codes works through the redirect question properly, including the version where you own both ends.

Vanity QR Code Questions

What is a vanity QR code?

A normal QR code carrying a short, readable link you control, like brand.co/spring, instead of a provider slug or a long tracked URL. Nothing about the symbol is different: the vanity part is the text inside it. That matters for two reasons, and only one of them gets written about. The readable part is the marketing argument. The measurable part is that a shorter link means fewer modules, so the code prints smaller and scans from further away.

Do I need a separate short domain, or can I use my main one?

For a code that only a camera reads, your main domain is fine. The table on this page measures the exact gap: a subpath like brandname.com/spring costs a handful of modules against a dedicated qr.brand.co, and it needs no second registration and no second renewal. The short domain earns its money when a human has to type the link off a poster or say it out loud.

Can I change where a vanity QR code points after printing?

Yes, if you own the redirect. That is the real reason to encode your own link: the printed symbol stays the same and you repoint the URL server-side whenever you like. It has to be your redirect though. The dynamic codes on this site run on this site's address, not on your domain, so a custom vanity domain is something you host yourself today.

What happens to the printed codes if the domain lapses?

Every one of them stops working, at once, with no way to fix the copies already printed. A vanity QR code moves the point of failure from a shortener you rent to a domain you own, which is better but not free: the renewal now matters as much as the print run did. Put the domain on auto-renew, and on a card that does not expire before the codes do.

Does putting the link in capitals really scan the same?

Yes for the scheme and the domain, because both are case-insensitive by spec, and the planner on this page decodes both versions before it shows you the numbers. The path is the catch. Most servers treat /SPRING and /spring as different pages, so an uppercase code only works if your redirect accepts either. Set that up first, then take the smaller symbol.

Colour, a logo in the middle, artwork behind it, each one measured against what still scans.

All tools

Guides worth reading

All guides
  • Comparisons

    Static vs Dynamic QR Codes

    What the redirect actually buys you, measured on real encoded codes, and which payloads are worse off for it.

    16 min read