How long a URL fits on the smallest common tag?
Longer than most people expect, because the standard stores common prefixes as a single byte rather than as text. What consumes the budget is rarely the domain and almost always the query string, where tracking parameters can be several times the length of the address itself.
A character is a byte
For an ordinary web address, each character costs one byte of tag memory. That makes the arithmetic simple: count the characters, add the record overhead, compare against the free space.
Non Latin characters and accented ones cost more than one byte each, which matters for internationalised domains and for paths containing them. An address made of unaccented Latin characters is the cheapest form there is.
The prefix costs one byte
The URI record type stores the common opening of an address as a single byte code rather than as text. The familiar prefixes are all in that list.
So the visible opening of a typical address costs one byte on the tag instead of the dozen characters it appears to be. This is why short addresses fit comfortably on chips people assume are too small.
The saving applies only to the prefix. Everything after it is stored character by character, so the rest of the address is charged at full rate.
Parameters are what break the budget
A domain and a path are short. A query string with campaign parameters, a session token and an identifier is not, and it is regularly longer than the address it is attached to.
This is where capacity problems come from in practice. The address looks modest when written down and doubles once the tracking is appended.
It is also the part most easily moved. A short path on a domain you control can resolve to whatever long address you like, with the parameters added server side and invisible to the tag.
Shortening the right part
Use your own domain rather than a third party shortener. A shortener puts a company between your tags and your visitors, and if it disappears every tag you deployed becomes a dead link you cannot repair without physical access.
Keep the path short and stable, since it is the part written into the tag and therefore the part you cannot change afterwards.
Move parameters to the server. The tag carries an identifier, your server knows what to do with it, and the tag stays small enough for any chip.
Measure the final address rather than the draft. The version that goes on the tag is the one that has to fit.
Frequently asked questions
Does https cost more than http?
No. Both are in the abbreviated prefix list, so each costs a single byte regardless of length. There is no capacity reason to prefer one, and there is every other reason to use https.
Should I use a URL shortener to save space?
Use your own domain instead. A third party shortener saves the same bytes and adds a dependency that can break every tag you deployed if the service ends.
Can a tag hold two URLs?
It can hold several records, and phone behaviour on multiple records is inconsistent enough that it is rarely worth doing. One address that leads to a page offering choices is more predictable.
How do I know if my URL fits?
Read a blank sample for its free space, then count the characters after the prefix. If the two numbers are close, shorten the path rather than buying a larger chip.