Skip to content
QRMakery

Image to QR Code

Your photo will not fit in a QR code. Not close: a symbol tops out at 2953 bytes, and the picture on your phone is measured in megabytes. Drop the file in below and this page tells you by how much it misses, in your browser, without uploading it anywhere.

If it does fit, and small icons genuinely do, the code you get carries the entire image and needs no server at all.

Nothing is uploaded. Files over the 2953-byte ceiling are not even read: the size alone decides it, and the check runs on that number.

Photograph converted to a hosted link and then encoded in a QR code
Large image data reduced to a compact hosted link before QR encoding
Gallery QR placard opening a hosted photograph on a smartphone

The Ceiling, in Bytes

A version 40 symbol is the biggest QR code there is, 177 modules across. In byte mode it holds 2953 bytes at error-correction level L, and less at every level above that, because the redundancy that survives a scuffed sticker has to come out of the same space. Embedding a file costs more again: base64 adds roughly a third, plus the data:image/png;base64, prefix, which is encoded along with everything else.

Capacity per error-correction level, checked against this site’s encoder by a unit test: each figure encodes at version 40 and one byte more is rejected.
Error correctionBytes in the symbolLargest PNG that fitsDamage it survives
Level L29532.1 KBAbout 7% of the symbol
Level M23311.7 KBAbout 15%
Level Q16631.2 KBAbout 25%
Level H1273936 bytesAbout 30%

So the honest budget for an embedded image is 2.1 KB at the weakest error correction, on the biggest symbol, printed large. That is a favicon. A 16 by 16 icon, a two-colour logo saved carefully, a tiny GIF. Your camera roll is not in that conversation, and neither is a screenshot.

It uploads your file, puts it on a server, and encodes the address. That is the only mechanism available, and it works. The part worth knowing is that you have quietly taken on a dependency: your image now lives on someone else’s hosting, the code points at their domain, and the printed sticker stops working the day they delete the file, change the URL scheme or shut the service down.

QRMakery does not host files. That is a planned feature and it is not built, so this page cannot do the upload half for you and does not pretend to. What it can do is the encoding half, properly: paste the link to wherever the image already lives and the code is generated here, decode-tested, and yours as an SVG.

Add your link or content

What the code should contain

Only http and https links are allowed. Missing schemes become https.

Customize your QR code

Finder squares stay square whichever you pick. They are what a scanner locates the code with.

The blank margin scanners need. 4 is the standard minimum.

Download your QR code

✓ Scan-tested: this code reads back correctly.

Contrast 21:1, Strong

Version 2 · 33 modules · print at least 13.2 mm wide

Where to Put the File

Four realistic options, and they are not equal. The one thing that separates them for anything printed is link length, because the characters in the URL decide the module count and the module count decides how small the code can be before phones start failing on it.

Typical share-link shapes for each host, encoded at error-correction M with a four-module quiet zone. Measured when this page was built, and every symbol was decoded back before its row was printed.
Where the file livesLink lengthVersionModulesMin print width
A page on a domain you ownhttps://example.com/photos2623313.2 mm
Google Drive share linkhttps://drive.google.com/file/d/1A2b3C4d5E6f7G8h9I0jKlMnOpQrSt/view?usp=sharing7954518 mm
Google Photos albumhttps://photos.app.goo.gl/aBcDeFgHiJkLmNoPq4344116.4 mm
Dropbox or OneDrivehttps://www.dropbox.com/scl/fi/ab12cd34ef56gh78ij90k/photo.jpg?rlkey=zy98xw76vu54ts32rq10p&dl=09564919.6 mm

Same photo, same phone, 6.4mm of difference in how small the code can print. The dropbox or onedrive row is 16 modules wider than the a page on a domain you own row purely because of the characters in the URL. On a business card or a wine label that gap decides whether the code works at all.

  • A page on a domain you own

    The link is short, which is the whole ballgame for print, and you can move the file behind it forever without touching the code.

    Somebody has to own the domain and keep paying for it. If that lapses, the code dies with it.

    The only option I would put on something printed in quantity. A 20 character URL is worth more to a printed code than any feature on this list.

  • Google Drive share link

    Free, instant, and the file can be swapped without changing the link if you upload a new version rather than a new file.

    The link is long, so the symbol gets dense. Sharing settings default to restricted, which is the single most common reason a shared QR code shows a permission wall.

    Fine for a code on a screen or a one-off handout. Set the file to anyone-with-the-link before you print anything.

  • Google Photos album

    Short link, and it is built for what people actually want here: a whole album, viewable by anyone, with new photos appearing after the code is printed.

    Album links can be revoked or regenerated, and the album owner's account is a single point of failure.

    The best free answer for the wedding and event case, which is most of the demand behind this search.

  • Dropbox or OneDrive

    Reliable hosting, and the direct-download parameter at the end gives people the file rather than a preview page.

    The longest links of the lot, thanks to the key parameter. Density suffers badly.

    Use it when the file matters more than the print size, and shorten the link before encoding it.

