How to Create a QR Code for a Google Form: 3 Free Ways (2026)

The short answer: publish your form, click Share → Copy responder link, then turn that link into a QR code. The fastest free way is Chrome’s own generator — open the form link in Chrome, click the three-dot menu, and choose Cast, save, and share → Create QR code. No account, no add-on, and nothing that can expire later.

Updated August 2026

A QR code solves a small, annoying problem: a Google Forms link is long, and a room full of people typing it by hand will produce a room full of typos. A code on the board, on a worksheet, or on a handout removes the typing entirely.

There are three ways to make one, and they are not equally good. Two of them route your form through a third-party service that can stop serving the code later. One of them does not. This guide covers all three, explains which to pick, and covers the two steps people most often get wrong — both of which happen before you generate anything.

Step 1: Publish the form first

This is the step that ruins printed batches, and it is worth doing before you generate a code.

Google Forms now has a publishing step. Google’s own documentation is explicit about what happens if you skip it: “Before responders can access your form, you need to publish it… If the form is unpublished, responders with the link can’t access it.”

Nothing about that stops you generating a QR code. The link exists, the code scans, the code is perfectly valid. It just leads to a form nobody can open. If you have already printed thirty worksheets, you find out when thirty people tell you at once.

To publish: open the form and click Publish at the top right. Under General access, decide who is allowed to respond — anyone with the link, or a restricted group. Once it is published, the top right of the screen reads Published.

Test it the way a stranger would. Scan your own code with the phone camera, in a private or incognito window if you can. A form that opens perfectly for you may be restricted to your school domain, or still unpublished, and your own account will hide both problems.

Step 2: Copy the responder link, not the one in your address bar

While you are building a form, the URL in your browser’s address bar is the editing URL — it ends in /edit. That is not the link you want on a worksheet. It points at the form’s editor rather than the form itself.

Google lists three ways to get the correct link:

  • Click Share at the top right, then Copy responder link.
  • Or click Preview, then Copy responder link.
  • Or, once published, click Published, then Copy responder link.

There is also a Shorten URL checkbox in that dialog, available once the form is published. Ticking it gives you a short forms.gle address instead of the long docs.google.com one.

For a QR code, use the short link. A QR code stores the characters of the URL, so a shorter URL produces a code with fewer, larger squares. Larger squares are easier for a camera to read at an angle, in poor light, from the back of a room, or printed small in the corner of a worksheet. It is the single cheapest thing you can do to make a code scan more reliably.

Method 1: Chrome’s built-in QR generator

Chrome will make a QR code for whatever page is open, and most people do not know it is there. It costs nothing, needs no account, and creates no dependency on an outside company.

On a computer: open your form’s responder link in Chrome, then click the three-dot More menu and choose Cast, save, and share → Create QR code. Google’s documentation notes you can then copy the QR link, select Download to save the image, or scan it directly from your screen with another device.

On an iPhone or iPad: open the page in Chrome, tap Share, then Create a QR Code.

The downloaded image drops straight into Google Docs, Slides, or a worksheet. Because the code contains the form address itself, there is no middleman: no scan limit, no dashboard, no account that can lapse, and nothing that stops working if a company changes its pricing. For a code you intend to print, that matters more than any customisation feature.

The trade-off is that Chrome gives you a plain black-and-white code and no analytics, and you cannot change where it points after the fact. For most classroom and handout uses, that is a fair trade.

Method 2: A free online QR generator

Online generators add design options — colours, a logo in the middle, rounded shapes, higher-resolution downloads — and, if you want them, scan analytics.

QRCodeChimp is one of the more capable ones and has a genuinely usable free tier, but the free tier is narrower than it first appears. These are its published limits, checked in August 2026:

On the free plan What you get
Static QR codes Unlimited
Dynamic QR codes 10
Total scans per month 1,000 across all your dynamic codes
Maximum download resolution 1024 × 1024

Two of those deserve attention. The 1,000-scan monthly cap applies to dynamic codes only — static ones are unlimited and uncapped. And the 4096 × 4096 download that gets quoted around the web is not a free-plan feature; on QRCodeChimp’s published pricing that resolution starts on the Pro plan at $13.99 per month. On the free plan the ceiling is 1024 × 1024, which is still ample for anything printed on a page.

To use it: copy your responder link, paste it into the URL field, generate, and download. Leave the dynamic option switched off unless you specifically need what it does — which is the subject of the next section.

Method 3: A Google Forms add-on

Add-ons put the generator inside Google Forms itself, so you never leave the tab. Two are widely installed:

  • QR Code Generator by 2HAC Studio — over 4 million installs, listing updated August 2026. It creates dynamic codes and can insert the image straight into the form.
  • QR code for Google Forms by Lincoln Apps — over 1 million installs, listing updated April 2026. Customisation, saved history, and generating codes for non-Forms URLs are all premium features.

One thing to know before you rely on the first one for anything printed. Its own Marketplace listing describes the free trial like this: “During the trial period, you can generate codes with a limited number of scans (set randomly for each trial).”

Read that carefully — the limit is on scans, not on how many codes you make, and the number is not disclosed to you. A code that works when you test it can stop working partway through a class, and you have no way to know in advance where the ceiling is. That is survivable on a screen you can replace in seconds. It is a bad property for something you have already printed and handed out.

Static or dynamic? The choice that decides whether your code still works in March

Every generator makes one of two things, and the difference is the most important thing on this page.

Static Dynamic
What the code contains Your form’s address, directly A short link owned by the generator, which redirects
Change the destination later No Yes
Scan tracking No Yes
Scan limits None — nothing is counting Usually capped on free plans
If the company folds or you stop paying Keeps working — they were never involved Every printed copy breaks at once

