Paper registers get lost, names get misread, and roll call eats the first five minutes of every session. QR attendance fixes all three, and you do not need a student information system to do it. A Google Sheet is enough.
This guide covers the free approach first, because for many schools it is genuinely sufficient, then it is specific about where the free approach falls down.
The free method: Google Forms plus a QR code
The best-known approach is a Google Form whose QR code is printed and displayed. Students scan it with their phone camera, the form opens, they enter their name or ID, and the response lands in a linked Sheet. It is free and can be running in ten minutes.
- Create a Google Form titled for the session, with fields for student ID and class.
- Link it to a Google Sheet under the Responses tab.
- Generate a QR code pointing at the form URL and print it for the classroom door.
- Students scan and submit as they arrive.
Where the Forms method breaks down
- Every student needs a phone with a working camera and data. That assumption fails in most classrooms below a certain age, and unevenly above it.
- It is self-reported. A student can submit for an absent friend, or submit twice, or from the car park. There is no proof of presence.
- There is no offline handling. A submission with no signal is lost, and school wifi is frequently the weak link.
- One shared form means one shared timestamp stream; separating period 1 from period 2 becomes a data-cleaning task.
- Students can typically edit or resubmit responses depending on settings, which is not what you want in a register.
The self-reporting problem is the important one. If attendance carries any consequence — funding, safeguarding, grades — a method a student can trivially game is the wrong method, regardless of price.
The staff-scans-students model
Inverting the direction fixes most of the above. Instead of every student scanning a shared code, one member of staff scans each student's code as they enter. Now the phone requirement lands on one adult rather than thirty children, presence is witnessed rather than claimed, and the queue moves at roughly one student per second.
This is the model QR to Sheets is built for, so read the rest of this section with that in mind. A member of staff opens a scanner link in their phone browser, allows the camera once, and scans students in. Each scan appends a timestamped row to the school's own Google Sheet. Staff do not create accounts and do not install anything, which matters when the person on the door is a substitute or a volunteer.
Choosing between them
| Free / do it yourself | Hosted scanner link | |
|---|---|---|
| Cost | Free | Free to 300 scans, then $7 per device per month |
| Who needs a phone | Every student | One member of staff |
| Proof of presence | Self-reported | Witnessed by staff |
| Camera scanner included | No, uses the phone camera to open a form | Yes, in the browser |
| Works with no signal | No | Buffers on device, syncs later |
| Separate sessions cleanly | One form, needs cleanup | One link per session or class |
| Where data lives | Your Google Sheet | Your Google Sheet |
Privacy, because this is student data
Attendance records about identifiable children carry obligations under GDPR, FERPA, or your local equivalent, whatever tool you use. A few things that make compliance easier rather than harder:
- Encode student IDs rather than names in the QR codes. A found lanyard then reveals nothing.
- Keep the Sheet in a school-controlled Drive with explicit sharing, not a personal account.
- Decide a retention period for the raw scan log and actually apply it.
- Check what any third-party tool can access. A tool restricted to the specific spreadsheet you selected is much easier to justify than one with broad Drive access.
- Record the lawful basis for processing, and tell parents in the privacy notice you already maintain.
Beyond attendance
Once codes are printed and a scanning habit exists, the same setup handles device and textbook loans, exam room entry, club sign-in, trip headcounts, and equipment checkout. The pattern is identical; only the destination Sheet changes.
Step by step
- 1
Give every student a durable QR code
Encode the student ID, not the name. IDs are stable, unambiguous between two students with the same name, and do not need reprinting when a name changes. Print onto ID cards or lanyards, or let students keep the image on their phone.
- 2
Build the attendance spreadsheet
One row per scan is far easier to work with than one row per student per day. Columns: timestamp, student ID, class or session, and who scanned. Pivot into a register later; do not try to write the register directly.
- 3
Set up the capture method
Either a Google Form that staff paste scans into, or a scanner link that staff open on their own phone. Decide who scans: staff scanning students is far more reliable than students self-reporting.
- 4
Trial with one class before rolling out
Run one session end to end. Watch how long the queue takes, whether the codes read under the corridor lighting, and whether the timestamps line up with the period boundaries.
- 5
Turn scans into a register
Use a pivot table over the scan log, keyed on student ID and date. Keep the raw scan log immutable; build every report as a view on top of it.
Frequently asked questions
Do students need to install an app for QR attendance?+
No. With the Google Forms method they use the built-in phone camera to open a form. With a staff-scanning setup, students need nothing at all — only the member of staff scanning has a device, and they use a browser.
Is the Google Forms method good enough for a school?+
For low-stakes registers such as a club or an optional session, often yes, and it is free. For anything with a consequence attached it is weak, because it is self-reported: a student can submit on behalf of an absent friend, and there is no offline handling.
Should the QR code contain the student name or the student ID?+
The ID. It is stable, it disambiguates students with the same name, it does not need reprinting after a name change, and a lost card does not expose personal information.
How do I turn a scan log into a register?+
Keep one row per scan and never edit that log. Build the register as a pivot table over it, keyed on student ID and date. This keeps the underlying record auditable and lets you regenerate any report.
How fast is scanning a class in?+
With one member of staff scanning at the door, roughly one student per second in practice, so a class of thirty takes well under a minute. The limiting factor is usually the queue, not the scanner.
What about students who forget their code?+
Keep a manual fallback. A good scanner allows typing the ID by hand, and you should expect to use it daily. Plan for the exception rather than treating it as a failure.