Link to QR Code: Turn Any URL into a QR Code That Keeps Working
Quick Answer
Paste your link, check it, and download the code as SVG for print or PNG for screens. The code is static: it encodes your URL directly, with no redirect through Link2QR and no expiry date. If you need the destination to change later, point the code at a short path on a domain you control instead of a page you cannot update.
Enter a link to see its QR code, analysis, and download options.
Choose the right link before you encode it
A QR code is only as good as the link inside it. Three choices matter more than anything about how the code looks.
- Use the final destination URL. Not a link that redirects through a tracking layer first, not a staging URL, and not a page you plan to remove. Every extra hop is one more place the link can break.
- Use https, not http. The Link Checker above flags plain http automatically. Browsers increasingly warn visitors away from unencrypted pages, and anything typed on that page can be read in transit.
- Avoid third-party shorteners. A shortener sits between your code and your page. If the shortener shuts down, gets sold, or changes its redirect policy, every code you already printed and handed out stops working, and you have no way to fix it. Prefer a short path on a domain you control, such as example.com/menu.
This is the honest answer to a common question: can a static QR code be edited after printing? No, the pattern is fixed once it is generated. But you can control where your own URL points, by using a short path on your own domain and changing that path's destination on your own server whenever you need to. That gives you the flexibility people usually want from a dynamic QR service, without paying for one or depending on it staying in business.
Advertisements
Longer links make denser codes
A QR code stores your link as a grid of black and white squares called modules. More characters need more modules, so a longer URL produces a higher QR version and a bigger grid. Here is the actual relationship, measured directly from the encoder this page uses, at error correction level M:
| Link length | QR version | Grid size |
|---|---|---|
| 20 characters | v2 | 25 x 25 |
| 40 characters | v3 | 29 x 29 |
| 60 characters | v4 | 33 x 33 |
| 80 characters | v5 | 37 x 37 |
| 100 characters | v6 | 41 x 41 |
| 150 characters | v8 | 49 x 49 |
| 200 characters | v10 | 57 x 57 |
| 300 characters | v13 | 69 x 69 |
A denser grid needs more physical size to stay scannable, because each module has to stay above a minimum printable size no matter how many modules there are. It also loses reliability at distance or at small size faster than a simple code does, since a camera has to resolve more, smaller squares. Use the print size calculator to work out the right physical size once you know your scan distance.
Error correction level changes the grid too, for the same link. A 60-character URL comes out as:
| Error correction | QR version | Grid size |
|---|---|---|
| L | v4 | 33 x 33 |
| M | v4 | 33 x 33 |
| Q | v5 | 37 x 37 |
| H | v7 | 45 x 45 |
Higher error correction lets the code survive more damage, dirt, or a logo placed on top of it, at the cost of a bigger grid for the same link. Use Q or H when you plan to add a logo, and check the result with the reliability audit before you commit to a print run.
Track scans without a paid dynamic QR service
A static code has no scan counter built in. It cannot, since there is no server involved between the camera and your page. What it can do is carry UTM parameters, which your own analytics tool already knows how to count. Turn on "Add UTM tags" in the tool above, fill in a source, medium, and campaign, and every visit that arrives through the tagged link shows up in your analytics as a scan from that specific code.
The cost is a longer link, and a longer link means a denser code. As an example, measured directly: https://example.com/menu is 24 characters and comes out as version 2, a 25 x 25 grid. Add ?utm_source=qr&utm_medium=print&utm_campaign=spring_menu and the same link is 80 characters, jumping to version 5, a 37 x 37 grid. Keep tag values short, reuse the same source and medium across codes, and put anything variable in the campaign field only. If you want scan counts without any density cost at all, a dynamic QR service is the tradeoff; see static vs dynamic QR codes for an honest comparison of what that gets you and what it costs.
The uppercase trick, and why most people should skip it
QR codes have an alphanumeric encoding mode that only covers the digits 0 to 9, capital letters A to Z, space, and the symbols $ % * + - . / and :. A link written entirely in that set encodes more efficiently than the general-purpose byte mode used for ordinary text. Since the scheme and domain of a web address are not case-sensitive, writing them in capitals can shrink the code. Measured directly: HTTPS://LINK2QR.COM encodes as version 1, a 21 x 21 grid, while the same address lowercase, https://link2qr.com, encodes as version 2, a 25 x 25 grid.
The catch: paths and query strings are often case-sensitive on the server, and the characters ? = & and _ used by query parameters are not in the alphanumeric set at all, so as soon as a link has a path or a query string, this trick stops helping and byte mode takes over anyway. It only does anything useful for a short link with no query string, such as a domain-only address. Most people building a real QR code for a real page should ignore this and just use the link as it normally appears.
Test before you print
A code that scans on your phone can still fail for someone else. Before a print run:
- Scan with at least two phones, including an iPhone camera and an Android camera, not just one app.
- Scan from the real distance and at the real printed size, not a code on your laptop screen.
- Confirm the destination page loads on mobile data, not just on office WiFi.
If a code fails, the decode tool reads back exactly what a code contains, which is useful for checking a printed proof matches what you intended. If scans are inconsistent, read why a QR code is not scanning for the common causes: low contrast, a missing quiet zone, glare on glossy stock, or a code printed smaller than its density allows.
Keep people safe
Print the destination URL in plain text near the code, not just the code on its own. Anyone who wants to check before they scan can read it directly, and it gives people a way to reach the page even if the code itself is damaged. It also makes a swapped-in malicious sticker easier to notice, because the printed text will not match the code underneath it. For more on what a QR code can and cannot do to a phone, see are QR codes safe, and if you are checking a code someone else made rather than one you are creating, use is this QR code safe to see what it actually contains before opening it.
Frequently Asked Questions
Does a link QR code expire?
No. The code built here encodes your URL directly, so it works for as long as the destination page works, with no expiry date and no dependency on Link2QR. See /do-qr-codes-expire for the cases where a code does stop working, such as a dynamic service shutting down.
Can I change the link after I print the code?
Not the code itself. A static QR code has the URL baked into its pattern, so editing it is not possible. What you can change is the destination: point the code at a short path on a domain you control, such as example.com/menu, and update where that path redirects on your own server whenever you need to.
Can I see how many people scanned it?
Not from the code itself, since a static QR code has no built-in counter. Add UTM tags with the builder above and your own analytics (Google Analytics, Plausible, server logs, and similar) will count visits that arrive through the tagged link, which is a scan count in practice.
Why is my code so dense?
Density comes from the number of characters encoded, not from the tool that made it. Long URLs with tracking parameters produce a higher QR version and a larger grid. Shorten the link or drop unnecessary query parameters to bring the density back down.
Should I use a URL shortener to make the code simpler?
It will make the code less dense, but it adds a service you do not control between the code and your page. If that shortener shuts down or changes its rules, every code you already printed breaks at once. A short path on your own domain gets the same size benefit without that risk.
PNG or SVG, which should I download?
SVG for anything printed, since it is vector and stays sharp at any size. PNG for screens, slides, and apps that do not accept SVG. If you are not sure, download both; the tool above builds them from the same encoded link.
Does Link2QR see the link I type into this tool?
No. Everything on this page runs in your browser: the QR code, the analysis, and the UTM tagging. The link is never sent to a server, logged, or stored, and there is no network request involved in generating or checking your code.
What is the difference between this and the homepage generator?
The homepage generator supports many code types (WiFi, vCard, payments, and more) with styling options. This page is focused on one job: taking a link, checking it for the mistakes that break printed codes, and producing a clean static PNG or SVG with no extra steps.
Advertisements