Dynamic codes are genuinely useful in one situation: the code is already printed on something you cannot reprint, and the destination needs to change — a permanent sign, a poster that runs all year, a sticker on equipment. Being able to repoint it later is worth the dependency.

For nearly everything else — a worksheet, a slide, a handout, a code on the whiteboard — static is the better default, and it is the option most guides quietly skip past. A static code cannot hit a monthly cap, cannot be switched off, and does not care whether you still have an account. Its only real disadvantage is that you cannot change where it points, which for a one-lesson form is not a disadvantage at all.

Which method should you use?

If you want to… Use
Put a code on a worksheet, slide, or board today Chrome’s built-in generator
Match a colour scheme or add a logo An online generator, static mode
Make codes for many forms without leaving Forms An add-on — but check its scan limits first
Repoint a printed code at a different form later A dynamic code, on a paid plan you will keep
Count how many people scanned A dynamic code — or just check the form’s response count

That last row is worth pausing on. Scan analytics are the main reason people are pushed toward dynamic codes, but a Google Form already tells you how many people responded. If the number of responses is the thing you actually care about, you do not need scan tracking at all.

Printing a QR code that actually scans

Most codes that fail in the real world fail for physical reasons, not technical ones.

  • Leave the white border alone. DENSO WAVE, which invented the QR code, specifies a “four-module wide margin at all sides of a symbol” — the width of four of the little squares, clear on every side. Cropping tight to the edge of the code is the most common way to break one.
  • Keep it dark on light. Inverted codes and low-contrast colour pairs are unreliable across cameras. If you tint a code, keep it dark on a pale background.
  • Do not scale it down too far. A code that reads fine at full size on your monitor may not read at 2cm on a printed corner. Bigger squares scan from further away and at worse angles.
  • Understand error correction. QR codes come in four levels — L, M, Q and H. DENSO WAVE puts Level M at roughly 15% of the code recoverable if damaged, and Level Q at around 25%, with L lower and H higher. A higher level survives a fold, a smudge or a logo placed over the middle, at the cost of a denser code. If a generator offers the choice and the code is going on paper that will be handled, choose a higher level.
  • Print one and scan it. Not the version on your screen — the printed one, in the room’s actual lighting.

How people scan it — no app required

Older guides tell readers to install a QR reader app. That advice is out of date, and installing an app is now the wrong first instruction.

iPhone and iPad: Apple’s own guide is simply “Open Camera… position iPhone so that the QR code appears inside the camera frame. Tap the link that appears at the bottom of the screen.” There is also a Scan Code control that can be added to Control Center.

Android: the built-in Camera app reads QR codes too. On Pixel phones, Google notes this depends on a setting — Settings → More settings → Camera scan suggestions must be switched on. If someone’s camera is pointing at the code and nothing is happening, that setting is the first thing to check. Google Lens will also read a code, including one already saved as a screenshot.

Troubleshooting: why a code isn’t working

  • It scans, but the form won’t open. Almost always the form is unpublished, or access is restricted to an organisation the person is not signed in to. Check the top right of the form for Published, and check General access.
  • It worked yesterday and doesn’t today. That is the signature of a dynamic code hitting a scan cap or a lapsed plan. A static code cannot fail this way.
  • Some phones read it, others don’t. Usually physical — too small, too little margin, low contrast, or a glossy laminate throwing glare.
  • It opens the editor instead of the form. The address bar URL got copied instead of the responder link. Regenerate from Share → Copy responder link.
  • Nothing happens on an Android camera. Check the camera scan setting above, or use Google Lens.

What changed since this guide was first published

This page originally described clicking a Send button and choosing a link tab. Google Forms has since reorganised sharing around a Share button with Copy responder link, and added the publishing step described above — so the original instructions no longer match what is on screen. Free-plan limits at the generators have also moved, and the advice to install a QR reader app has been overtaken by phone cameras reading codes natively. Those sections have been rewritten against the current documentation rather than lightly edited.

Frequently asked questions

Can Google Forms generate a QR code by itself?

No. Google Forms has no built-in QR code feature. It gives you a link, and you turn that link into a code somewhere else — in Chrome, in an online generator, or through an add-on.

Do QR codes for Google Forms expire?

A static code does not. It contains the form’s address, so it keeps working for as long as that form exists and is published. A dynamic code can stop working, because it points at a short link owned by the generator, which may cap scans, disable the link, or require a paid plan.

Is it free to make a QR code for a Google Form?

Yes. Chrome’s built-in generator is completely free with no account. Online generators and add-ons have free tiers as well, but those tiers carry limits — typically on dynamic codes, monthly scans, and download resolution.

Why does my QR code lead to a form nobody can open?

The form is almost certainly unpublished, or restricted to a group. Google is clear that responders with the link cannot access an unpublished form. The code itself is fine; publish the form and it will start working, with no need to reprint.

Should I use the short forms.gle link or the long one?

The short one. Fewer characters means a code with fewer, larger squares, which scans more easily when printed small or read from a distance. Tick Shorten URL in the share dialog after publishing.

Can I put a logo in the middle of the code?

Yes, with a generator that supports it. Do it with a higher error correction level so the code still reads with part of it covered, and test the printed result before making copies.

How do students scan the code without an app?

They point the phone’s built-in camera at it. On iPhone, open Camera in Photo mode and tap the link that appears. On Android, the Camera app reads codes as well, provided camera scan suggestions are enabled. No separate app is needed on either platform.

Keep reading

JH

Josh Hutcheson — Editor, PriorityLearn

Josh researches, writes, and updates the answers on PriorityLearn, checking each one against current tools, official sources, and real school policies — and flagging what varies by state or district. About PriorityLearn →

Scroll to Top