Free tool, no signup

Free attendance sheet generator, for paper or Google Sheets

The free QR to Sheets attendance sheet generator turns a class list into a printable register and a Google Sheets register that marks each student present when their QR code is scanned or their form arrives. No account, no email, no watermark.

Made in your browser: your list is never uploaded Paper and Google Sheets from one list

Updated

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

Days the class meets

3. Where the attendance comes from

This only changes the Google Sheets register. The paper register is the same either way.

Source of the attendance rows

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. 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. 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. 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. 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, free

Free 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.

QuestionPaper register (printed here)Google Sheets register + Google FormGoogle Sheets register + QR to Sheets scanner link
CostFreeFreeFree for 300 scans, then $7 per scanning phone per month
Who enters the dataThe teacher, by handEach student, on their own phoneOne staff phone scans each card
Time of arrival recordedOnly if written downYesYes
Works without phonesYesNoNeeds one phone; students need nothing
Typos possibleYesYes, a typed ID can be wrongNo, the code is read
Setup timePrint and goBuild a form, link it to the SheetPrint 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