QR codes, from a URL.
Put /qr?text= and any link or text into an img tag and get back a scannable PNG, up to 4000 px square. Every code uses the highest error correction level, so it still scans with a scuff, a fold or a sticker over one corner. No key, no account.
The preview is the real response from that URL, exactly what your page would load.
A code for every link, without a library.
The code is generated from the URL, so any template that can print a link can print a QR code for it.
Tickets, receipts and invoices
Build the URL in your email or PDF template, such as /qr?text=https://example.com/t/8F3K2, and every ticket gets its own code. There's no QR package to add to your stack and no images to store.
Menus, posters and packaging
Ask for a big PNG, size=2000 or more, so the code stays crisp in print. High error correction means a crease, a coffee ring or a logo sticker over part of it won't stop phones reading it.
Wi-Fi for guests
Encode WIFI:T:WPA;S:Studio;P:your-password;; and guests join by pointing their camera at the sign. The camera apps on current iPhones and Android phones read this format without an extra app.
Slides, READMEs and test builds
Put a code on a slide so the room can open your link, or in a README so testers can open a staging build on their phone straight from a desktop screen.
A static code, nothing in between.
The PNG is black on white with a one-module quiet zone, square at the size you ask for. It's generated at error correction level H, the highest of the four QR levels, which can recover roughly 30% of a damaged code. The smallest QR version that fits your text is chosen automatically, so short text gives bigger modules that scan from further away.
These are static codes: your text is encoded in the image itself. Scanning opens your link directly, without a redirect through imgsrc.pub, so the code never expires and nobody counts the scans. Each image is generated once and sent with a one-year immutable cache header.
<img
src="https://imgsrc.pub/qr?size=240&text=https%3A%2F%2Fexample.com"
width="240" height="240" alt="QR code for example.com">Two parameters. That's it.
Put them in any order. URL-encode the text so its own ? and & stay inside the code.
| Parameter | Values | Default | What it does |
|---|---|---|---|
| text | URL-encoded string | required | What the code contains: a link, plain text, or a structured payload such as WIFI:, mailto: or tel:. Leaving it out returns a 400. |
| size | 1–4000 | 300 | Width and height of the PNG in pixels. |
Point your camera at any of these.
Each code below is the live response to the URL under it. The long link shows how more text makes a denser pattern.
QR codes, answered.
Is the QR code generator free?+
Yes. There is no account, no API key and no watermark, and nothing you need to renew.
Do the codes expire or track scans?+
No. They're static codes: the text you pass is stored in the pattern itself. A phone that scans one goes straight to your link, so a saved code keeps working even if imgsrc.pub is offline.
How do I encode a link that has its own query string?+
URL-encode it first, for example with encodeURIComponent in JavaScript. Otherwise an & inside your link is read as the start of the next parameter, and the code only contains the part before it.
What size should I ask for?+
For screens, 200 to 300 px is plenty. For print, keep the code at least 2 cm (about 0.8 in) across and request enough pixels for your printer: a 10 cm code at 300 dpi needs size=1200.
How much text fits in one code?+
At error correction level H, a code holds up to about 1,200 characters of ordinary text. The more you put in, the denser and harder to scan it gets, so keep links short where you can.
Can I change the colours or add a logo?+
No. Codes are always black on white, which is also the combination every scanner reads most reliably. If you print one on a busy background, leave a margin of plain white around it.
The rest of the toolbox.
Five more free tools, and three AI tools for when a placeholder won't do.

Placeholder image
FreeAny size up to 4000 px, in PNG, JPG, WebP, GIF or SVG, with your own colours and text.
Placeholder video
FreeLooping H.264 MP4s from 50 to 1280 px, for players and hero sections you haven't shot yet.
Share card
FreeA 1200×630 Open Graph image drawn from a title and one line of text. Point og:image at it.
Favicon
FreeAny site's icon by domain. It reads the page's link tags and falls back to /favicon.ico.
Logo resizer
FreeOne square logo in; favicon.ico, Apple, Android and PWA icons and a web manifest out. It runs in your browser.
AI image
1–30 creditsSquare, landscape or portrait, at 1024×1024, 1536×1024 or 1024×1536.
AI logo
30 creditsA 1024 px mark, delivered on a solid background and on a transparent one.
AI share card
30 creditsA 1200×630 illustrated Open Graph image for a launch, post or product page.
Every link deserves
a code.
Type the link, copy the URL, put it in an img tag.







