All guides
Attendance guide

How to scan student or staff ID cards for attendance into Google Sheets

Scan the ID cards students or staff already carry into Google Sheets: which barcodes a phone reads, plus the free USB scanner and Google Form routes.

By the QR to Sheets team 13 min readUpdated 8 October 2026

Short answer

To take attendance from existing student or staff ID cards in Google Sheets, scan the barcode or QR code already printed on each card and add one timestamped row per scan, so nothing has to be reprinted.

The free routes are a USB barcode scanner typing into the sheet with a small Google Apps Script that adds the time, or a Google Form, where the ID is typed rather than scanned.

With QR to Sheets, a staff phone scans each card through a browser link and writes a row per scan, and the students or staff being scanned need no app and no phone.

Most schools and many workplaces have already done the expensive part of a scanning register: every student or employee carries a card with a number printed on it as a barcode. The only missing piece is something that reads that code and writes a row with the time into a Google Sheet. Done well, nobody reprints anything, and a class of 30 is registered in about the time it takes to walk past the door.

This guide covers what is actually on a typical ID card, two free ways to get it into a sheet, where each one breaks, and the formulas that turn a list of scanned IDs into names and a late list.

Written by QR to Sheets, which sells the phone scanning described in the second half, so weigh that accordingly. The free routes come first, and at a single desk the first one is genuinely enough. The barcode formats listed for QR to Sheets were checked against its own scanner on 2026-10-08. Google behaviour, barcode conventions and the CodeREADr facts were read on their own pages the same day.

What is on a typical student or staff ID card?

Turn a card over before planning anything. The number you care about is usually printed in plain digits next to a code, and the code is one of these:

Which of these a phone browser can read with QR to Sheets

The QR to Sheets scanner reads QR codes, Data Matrix, PDF417, Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-A, UPC-E and ITF (interleaved 2 of 5). It does not read Codabar, so a card with a Codabar library barcode will not scan. Scan one real card before a school-wide plan depends on it, especially an older or laminated one.

Check the number the card actually encodes

A scan writes exactly what the code holds, which is not always the number printed under it. Some cards add a prefix, a suffix or a check digit, and a 14-digit library-style number also carries a code for the library. Scan one card into a test row, compare it with your student or staff system, and store IDs on your People tab in the form the card encodes. A lookup only matches an exact copy.

Free route 1: a USB barcode scanner typing into the sheet

A USB barcode scanner behaves like a keyboard. Open the sheet, click the first empty cell in column A, scan a card, and the ID is typed in with Enter, so the cursor moves down ready for the next card. At one fixed desk, such as a school office logging late arrivals, it is fast, cheap and needs no software. Format column A as plain text before the first scan, or an ID such as 01042 is stored as the number 1042 and no longer matches the People tab.

It types the ID and nothing else, so on its own you get no time. A formula such as NOW() beside it is not a timestamp: it recalculates, and every row ends up showing the current time. Add the time with a few lines of Google Apps Script instead. In the sheet, open Extensions, Apps Script, paste this, and save:

This is a perfectly good register for one desk. Where it breaks:

Free route 2: a Google Form

A Google Form with one short-answer question, Student ID, linked to a spreadsheet, gives each submission a row with a real timestamp, free. Print a QR code that opens the form, and students submit their own number on their own phones. The full free setup for a school, including the settings that matter, is in QR code attendance for schools.

If the cards already exist, typing their numbers into a form throws away the reason they were printed. That is the gap the next section fills.

How do I scan ID cards with a phone at the door?

QR to Sheets turns a phone browser into the card reader. The admin signs in with Google once, connects the spreadsheet, and creates a scanner link that writes to one tab, here called Log. The teacher or staff member taking attendance opens that link in Safari or Chrome, allows the camera once and scans each card as people come in. There is no app and no account for the person scanning, and they never get access to the spreadsheet.

Each scan becomes a row on the Log tab: the scan time in column A, the card's value in column B, the scanner link it came through in column C (written as link:Main gate), then the workspace name, the device type and a scan ID. The scanner link uses the phone's camera, and the students or staff being scanned never open the link and need nothing.

Two honest limits. The phone shows the code it just scanned and a confirmation, not the person's name, because the names live in your sheet rather than in QR to Sheets; showing the name for a scanned ID covers the lookup. And a scan proves a card was presented, not who was holding it. A card lent to a friend scans like any other, so have staff scan each card with its holder in front of them. Whether QR attendance can stop buddy punching goes into that in detail.

Who came in late? Formulas for a card-scan log

Once IDs are arriving, a Present tab can list everyone scanned today with their first scan time and a Late flag. These formulas read a Log tab laid out the way QR to Sheets writes it: time in column A, ID in column B. On the USB scanner sheet above the ID is in column A and the time in column B, so swap Log!$A and Log!$B in each formula. Put headers in row 1 (ID, First scan, Status) and the formulas in row 2:

Why VALUE() is there: QR to Sheets writes each time as YYYY-MM-DD HH:MM:SS in the workspace timezone, and Google Sheets stores it as text. VALUE() turns that text into a date and time, INT() keeps the day, and MOD(..., 1) keeps the time of day. VALUE() also accepts a real date, so the formulas work on the USB scanner sheet too, where the script writes a real date, once the two columns are swapped as above. Check your own column with =ISTEXT(Log!A2).

