CompoundPage

QR Code for a Phone Number

A QR code for a phone number opens the dialer with the number ready, from any country if it is written right. tel:NUMBER, with the number in E.164 and its leading plus. The working example below is 16 bytes, which fits a version 2 code at level M.

A URL, some text, or a structured payload like WIFI: or mailto:.

Higher levels survive more damage and need a bigger code.

QR codeVersion 2, level M

tel:+15551234567
Version
2 (25 x 25 modules)
Error correction
M - Medium, recovers about 15%
Payload
16 of about 26 bytes used
Mask The lowest penalty of the eight mask patterns, which scored 659, 516, 606, 593, 528, 600, 543, 704.
1 of 0-7, penalty 516

How the QR Code Generator works

This generator encodes a phone number payload. The grammar is: tel:NUMBER, with the number in E.164 and its leading plus.

The example above, tel:+15551234567, is 16 bytes, which at error correction level M fits a version 2 symbol, 25 modules square. The encoder scored all eight mask patterns and chose 1, which is not a preference: the specification requires the lowest-penalty mask, so any correct encoder given this text produces this identical image.

Write the number in E.164: a leading plus, the country code, then the national number with no spaces, hyphens or brackets. tel:+15551234567 works everywhere; tel:(555) 123-4567 works from inside one country and fails from outside it, which is exactly the case a printed code is most likely to meet. Most scanners show the number and ask before dialing rather than dialing immediately, which is the correct behavior and means this is safe to print. A related format, sms:+15551234567?body=text, opens a composed message instead.

On the error correction level: M recovers about 15% of the symbol. That is the single most useful dial on a QR code and the one most often left alone. Raising it costs capacity, which pushes the version up, which makes each module smaller at the same printed size. So the right level is the lowest one that survives where the code will live. A code on a screen needs almost none; a code on a sticker on a machine needs a lot.

Nothing about this is sent anywhere. The code is built from the text in the field, in your browser, and the site has no server that could receive it. It also does not expire, because there is no redirect in it: what the camera reads is your payload, not a reference to a row in somebody's database. A QR code that goes through a shortener stops working the day the shortener does.

QR Code Generator FAQ

What is the exact format for a phone number QR code?

tel:NUMBER, with the number in E.164 and its leading plus. The working example above is tel:+15551234567.

What goes wrong with this format?

Write the number in E.164: a leading plus, the country code, then the national number with no spaces, hyphens or brackets. tel:+15551234567 works everywhere; tel:(555) 123-4567 works from inside one country and fails from outside it, which is exactly the case a printed code is most likely to meet. Most scanners show the number and ask before dialing rather than dialing immediately, which is the correct behavior and means this is safe to print. A related format, sms:+15551234567?body=text, opens a composed message instead.

How big does this code come out?

16 bytes at level M gives a version 2 symbol, 25 by 25 modules. Each version is four modules wider than the last (21, 25, 29 and so on), so adding a few characters can jump the whole symbol up a size. Print it at least 2 cm across, and keep the four-module quiet zone around it.

Does it expire, or track anyone?

Neither. The payload is encoded directly into the image, so there is no redirect to switch off and nothing to log. The encoding happens in your browser, on your own device.

More from the QR Code Generator

Related calculators

Embed this calculator
<div id="compoundpage-qr-code-generator"></div>
<script src="https://compoundpage.com/embed/qr-code-generator.js" async></script>

The same calculation as JSON