Skip to the generator

How to make a QR code for a PDF

A QR code cannot contain a PDF. The format has a hard ceiling of about 2,953 bytes - under 3 KB - and that is the absolute maximum, reached only at the largest version with the weakest error correction. A one-page PDF is usually somewhere between 50 KB and several megabytes, so it is not a near miss; it is off by a factor of hundreds. Any site that offers to "put your PDF in a QR code" is uploading the file to its own servers and encoding a link to it, generally with an account and a subscription attached.

The real method is to do that part yourself and keep control of it: put the file somewhere with a public web address, then encode the address. The code is then static and permanent, and the only thing that can break it is the file moving. Most of the work below is making sure the link is genuinely public and genuinely stable, because that is where this goes wrong.

Paste or type any address. If you leave off https:// we add it for you.

Your QR code appears here

Start typing and it updates as you go.

PNG is 2048px. SVG scales to any size, which is what print wants.

Design
Colours

Or start from a pair that scans well:

Module shape

The empty border around the code. 4 is the standard.

Recovers about 15% damage. The usual choice.

Centre logo

Optional. Keep it simple - a mark reads better than a wordmark at this size.

Step by step

  1. Put the PDF somewhere with a public address

    Your own website is the best option, because you control the address forever: upload the file and note the address that ends in .pdf. Google Drive, Dropbox and OneDrive all work too. What does not work is an email attachment or a file on your own computer - if a stranger cannot reach it in a browser, a QR code cannot help them.

  2. Make the link genuinely public

    In Google Drive: open the file, choose Share, and under General access change Restricted to Anyone with the link, with the role left as Viewer. Dropbox and OneDrive have the same idea under a create-link or share button. If you skip this, every person who scans gets a request-access screen instead of your document, and you will not see it because you own the file.

  3. Decide whether it should preview or download

    A Google Drive share link opens the file in the Drive preview, in a browser, with a download button in the corner - not a download. That is usually fine and often better on a phone. If you want the file itself to arrive, host it on your own site and link straight to the .pdf address, which phones open in their own PDF viewer or save.

  4. Copy the link and paste it into the generator

    Use copy and paste rather than retyping: these addresses contain long random file identifiers and a single wrong character produces a code that scans perfectly and leads nowhere. Paste the full address including https://, and check the preview updates.

  5. Test it signed out, on a phone that is not yours

    This is the step that catches the permissions mistake. Open the link in a private browsing window, or scan the preview with a phone that is not signed into the account that owns the file. If it opens for that phone, it will open for everyone. If it asks to sign in, go back to the sharing settings.

  6. Download the SVG and test the print

    Take the SVG for anything going to a printer, size the code for the distance it will be read from - roughly a tenth of it - and scan the printed piece before ordering the full run. A link to a hosted file makes a fairly short payload, so the pattern stays coarse and prints well even at 2 cm.

Where this usually goes wrong

  • Assuming the file is inside the code

    It is not, and this shapes everything. The code holds an address. Moving the file to another folder in a way that changes its address, renaming it on a web server, turning sharing off, or deleting it all break every printed copy at once - and the code will still scan, so the failure looks like a working code with a broken destination.

  • Using the address from the browser bar

    On some services the address you see while viewing your own file includes account or session information, or points at an editing view rather than the shared file. Use the address the Share or Copy link button gives you, which is the one built for other people.

  • Testing while signed in to the account that owns the file

    Everything works for the owner. That is the trap. A private-window test takes ten seconds and is the only test that means anything.

  • Ignoring the size of the file itself

    A 40 MB scanned brochure is a long wait on a phone with two bars of signal, and some people will give up before it opens. Export at a sensible resolution, and for anything that people will read on a phone, consider whether a web page would serve them better than a document laid out for A4.

Common questions

No. The maximum a QR code can hold is about 2,953 bytes of data, which is under 3 KB, and that ceiling applies at the largest code size with the lowest error correction. Even a very small PDF is many times that. The file has to be hosted somewhere and the code carries the link to it.

Any size at all, because it is not in the code - the limit is what your host allows and what your reader is willing to download. Keep it under a few megabytes if people will open it on mobile data, and remember that a poster scan usually happens on a phone rather than on a desk.

No. The code contains a link, so the phone has to fetch the file. This is the one real disadvantage compared with a code carrying text or Wi-Fi details, which do work offline. If the document has to be readable with no signal, print it.

It depends on how. On your own site, overwriting the file at the same address keeps every printed code working. In Google Drive, replacing the file through its version-management option keeps the same link, but uploading the new version as a separate file gives it a new address and leaves your printed codes pointing at the old one.

No. The address is inside the pattern, so a printed code always points where it pointed on the day it was made. If the destination may change, put a page on your own site in between: the code points at the page, and the page links to whichever file is current.

Make one now