Attendance Register
Record session attendance for a class, cohort or club, and work out attendance rates, unauthorised absence, persistent absence and lateness the way inspectors and funders expect. Runs entirely in your browser — nothing is uploaded.
Version 1.0.0 · Updated Aug 5, 2026
Overview
How to use Attendance Register
The complete in-tool guidance, reproduced here so you can read it before you download.
What this tool does
CM8-117 is a working attendance register for a school, a college, a training provider, a community course or a club. You record one mark per learner per session; it works out attendance and unauthorised absence rates, shows the trend against your target, ranks groups and learners, flags persistent absentees, adds up lateness, and prints a report you can take to a governors' meeting, a funder, an awarding body or a parents' evening.
Everything runs inside this single file. There is no account, no upload and no network request of any kind, so learner names and absence reasons never leave the computer you are using. That matters here more than in most tools: an attendance register names identifiable people, often children, and the notes beside a mark can contain health and family information.
Recording a session
One row is one learner in one session. A class of twenty-four produces twenty-four rows for that session, not one. It feels heavy the first time and it is the only structure that lets the tool tell you anything about an individual learner — which is the whole point of a register.
Give every row a date, a session name, a learner and a group, and type the session name identically every week: "Unit 4 — Managing an event" and "Unit 4 - managing an event" are two different sessions to the search box. The kind of session and delivery fields drive the filters, and are worth filling in — comparing online sessions against in-person ones, or assessments against ordinary lessons, usually explains more than the headline figure does.
The six marks
The mark drives every number in the tool, so it is the field to get right.
- Mark — Counts as attending — Counts as an absence — In the denominator
- Present — Yes — No — Yes
- Late — Yes — No — Yes
- Authorised absence — No — Yes — Yes
- Unauthorised absence — No — Yes, and unauthorised — Yes
- Excluded or suspended — No — Yes — Yes
- Not required — — — — — No
Late counts as attending. A learner who walks in twenty minutes after the start was there for most of the session, and treating them as absent would understate attendance badly in any group with a transport problem. Lateness is not lost, though — it is reported on its own, in minutes, so a punctuality problem cannot hide inside a healthy attendance rate.
Excluded or suspended counts as an absence, and as authorised rather than unauthorised. That is the most common convention: the learner was not permitted to attend, so the absence is not their refusal. Some schemes count suspension differently, and a few remove it from the denominator altogether. Check what yours requires before you quote a figure externally, and say which convention you used.
The not-required trap
This is the single most important paragraph in this help page. "Not required" is removed from both sides of the calculation. It does not count as a session attended, and it does not count as a session the learner was required to attend. It has no effect at all on that learner's rate.
Get this wrong and every rate is wrong. If you record a not-required session as an absence, you punish a learner for a session that was never theirs. If you record it as present, you credit them with attendance they never gave. Either way the rate is meaningless, and the error is invisible because the number still looks plausible.
Use it when the session genuinely did not apply to the learner: they are not enrolled on that unit, they are in a different tutorial group, they had not started or had already left, they were on an authorised placement elsewhere that week, or the session was optional and the learner had not opted in. Do not use it because you do not know what happened — that is an unauthorised absence until somebody establishes otherwise.
The tool asks for a note on every not-required mark, because it is the mark most often applied by mistake and the one an auditor will ask about first. The headline tile shows the required and not-required split so you can see, at a glance, how much of the register has been taken out of the calculation.
How the attendance rate is worked out
Every rate in the tool is built from two counts.
Required sessions = every mark for that learner except "not required"
Sessions attended = marks of "present" + marks of "late"
Attendance rate = (sessions attended ÷ required sessions) × 100
Absence rate = 100 − attendance rate
The group and overall rates are worked out the same way, from the raw counts: all the attended sessions in the group divided by all the required sessions in the group. They are not the average of the individual learners' percentages. Those two numbers differ whenever learners have different numbers of required sessions, and averaging percentages gives a learner with four sessions the same weight as one with forty. The counts are printed next to every rate in both summary tables so you can check the arithmetic yourself.
Where a learner, a group or a month has no required sessions at all, the tool prints "—" rather than a zero or a percentage. Dividing by nothing is not zero attendance, it is no information, and the two should never look the same on a report.
Unauthorised absence
Unauthorised absence rate = (unauthorised absences ÷ required sessions) × 100
Note the denominator: required sessions, not total absences. That keeps it directly comparable with the attendance rate. If you want the share of absences that were unauthorised instead, take the unauthorised count from the learner table and divide it by the absences column beside it.
Authorising an absence is a decision somebody makes, not a fact about the learner. Be consistent about who makes it and what evidence they need, and write it in the note. A register where almost everything is authorised tells you nothing about engagement; one where almost nothing is tells you that nobody is processing the reasons families give.
Persistent absence
Set the threshold in the settings. A learner is flagged when:
Attendance rate < persistent-absence threshold
The default is 90 %, which is the most widely used figure: missing one session in ten. It sounds mild and it is not — over a full year that is several weeks of teaching, and the association between persistent absence and unfinished qualifications is one of the strongest in education.
The flag is only as meaningful as the denominator behind it. Over three sessions, a single absence puts a learner at 66.7 % and flags them; over a full term, the same learner may be well above the threshold. The learner table shows the required-sessions count in the column immediately before the rate — always read the two together, and do not put the flag in front of a family or a funder until the learner has enough sessions behind them for the percentage to be stable. Twenty required sessions is a reasonable minimum; ten is marginal.
Lateness
A "late" mark needs the number of minutes late, measured from the published start time, and the tool will not accept one without it. Minutes are only accepted on a late mark, so the two fields cannot drift apart.
The lateness tile totals the minutes and shows the average per late mark. Both are reported separately from attendance on purpose. Ten learners arriving fifteen minutes late every week is thirty hours of teaching lost across a term, and none of it shows up in an attendance rate of 100 %.
Groups and cohorts
The group field is free text — a form, a class, a cohort, a site, a funding stream, whatever you need to compare. Type it identically every time. Group and learner names are matched without regard to case, so "3A" and "3a" are treated as the same group, but a stray space or a different dash makes a new one.
A learner is identified by name alone. Two learners with the same name will be merged into one row of the learner table and their rates combined, which is wrong and will not look wrong. Where that is a real possibility, record a learner number, or a name with an initial, and use it consistently.
Setting a target
The attendance target is drawn as a dashed line across the monthly trend chart, colours the group bars red when they fall below it, and sets the "below target" flag in the learner table. It is your own figure — pick the one your organisation is actually held to, not an aspiration, or the chart stops carrying information.
The target and the persistent-absence threshold are independent, and they do different jobs: the target is about the group's performance this month, the threshold is about which individuals need an intervention. Setting both to 90 % is common and perfectly sensible.
What this tool cannot do
It cannot tell whether the register is complete. A session nobody entered simply does not exist here, and because attendance is a ratio, missing rows for the learners who were absent will silently push every rate up. Enter the whole session, or none of it.
It does not know your timetable, your term dates, your public holidays or your enrolment records, so it cannot tell you that a learner should have had a mark and does not. It does not calculate funded or guided-learning hours, and it does not convert sessions into hours or days: every figure is a count of sessions, and sessions of different lengths are counted equally. If your sessions vary from one hour to a full day, say so on the report, or keep a separate register per session length.
Printing and sharing
Print Report produces a report from whatever the current filter shows: the header, the six headline figures, all four charts, both summary tables, the full register and your closing notes. Print to PDF to circulate it.
The scope line under the title states the filter in force. Clear the filters before issuing anything described as the full term or the full year — a report built with the mark filter set to "unauthorised absence" will show an attendance rate of 0 %, which is correct for that filter and catastrophic if the reader assumes it covers everything.
Because the register names identifiable people and the notes may record health or family circumstances, treat every export as confidential. Consider using learner numbers or initials for anything circulated beyond the people who need the names.
Saving your work
Marks, settings and the report header are written to this browser's local storage as you type, and the toolbar shows the time of the last save. That storage belongs to one browser on one computer: another browser, a private window, a second machine or a clean-up tool that clears site data will not have it.
Treat Export .json as the real save — one file containing everything, which Import .json restores anywhere. Export CSV gives you the register for spreadsheet work, including the derived attended, absence and unauthorised columns, and covers every filtered record rather than only those drawn on screen. Reset asks twice, then erases everything this tool has stored. There is no undo.
Accuracy & disclaimer
This tool records the marks you enter and calculates from them. It cannot tell whether a mark is right, whether an absence was properly authorised, whether a "not required" was justified, or whether anybody was missed off the register — and every rate depends on all four.
Attendance codes, the treatment of exclusions and suspensions, persistent-absence definitions, funding rules and record-retention periods differ by country, by sector and by awarding body. This is an internal record-keeping and calculation aid, not a statutory return, not legal advice, and not a substitute for the attendance policy you are actually held to.