QR code generator
Type a URL or text, or pick one of the standard templates for Wi-Fi, a contact card, email, SMS or a phone number, to get a real QR code you can download as PNG or SVG. It is a free QR code generator: the codes are static, carry no tracking and are made entirely in your browser.
Loading the tool…
Processing and privacy: The code is built inside your browser with the qrcode library. Your links, Wi-Fi passwords and contact details are not sent to any server.
How to use it
- Pick the content type: text or URL, Wi-Fi, contact, email, SMS or phone number.
- Fill in the fields. The exact text that will be stored inside the code is shown below, with the number of bytes it uses.
- Set the error correction level, the size in pixels, the quiet-zone margin and the two colors. The tool warns you when the contrast is weak or the colors are inverted.
- Download the code as PNG for quick printing, or SVG to print at any size.
Example
The URL https://toolsahla.com uses 21 bytes and fits comfortably at any error correction level.
A network called My;Cafe with the password p,a"ss is written inside the code as WIFI:T:WPA;S:My\;Cafe;P:p\,a\"ss;; (note the backslash before each special character).
The Arabic word مرحبا uses 10 bytes, because each of its five letters is stored as two UTF-8 bytes.
Limits and caveats
- The tool only builds the code. It never joins a network, sends an email or sends a message; all of that happens on the scanner’s own device, with their consent.
- A Wi-Fi password is stored inside the code as readable text. Anyone who photographs the code can read it, so do not publish it unless you mean to share the network with everyone.
- Capacity limits come from the QR specification: 2,953 bytes at level L, 2,331 at M, 1,663 at Q and 1,273 at H. Above that the tool refuses to generate and shows the reason together with the library’s real error, instead of a partial code.
- The contrast warning is our own rule of thumb based on the WCAG contrast ratio: below 2:1 is treated as probably unscannable and below 4:1 as unreliable. The specification itself talks about reflectance, not this ratio, and the real outcome depends on printer, lighting and camera.
- An inverted code (light modules on a dark background) is refused by many readers even at a high contrast ratio, which is why the tool warns about it.
- The contact templates write vCard 3.0 or MeCard with the common fields only (name, company, job title, one phone, email, website, address, note). Several numbers or a photo are not supported.
- Scannability is tested by decoding the downloaded PNG and SVG and checking that the text read back equals the input exactly, including Arabic text and the Wi-Fi payload.
Questions about this tool
Which error correction level should I choose?
M suits most uses. Choose Q or H when the code will be printed on paper that may get dirty or creased, or when you place a logo on top of it, and remember that a higher level means less data in the same area or a bigger symbol.
Why does Arabic text produce a larger code?
Arabic letters are stored as two UTF-8 bytes each (emoji take four), while an English letter takes one. The byte counter on the page shows the real size.
Will the code still work if I change its colors?
It works while the contrast stays high and the modules are darker than the background. Light modules on a dark background, or low contrast, make scanning unreliable, and the tool warns you before you download.
How do I turn a link into a QR code?
Pick the content type “Text or URL”, paste the link, then download the code as PNG or SVG. The link becomes a QR code straight away that any phone camera can open. Type the full link with https:// so phones recognise it as a link; everything happens in your browser and the link is not uploaded anywhere.
Do QR codes made here expire?
No, they do not expire, because the link or text is stored inside the code itself and there is no redirect server or scan counter in between. The code works for as long as the link works; if the link changes, make a new code, because a printed code cannot be edited.
