1. Your class
One person per line: name, then ID. Copy the two columns straight out of Google Sheets or Excel (they arrive tab separated), or type Ava Thompson | 1001. A list of names only works too: we give each person an ID. Commas never split a line, and a header row such as Name / ID is skipped.
0 people on the register
2. Class days
3. Where the attendance comes from
This only changes the Google Sheets register. The paper register is the same either way.
4. Get your register
The paper register prints up to 22 days across and 18 people down per page. Keep the scale at 100%.
If pasted formulas show an error, your spreadsheet may use semicolons between formula arguments (common outside English locales). The .xlsx download works in every locale.
How do you make an attendance sheet in Google Sheets?
Put names down column A, IDs in column B, one column per class day across row 2, and a P or an A in each cell; this generator builds that grid for you, on paper or in Google Sheets. To make it by hand, type the grid, add a data validation dropdown of P, A and L to the date cells, and count each row with COUNTIF(C3:Z3,"P"). It is free and works for a small class.
Where it breaks: someone has to type a letter for every student in every lesson, and nothing records the time anyone arrived. The register this page downloads fills those letters in itself from the rows in a second tab.
How does the Google Sheets register mark itself?
Each date cell looks for a row in the Scans tab with that student's code in column B and that day in column A. Here is cell C3, the first student on the first day:
=IF($B3="","",IF(COUNTIFS(Scans!$B:$B,$B3,Scans!$A:$A,TEXT(C$2,"yyyy-mm-dd")&"*")+COUNTIFS(Scans!$B:$B,$B3,Scans!$A:$A,">="&C$2,Scans!$A:$A,"<"&(C$2+1))>0,"P",IF(C$2<TODAY(),"A","")))- The first COUNTIFS matches a time stored as text that starts with the day, such as 2026-10-12 08:31:05.
- The second COUNTIFS matches a real date-time between midnight and the next midnight, which is what a Google Form writes.
- If either finds a row, the cell shows P. A past class day with no row shows A, and days still to come stay blank.
QR to Sheets writes the time as text in the form 2026-10-12 08:31:05, which sorts correctly but is not a date to Google Sheets, so the formula matches it as text; wrap it in VALUE() in any formula of your own. Set the timezone first, or a scan just after midnight lands on the wrong day.
Can you do it free with a Google Form?
Yes. Make a Google Form whose first question is the student ID, link it to a spreadsheet (Responses, Link to Sheets), choose "A Google Form" above, and paste the copied register into a tab named Register. Each response marks P for that ID on that day.
Where it breaks: students can submit from anywhere and type someone else's ID (what QR attendance can and cannot prove), and a typo in an ID never marks P. We make QR to Sheets, so weigh this: the form route costs nothing and this page works with it.
How do you mark it by scanning ID cards instead?
- 1. Print a card for each student. Press Make QR ID cards for this list above, or open the free QR code ID card maker. The codes hold the same IDs as the register.
- 2. Create a scanner link. Import the download into Google Sheets, sign up free, and create a scanner link pointed at this spreadsheet. It picks the Scans tab for you.
- 3. Scan each card at the door. Open the link on one staff phone. The students being scanned never open the link and need nothing.
- 4. Open the Register tab. Each scan has marked P beside that name, and past days without a scan show A.
The full walkthrough is in how to take QR attendance in Google Sheets, with a day-by-day routine in daily classroom attendance. Cards that already carry a barcode? Scan the ID cards students already have.
Mark attendance by scan, freeFree for 300 scans. No credit card required.
Paper or Google Sheets: which register should you use?
Paper wins when there are no phones in the room, no time to set anything up, or no power: it needs a pen. A Google Sheets register wins when you need totals, attendance percentages or arrival times without retyping anything.
| Question | Paper register (printed here) | Google Sheets register + Google Form | Google Sheets register + QR to Sheets scanner link |
|---|---|---|---|
| Cost | Free | Free | Free for 300 scans, then $7 per scanning phone per month |
| Who enters the data | The teacher, by hand | Each student, on their own phone | One staff phone scans each card |
| Time of arrival recorded | Only if written down | Yes | Yes |
| Works without phones | Yes | No | Needs one phone; students need nothing |
| Typos possible | Yes | Yes, a typed ID can be wrong | No, the code is read |
| Setup time | Print and go | Build a form, link it to the Sheet | Print cards, sign up, create a link |
Questions
Is the attendance sheet generator free?+
Yes. No account, no email and no watermark. The registers are made in your browser, so your class list is never uploaded. Recording scans is the part QR to Sheets charges for: the first 300 scans are free, and each phone that scans counts as one device, with Free covering one phone and Premium at $7 per phone per month.
Does the downloaded register work in Excel?+
It is made for Google Sheets. The formulas use only COUNTIFS, COUNTIF, TEXT and TODAY, which Excel has too, but test one row before relying on it there.
Why does a student show A when they were there?+
Usually one of four things: their scan or form row is in a different tab; the code holds something other than the ID in column B (for example Name | ID while the register expects the ID); the workspace timezone puts an early scan on the previous day; or the ID was typed with a stray space or a different prefix.
How do I add a student later?+
Insert a row above the last student, type the name and ID, and copy the date cells from the row above into it. The formulas adjust to the new row.
Can I mark late arrivals?+
Late is a rule about the time, not the date, so it needs one more formula comparing the scan time with the start of class. Our guides to daily classroom attendance and to finding who is absent show how.
Does a scanned QR card prove the student was there?+
No. It proves that a card was presented, not who was holding it. If identity matters, scan each card only with its holder in front of you, or check faces against a photo list.
For late marks, see daily classroom attendance with QR codes and how to find who is absent in Google Sheets. Every free tool is on the free tools page.
Guides for running the register
- Daily classroom attendance for teachers, with QR codes and Google SheetsHow a teacher takes daily class attendance with QR codes: print one card per student, scan the room from your phone, read absences in Google Sheets.Read the guide
- How to find who is absent: compare a roster with today's sign-ins in Google SheetsFormulas that list who has not signed in: compare a roster with Google Form responses or scan rows, text timestamps included, for any date or session.Read the guide
- How to take QR code attendance in Google Sheets for freeFree QR code attendance tracking with a Google Form and a Sheet, step by step. Where it breaks for schools and clubs, and the no-app staff-scan fix.Read the guide
- How to run after-school sign-in and sign-out with QR codes and Google SheetsReplace the paper after-school sign-in and sign-out sheet: a QR card per child, a staff phone at the door, and a live list of who is still here.Read the guide