One habit worth building before any print run: scan your own code with a phone that is not signed into your account. Restricted sharing looks fine to the person who uploaded the file and shows a permission wall to everyone else, and that is the failure people discover after the flyers are printed.

If You Meant Putting an Image Inside the Code

Different job, and this one is easy. Search for an image inside a QR code and most people mean a logo in the middle, which works because the image is never encoded at all. The symbol is built from your link, the centre modules are cleared, and the picture is painted over them for error correction to rebuild around. The file size of the image does not matter, and none of the arithmetic above applies.

The size cap and what it costs in error correction are worked through on QR code with logo, which is the page you want if the picture is your brand mark rather than the thing being shared. If the picture came out of a diffusion model, AI QR code generator covers what those tools break and how to get a scannable code into the art.

If You Meant Reading a Code Out of an Image

Plenty of people searching this want the opposite direction: a screenshot with a QR code in it, and no second phone to point at the screen. That is now its own tool. Scan a QR code from an image reads the code in your browser, shows you the link before you open it, and measures whether the copy you have still carries enough detail to scan anywhere else.

If the code is on a screen or a wall in front of you rather than in a file, your phone is still faster. On iPhone, open the image in Photos and tap the Live Text button, or long-press the code. On Android, open it in Google Photos and use Lens. The reader here is for the case a camera cannot help with: a file already sitting on the device you are working on.

What This Page Cannot Do

  • No file hosting. It cannot take your photo and give you a link, because that needs storage this product has not built yet.
  • No PDF hosting either, which is the same question with a different extension and the same answer.
  • Embedding only works up to 2.1 KB, and a code that dense needs a generous print size. The checker runs a decode test and tells you when the result is unreadable rather than handing you a file that fails on paper.
  • No image compression. If a file misses the ceiling by a little, shrinking it is a job for an image editor.
  • Static codes only. The address is inside the pattern, so moving the file breaks every copy that has been printed.

Image QR Code Questions

Can a QR code contain an image?

Only a very small one. A QR symbol holds 2953 bytes at its largest size and weakest error correction, and base64 encoding makes any file about a third bigger before it goes in. That leaves room for roughly 2.1 KB of image, which is a favicon or a simple icon, not a photo. Anything from a phone camera misses by three orders of magnitude, so every tool that appears to put your photo in a code has uploaded it and encoded the link.

How do I make a QR code for a photo or an album?

Put the photos somewhere with a public link, then encode that link. For a wedding or an event, a Google Photos album link is short and keeps working as people add pictures. Upload the album, copy the share link, paste it into the generator on this page, and check the sharing setting is anyone-with-the-link before you print. The code carries the address, so the photos can change afterwards without a reprint.

Does my image get uploaded to this site?

No. The measurement runs on the file size, which your browser already knows, so a file over the ceiling is never even read. A file small enough to embed is read in the tab and encoded there. Nothing is sent anywhere, and this site cannot host your image for you: file hosting is a planned feature that does not exist yet, and the page says so rather than quietly using someone else's bucket.

Will the code still work if I move or delete the file?

No, and this is how most image QR codes die. The symbol encodes an address, not a picture, so the code is only as permanent as the link. Deleting the file, changing its sharing settings, or moving it to a different folder all break every printed copy. Encoding a link on a domain you control is the fix: the code stays the same and you repoint the address.

Why is my image QR code too dense to scan?

Because the link is long. A Dropbox or Google Drive URL with a key parameter runs past 90 characters, which pushes the symbol into a higher version with more and therefore smaller modules. Shorten the link first, or raise the print size to the minimum width shown under the code here. Dropping error correction from H to M also thins it out, at the cost of tolerance for scuffs and folds.

Hundreds at once, destinations you can change after printing, and what fits inside a symbol.

All tools

Guides worth reading

All guides
  • Comparisons

    Static vs Dynamic QR Codes

    What the redirect actually buys you, measured on real encoded codes, and which payloads are worse off for it.

    16 min read