Loading…
LoadingPrint one QR code per student, then scan the class in from your own phone as you walk the room. Every scan writes a timestamped row to your own Google Sheet. No app to install, nothing for students to download, and no IT ticket to raise.
A single teacher can set this up in a free period. $7 a month covers the one phone you scan with, with unlimited scans — so a class of thirty costs the same as a class of three.
Free tier available — no credit card required
You can track school attendance with QR codes and Google Sheets two ways: a free Google Form behind a QR code that pupils scan themselves, or a scanner link that a teacher uses to scan a printed code on each pupil's card.
The Forms route costs nothing and suits an occasional register, but it needs every pupil to hold a phone and it loses a submission attempted with no signal.
QR to Sheets is free for the first 300 scans and then 7 USD per scanning device per month, which fits a class where only the teacher holds a phone.
Scan the class in under a minute. No new system to learn, no IT ticket, no app to manage.
Teachers and admin staff open the scanner URL on their own phone or tablet. No app store, no school IT account required for scanning. Works on iPhone, Android, and any browser.
Every scan creates a timestamped row: student ID or code, class, date, time. Your Google Sheet is an instant attendance register — no separate attendance system to maintain.
Track book loans, laptop check-outs, and equipment borrowing with QR codes on each item. Scan out, scan back in — the log writes itself to Google Sheets.
No teacher needs to write the time. Every scan is recorded to the second — useful for late arrivals, early departures, and asset check-in/check-out logs.
Print QR codes for student IDs, lesson timetables, or library books from the built-in QR generator. Attach them to existing cards — no new badge printing system needed.
Staff connect Google Sheets once in the admin. Students only see the scanner screen — no access to the spreadsheet, other records, or any admin settings.
Connect your attendance spreadsheet
Sign in with Google and pick the spreadsheet you use for registers or asset logs. Configure columns for student code, class, timestamp. Done in under two minutes.
Create scanner links per class or asset type
One link per class group, one for the library, one for IT assets. Each writes to its own tab so records are always separated by category.
Print QR codes for students or assets
Generate QR codes for student IDs or asset barcodes from the admin panel. Print and attach them to existing ID cards, timetable sheets, or equipment labels.
Staff scan — register fills itself
Staff open the scanner link on their phone, scan each student card as they arrive. Every scan creates a row in your Google Sheet instantly — class register complete in under a minute.
The free route is a Google Form behind a QR code. You make the form, link its responses to a sheet, turn the form URL into a QR code and put it on the board. Every pupil scans it, types a name or ID and submits. It costs nothing, it is genuinely the right answer for an occasional register, and you should try it first.
Where it breaks is a daily register in a room of thirty. It needs every pupil to be holding a charged phone, it takes as long as the slowest typist, a submission attempted on weak school wifi is lost rather than queued, and nothing stops one pupil submitting three times. We build the paid alternative, so read the table with that in mind — the honest split is that Forms wins on cost and a scanner link wins on speed and on what happens when something goes wrong.
| Capability | Google Forms QR code (DIY) | QR to Sheets |
|---|---|---|
| Who needs a phone | Every pupil, to open and submit the form | Only the member of staff scanning |
| Who needs an account | Nobody, unless you restrict the form to your school domain | The admin who connects the sheet. Never the pupils |
| Cost | Free | Free for 300 lifetime scans, then 7 USD per scanning device per month |
| Time to take a register of 30 | As long as the slowest pupil takes to type and submit | As long as it takes to walk the room |
| No signal in the classroom | The submission fails and is lost | Scans queue on the device and sync when signal returns |
| Repeat scan of the same pupil | Silently creates a second row | Row still saved, and the scanner shows an amber repeat badge |
| Timestamp | Time of submission, in the form owner's timezone | Time of scan, in the workspace timezone you set |
| Pupil sees other pupils' data | No, but they do reach a Google-hosted form | No. The scanner screen shows nothing but the scan result |
Both rows are written. The scanner shows an amber badge naming how many times that code has been seen in the last twelve hours and says the scan was saved anyway. It is deliberately not an error, and it never refuses the scan: a register that silently drops a scan because it decided the scan was a mistake is worse than one that records too much, and a second scan is often intentional, such as signing a pupil out at the end of the day.
That leaves de-duplication as a decision you make in your own sheet, where you can see the data. If you want one row per pupil per day, a UNIQUE or QUERY formula on a second tab does it and leaves the raw log intact. Keeping the raw log matters when a parent disputes a mark: the original scans are still there with their times.
The teacher-scans-pupils model exists mainly because of these two problems. When the teacher holds the only device and scans a printed code on each pupil's ID card, a pupil with no phone, a flat battery or a locked-down device is not excluded, and there is no scenario where a pupil needs to be trusted with the register.
On proxy attendance, be sceptical of any product that claims to solve it. A QR code proves a code was presented; it cannot prove who presented it. No camera-based system can, and the honest control is procedural rather than technical: a member of staff holds the device and sees the face in front of them as they scan. If a pupil hands over a friend's card in a corridor, no software will catch it.
Scans are written to the device before anything is sent anywhere, then synced. A teacher in a sports hall or a mobile classroom with no signal keeps scanning and the rows arrive when the phone reconnects. Each scan carries a device-local id, so a retry that happens to send twice still produces one row rather than two.
Set your workspace timezone in admin settings before the first real register. Times are written as YYYY-MM-DD HH:MM:SS in that zone, which Google Sheets stores as a genuine date and time. A raw ISO timestamp of the kind a hand-built script usually produces arrives as plain text instead, and every sort, date filter and formula over that column quietly stops working — a failure that is easy to miss until somebody needs a report at the end of term.
No. Teachers open the scanner link URL on any phone browser — iPhone or Android. Nothing to install, no IT account needed for scanning.
Yes. Create separate scanner links for each purpose. One link for class registers, one for library loans, one for IT equipment. Each writes to its own Google Sheets tab.
Yes. Create a scanner link for each club or activity. Works for any situation where you need to track who attended and when.
Only if you share a view-only link to the Google Sheet. The scanner link itself gives no access to the spreadsheet — only the admin can view the data.
Scans save to the device when connectivity drops. When signal returns, they sync to Google Sheets automatically — no attendance entry is ever lost.
Both scans are saved and an amber badge tells the teacher it is a repeat, showing how many times that code has been seen in the last 12 hours. Nothing is refused or silently dropped, so a genuine second scan at the end of a lesson is still recorded. De-duplicate in the sheet with UNIQUE or QUERY if you only want first-scan-per-day.
Nothing is required of the student. The teacher holds the only phone and scans a printed code on the student's ID card, lanyard or a class code sheet. This is the main reason the teacher-scans-students model suits schools better than asking each pupil to scan a code on the board.
A QR code proves a code was presented, not who presented it. No QR system can tell you otherwise, and any product claiming it can is overstating. The practical control is that a member of staff holds the scanning device and sees the person in front of them.
Yes. One scanner link serves any number of phones simultaneously, and rows arrive in the same sheet. The device limit is per workspace rather than per link, so two phones scanning at once needs two device slots at $7 each per month.
Yes, once you set the workspace timezone in admin settings. Times are written as YYYY-MM-DD HH:MM:SS in that zone, which Google Sheets reads as a real date, so sorting and date filters work. A raw ISO timestamp would arrive as text and quietly break them.
Export the Google Sheet as CSV and import it, which is what most school systems accept. Because the data is in your own spreadsheet rather than locked inside a vendor database, you can reshape it with a formula first to match whatever column order your system expects.
Also included
Attendance is a scan, but the sign-ups around it are not: trip consent, after-school clubs, parent evening slots and new-pupil registration all arrive as answers rather than barcodes.
Build a form, share the link or embed it on your own page, and every submission lands as a row in the same Google Sheet and fires a webhook the moment it arrives, so Zapier, Make, n8n or your CRM picks it up in real time. Each person can get their own QR code by email, which you scan to record their arrival. Included with the paid plan; the free plan covers one form and ten submissions.
How forms and check-in fit togetherFree to start. No credit card. No app for staff.
Start for free