TODAY() follows the spreadsheet's own time zone, set in File, Settings. Set it to the same zone as the scans, or near midnight today will mean the wrong day. A list of who has not scanned at all is a People tab minus today's IDs, which finding who is absent builds step by step.

Some schools have no cards, some cards carry only a photo and a name, and some carry a format a phone cannot read. In each case the fix is the same: print a card per person whose QR code holds only their ID. The free QR code ID card maker takes a pasted list of names and IDs, needs no signup, makes the cards in your browser so the list is never uploaded, and prints credit-card size cards at 10 per A4 sheet or 8 per US Letter sheet.

Which route fits your school or site?

QR to Sheets facts from its own product, 8 October 2026. CodeREADr facts from CodeREADr's own article dated 11 September 2023, read 8 October 2026.
RouteReads the cardTimestampWhere it worksAccess to the spreadsheetCost
USB barcode scanner and Google SheetsYes, the barcode, typed in as keystrokesOnly with an Apps Script, which writes a real dateOne desk, with the sheet open on that computerThe person at the desk needs edit accessFree apart from the scanner
Google FormsNo, the ID is typedYes, a real dateAny phone with a signalResponders only fill in and submit; keep View results summary offFree
CodeREADrYes, with the CodeREADr mobile app for Android and iOSYesPhones or a self-service kiosk with the app installedScans are copied to Google Sheets through the CodeREADr ConnectorNot stated in the article
QR to SheetsYes, QR codes and common 1D barcodes, not CodabarYes, text in the workspace timezone, read with VALUE()Any phone browser, at a door, a gym or a busThe person scanning never gets accessFree for one phone and 300 scans in total, then 7 USD per registered device per month
QR to Sheets facts from its own product, 8 October 2026. CodeREADr facts from CodeREADr's own article dated 11 September 2023, read 8 October 2026.

Where each one wins. A USB scanner is the best value at a single desk where the sheet is open anyway. A Google Form is right when there are no cards and every person has a phone. CodeREADr's own article describes the app checking each scanned ID against a list kept in Google Sheets, and mentions IDs with RFID or NFC tags as well as barcodes, so it fits a site that wants a valid or not valid answer at the door, or reads tap cards. QR to Sheets fits staff who scan existing cards on a phone they already carry, with no app to install and nobody else given access to the spreadsheet.

What it costs

The free plan is one scanner link, one Google Sheet, one registered device and 300 scans in total, not per month. That is about ten school days for one class of 30, enough to prove the setup with real cards. Beyond it, Premium is $7 per phone per month with unlimited scans and links, so a school with one phone at the main gate and one at the side gate pays for two devices, whatever the number of students. The people being scanned are never counted.

Step by step

  1. 1

    Find out what is on the card

    Look for a barcode or a QR code on the front or back. Scan one card into a test row and compare the value with the ID number your school or HR system uses, including any prefix or check digit.

  2. 2

    Build a People tab

    List every ID exactly as the card encodes it in column A, with the name in column B and the class or team in column C. Format column A as plain text before typing, so leading zeros survive.

  3. 3

    Choose where the scanning happens

    A USB scanner on a desk computer suits one fixed spot such as a school office. A staff phone with a scanner link suits a door, a gym, a bus or a field trip.

  4. 4

    Add names and a late list

    Look each scanned ID up on the People tab, and add a Present tab that lists everyone scanned today with their first scan time and a Late flag.

  5. 5

    Print cards for anyone without one

    If some people have no card, or the cards carry no code, print QR ID cards that hold only the ID number, using the same IDs as the People tab.

Frequently asked questions

Can I scan student ID cards into Google Sheets with a phone?+

Yes, if the card carries a QR code or a common 1D barcode such as Code 39 or Code 128. A scanner link from QR to Sheets opens in the phone browser, reads the card with the camera and writes a timestamped row to your Google Sheet. Cards with only a chip, a proximity tag or a magnetic stripe cannot be read by a camera.

What kind of barcode is on a student ID card?+

Usually Code 39 or Code 128, sometimes a QR code on newer cards. Library-style cards often use Codabar, which the QR to Sheets scanner does not read. Scan one card into a test row and compare it with the ID in your school system before relying on it.

Do students need an app or their own phone?+

No. A teacher or staff member scans each card with one phone, and the students only show their card. They never open the scanner link and need nothing installed.

How do I add a timestamp when a USB barcode scanner types into Google Sheets?+

Use a small onEdit Apps Script that writes new Date() into the next column whenever an ID lands in column A. A NOW() formula does not work as a timestamp, because it recalculates and every row ends up showing the current time.

Our cards only have a magnetic stripe or a tap chip. Can a phone read them?+

Not with the camera. A phone camera reads printed codes only. Either keep the existing reader system, or print QR ID cards for attendance with a free ID card maker, holding the same ID numbers.

Does scanning an ID card prove the student was there?+

No. A scan proves a card was presented, not who was holding it. Have staff scan each card with its holder in front of them, and treat the sheet as a register of cards seen, checked by the person scanning.

Try it on your own Google Sheet

Connect Google, create a scanner link, and share the URL with your team. The free tier covers 300 scans, and nobody you share it with has to install anything.

Start for free

No credit card required

Keep reading