Turn any link, text, or contact into a scannable QR code in seconds
Paste a URL, type a phone number, or fill in a Wi-Fi password — the QR code generator above builds a crisp, scannable QR code instantly. Download it as a PNG or SVG and you're done. No account needed, nothing uploaded to a server.
How to create a QR code (step by step)
- Choose a type — URL, Wi-Fi, vCard (contact card), UPI payment, WhatsApp, or plain text.
- Fill in the fields — for a URL just paste the link; for Wi-Fi enter the network name (SSID) and password.
- Customise (optional) — pick a foreground colour, background colour, and size in pixels. Higher error correction (level H) keeps the QR scannable even if part of it is covered by a logo.
- Download — save as PNG for printing or sharing online, or SVG for logos and large-format printing where you need it to scale without blurring.
Scanning the code does exactly what the data says: a URL QR opens the page in the phone's browser, a Wi-Fi QR connects the device to the network, a UPI QR opens the payment app pre-filled with the recipient's details, and a WhatsApp QR starts a chat.
Worked example — URL QR code
Input:
Type: URL
URL: https://techtoolexpert.com
Size: 300 × 300 px
Foreground: #1a1a2e (dark navy)
Background: #ffffff (white)
Error correction: M
Result: a 300 × 300 pixel QR code in dark navy on white. Anyone who scans it lands on techtoolexpert.com — no redirect, no middleman. The URL is encoded directly into the QR matrix, so the code works forever as long as the page exists.
Generate a QR code in code (Python & JavaScript)
Need to create QR codes programmatically? Here are two minimal, runnable snippets.
Python — using the qrcode library
# pip install qrcode[pil]
import qrcode
img = qrcode.make('https://techtoolexpert.com')
img.save('my-qr.png')
That saves a PNG called my-qr.png in your working directory. The qrcode library (by Lincoln Loop) handles the encoding; Pillow renders the image.
JavaScript (browser) — using the qrcode npm package
// npm install qrcode
const QRCode = require('qrcode');
QRCode.toDataURL('https://techtoolexpert.com', { width: 300 }, (err, url) => {
if (err) throw err;
console.log(url); // paste this data: URL into an
src
});
In a browser you can also use QRCode.toCanvas(canvasElement, text) to draw directly onto a <canvas>. Full API docs live at github.com/soldair/node-qrcode.
How the QR code generator works
QR codes follow the ISO/IEC 18004 standard. Your text or URL is encoded into a binary matrix of black-and-white squares (called modules). The size of the matrix grows with the amount of data — a short URL fits in a small grid; a full vCard needs more modules.
Error correction embeds redundant data so a scanner can recover the message even if up to 30 % of the code is damaged or hidden (level H). The four levels are L (7 %), M (15 %), Q (25 %), and H (30 %). Use H when you plan to print a logo over the centre of the code.
Everything happens inside your browser using JavaScript. Nothing is sent to any server — your Wi-Fi passwords, contact details, and payment IDs stay on your device.
When to use each QR type
| Type | Best for | What scanning does |
|---|---|---|
| URL | Links to any webpage, product, or social profile | Opens the URL in the phone's browser |
| Wi-Fi | Café, office, or event guest networks | Joins the Wi-Fi network automatically |
| vCard | Business cards, name badges | Saves the contact to the phone's address book |
| UPI | Accepting payments in India (Google Pay, PhonePe, etc.) | Opens the UPI payment app pre-filled |
| Customer support, marketing opt-ins | Opens WhatsApp with a pre-written message | |
| Text | Short notes, serial numbers, event details | Displays the plain text on screen |
When NOT to use a QR code
- Extremely long data — a 2 000-character JSON blob makes a very dense QR that many phone cameras struggle to read. Link to a page that holds the data instead.
- Low-contrast printing — a light grey code on white paper scans poorly. Keep strong contrast between modules and background.
- Replacing dynamic links you need to update — a static QR encodes the exact URL you typed. If the destination might change, use a URL shortener with a redirect (but be aware that adds a third-party dependency).
Key facts worth knowing
- QR codes are free to create and use — the standard is open, there are no royalties or licences to buy.
- They never expire on their own. A URL QR stops working only if the destination URL goes offline, not because the QR code itself has a shelf life.
- All codes generated here are static — the data is baked into the image, with no redirect server in between.
- SVG output is infinitely scalable, ideal for print materials larger than A4.
Ready to make your first QR code? Fill in the fields in the tool above, hit generate, and download your file — it takes about ten seconds.