How to Make a Free QR Code That Never Expires: Links, Wi-Fi and Location
A QR code whose content is written directly into the code itself never expires; here is how to make one for each use and make sure it scans reliably.
QR codes are everywhere today: on café menus, business cards, product packaging and shop windows. Making one takes no more than a few seconds, but a few small choices decide whether your code keeps working for years or quietly stops one day, and whether it scans easily on paper. In this guide we use the QR Code Generator to make codes for a website or Instagram link, Wi-Fi and a location, and go through the essentials of printing and testing.
How does a QR code work?
A QR code is a two-dimensional barcode that stores nothing but text. When a phone camera reads it, the phone decides from the start of the text what to do: text beginning with https:// opens in the browser, WIFI: offers to join a network, tel: offers to dial, and plain text is simply displayed. So an "Instagram QR code" or a "website QR code" is really just a link code.
The three large squares in the corners help the scanner find the orientation and size of the code. A QR code also has "error correction": part of the data is stored redundantly so the code can still be read when it is a little dirty or scratched. The longer the text, the denser the grid of small squares (modules) becomes, and the harder the code is to scan at a small size.
Static or dynamic QR codes: what "no expiration" means
Many QR code websites make "dynamic" codes: the code contains a short link on the service's own domain, and the service sends whoever scans it on to the real destination. That lets you change the destination after printing and see scan statistics, but it makes the code depend on that service; if the free trial or subscription ends or the service shuts down, the printed codes no longer reach their destination.
A "static" code keeps the destination directly in the pattern of the code itself. This site's QR Code Generator makes static codes; the code you create has no expiry date, needs no subscription and keeps working even if this site is ever unavailable, because scanning it does not need any server. No intermediary records the scans either.
| Feature | Static code | Dynamic code |
|---|---|---|
| Where the destination is kept | Inside the code itself | On the provider's server |
| Expiry date | None | Depends on the subscription and on the service staying in business |
| Change the destination after printing | Not possible | Possible |
| Scan statistics | None | Yes |
| Cost | Free | Usually a subscription |
If you want both the permanence of a static code and the option to change the destination, put the link of a page you control in the code and, whenever needed, redirect that page to the new destination.
What kinds of QR code can you make?
You choose the content type from the Content menu at the top of the tool:
| Content option | Use | Text written into the code |
|---|---|---|
| Text or URL | A website link, Instagram or any text you like | https://example.com |
| Wi-Fi network | Joining Wi-Fi without typing the password | WIFI:T:WPA;S:HomeNet;P:password;; |
| Contact card | Saving a contact to the phone's address book | A vCard with name, number, email and website |
| A ready email with recipient, subject and body | mailto:info@example.com?subject=... | |
| SMS | A text message ready to send | SMSTO:+14155552671:... |
| Phone call | Dialling a number | tel:+14155552671 |
| Location | Opening a point on a map | geo:51.5074,-0.1278 |
Make a QR code for a website or Instagram link
- Open the QR Code Generator; the Content menu is set to Text or URL by default.
- Paste the full link, including
https://, into the box. An Instagram profile link has the formhttps://www.instagram.com/username/, with your own username in place of username. - The code is built in the preview as you type. Leave Error correction at the default Medium; if you add a logo, the tool switches to High by itself.
- Scan the code on screen with your phone camera and make sure exactly the right page opens.
- Download the result with the PNG or SVG button.
Write the link in full so the phone recognises it as a link and not as plain text. Remove extra parameters the link does not need, so the code is less dense. Instagram itself also has a QR code in its profile sharing options; making the code with this tool is useful when you want your own colours and shape, a logo, or an SVG file for printing.
Make a Wi-Fi QR code
With a Wi-Fi QR code, guests or café customers join the network without typing the password. iPhones from iOS 11 onwards and most current Android phones read these codes with their built-in camera or scanner.
- Choose Wi-Fi network from the Content menu.
- In Network name (SSID), type the network name exactly as it appears in the phone's Wi-Fi list; capital letters and spaces matter.
- Enter the password in Password.
- Under Security, choose WPA/WPA2/WPA3 for almost every current router. WEP is only for very old routers, and Open (no password) is for a network without a password.
- If the network name does not show up in Wi-Fi lists, tick Hidden network.
- Test the code with a phone that has never joined this network; a phone that already knows the password will not reveal a mistake in it.
The tool correctly escapes special characters such as semicolons and colons in the network name and password for you. Do not forget two things: the password is stored in the code as plain text, and anyone with a photo of the code can read it, so for guests it is better to set up a separate guest network. And if you change the router password, you need to make a new code. For choosing a good password, see the guide to strong passwords.
Make a QR code for a location
The Location option needs two numbers: latitude (Latitude) and longitude (Longitude). You get these coordinates from a map:
- Google Maps on a computer: right-click the place you want; the first line of the menu is its coordinates, and clicking it copies them.
- Google Maps on a phone: press and hold the place until a pin drops; the coordinates appear in the search box or on the place's info card.
- Other map apps: look for an option to show or copy coordinates; where it sits changes between app versions.
In copied coordinates, the first number is usually the latitude and the second the longitude; if the code opens a point far from where you expected, you have probably swapped the two fields. Enter the numbers as they were copied, with a dot as the decimal separator.
Consider compatibility, too: a geo: code opens directly in the map app on many Android phones, but some phones, including some iPhones, may show it only as text. If it has to work on every phone, copy the location's share link from your map app and make the code with the Text or URL option. Either way, test on both kinds of phone before printing.
Contact card, email, SMS and phone call
The Contact card option makes a vCard that is saved to the address book when scanned, with fields for first name, last name, organisation, job title, phone, email and website; keep it short, because every extra field makes the code denser. With Email the recipient, subject and message body are filled in in advance, and with SMS the number and message text. Write numbers with the country code, as in +14155552671. Text in other languages and scripts is no problem either, because the tool encodes the content as UTF-8.
Colours, shapes and logos: good-looking but scannable
- Colours: Dots sets the colour of the modules and Background the colour of the background; always put the dark colour on a light background. If the contrast is low or the colours are inverted, the tool shows a warning below the preview.
- Transparent background: ticking Transparent removes the background so you can place the code on your own design; that design just needs to be light and plain.
- Module shape: Style has three options, Square, Rounded and Dots. The three large corner squares stay square in every style so the scanner finds them easily.
- White margin: Quiet zone is the empty space around the code, and its standard and default value is 4 modules. Do not reduce it, and do not put text or images right up against the edge of the code.
- Logo: Logo places an image of up to 2 MB in the middle of the code, and the tool automatically uses the highest error correction level (High, about 30 percent). The logo size can be set from 10 to 30 percent, with a default of 20 percent; above 25 percent the tool warns you, because the logo may cover more of the code than error correction can make up for.
Print size, and choosing PNG or SVG
For screens, email or social media, PNG is enough. For print, get an SVG; it is a vector file and its edges stay sharp at any size, from a business card to a banner. If you need a PNG, choose Print (1000px) from the Size menu instead of enlarging a small image later.
A common rule of thumb is that the scanning distance is about ten times the width of the code. By that rule, a code scanned from hand-held distance (20 to 30 cm), such as on a business card, needs to be about 2 to 3 cm wide, and a poster seen from two metres needs a code about 20 cm wide. These figures are approximate, and a dense code needs a larger size. Do not print the code on a glossy or strongly curved surface, and if it sits on a photo or a busy design, put a white box behind it.
Always test before printing
- Scan the code on screen with two different phones, ideally an iPhone and an Android phone.
- Print a test copy at the real size and scan it from the actual distance and in the lighting of the place where it will be used.
- Check the destination completely: does the link open correctly? Does the Wi-Fi really connect? Is the location on the right spot?
- Pay attention to the warnings below the preview; low contrast, inverted colours, a quiet zone of less than 2 modules and a logo larger than 25 percent are the most common reasons a code does not scan.
- Only after these steps, print the full run.
Below the preview, the tool also shows the number of modules, the code version, the error correction level and the number of characters; if the code is dense, shortening the content is the simplest way to make it scan faster. All of these steps happen inside your browser, and the content of the code, including a Wi-Fi password, is not sent to any server.
To read a QR code on your computer instead, for example from a screenshot, see how to scan a QR code on a laptop; the QR code reader also shows a link before you open it.