PAT Recorder
An open-source browser-based Portable Appliance Testing (PAT) management system that makes compliance and record keeping less painful.
An open-source browser-based Portable Appliance Testing (PAT) management system that makes compliance and record keeping less painful.
| Status | Active / In Use |
| Platform | Python / Flask, MySQL, Docker |
| Standards | AS/NZS 3760, 5761, 5762 |
| Year | 2025 |
| Source | GitHub |
The spreadsheet
If you've ever done PAT testing... you know the log book.
Maybe it started as a tidy little thing. Asset number, description, last test date, next due date, result. A few rows. Manageable. Then you realise you need to re-test specific devices at specific intervals, and you find tags in the field that are completely out of date.
Sound familiar?
I got sick of it, and didn't want to pay for commercial software. I also wanted to start recording repairs made to ensure traceability of devices that have been fixed and returned to service.
The result is PAT Recorder — a self-hosted, browser-based web application for recording, managing, and exporting PAT testing results in full compliance with the Australian and New Zealand standards. No spreadsheets. No sticky notes. Nothing slips through.

What is PAT testing?
For the uninitiated: Portable Appliance Testing is the periodic inspection and electrical safety testing of equipment in Australian and New Zealand workplaces. Extension leads, power tools, kettles, computers, workshop gear — if it plugs into the wall, it probably needs testing.
The relevant standards are:
- AS/NZS 3760 — In-service safety inspection and testing of electrical equipment (the main one most people work to)
- AS/NZS 5761 — Testing of second-hand electrical equipment prior to resale
- AS/NZS 5762 — Testing of electrical equipment after repair
Each test involves a visual inspection and a set of electrical measurements — earth continuity, insulation resistance, leakage current, polarity. The result is a PASS or FAIL, a test tag on the cord, a certificate of inspection, and a record that the appliance is due for retest at a set interval (anywhere from 3 months to 5 years, depending on equipment class and environment).
The records have to be kept. The retests have to happen on time. And if something fails and someone gets hurt, you want a clean, complete audit trail. That last part is where spreadsheets get especially uncomfortable.
What PAT Recorder does
The workflow is pretty straightforward once you're set up.
Appliances are registered with an asset number, description, make and model, location, owner, class (Class I or Class II), supply type, and serial number. You can upload a photo of the receipt. If the appliance is brand new from a supplier and hasn't been tested yet, you can flag it as New to Service per clause 1.2.1.1 of AS/NZS 3760 — more on that in a moment.

Test records are standard-aware. You select which standard you're testing to (3760, 5761, or 5762), and the form adjusts accordingly — showing only the fields relevant to that standard. The visual inspection checklist covers plug condition, cord, casing, overheating signs, labels, exposed conductors, strain relief, safety guards, and previous repair evidence. Electrical measurements are class-aware too: Class II appliances automatically skip the earth continuity test, as they should.
When you save a test, the system automatically calculates the next test due date based on the equipment's class and supply type, using interval rules seeded from AS/NZS 3760 guidance. The rules are editable from the UI if you need to customise them.
Repairs get their own records too — date, technician, description of work, parts cost, labour time. You can attach photos. Once a test is recorded against a repair, the repair record locks — it becomes part of the immutable audit trail and can't be edited. That tamper-evident behaviour was important to get right.

The dashboard is where everything comes together. Four key metrics at the top — active appliances, upcoming tests in the next 30 days, appliances that need testing now, and NTS status. Below that, a live table of every appliance that needs attention, with the reason why: Never tested, Overdue, Repaired — test required, or NTS period elapsed — test required. Nothing is hidden in a formula somewhere. If something needs doing, it's on the list.
There's also a global search that covers asset numbers, serial numbers, locations, comments, technician names, and repair notes. Finding a specific record takes seconds.
Three standards, properly
Most PAT tools I've come across either focus on AS/NZS 3760 only, or treat all three standards as interchangeable. They're not.
The AS/NZS 5761 (resale) form adds a condition assessment, functional check, accessories condition, a safe for resale flag, and a check for outstanding product recalls. These fields aren't optional — they're part of the standard.
The AS/NZS 5762 (post-repair) form is the most complex. It supports up to five structured functional tests, each with a test method description and its own PASS/FAIL result. Critically, it links to repair records using a many-to-many relationship — you're documenting not just that the appliance passed, but which specific repairs you verified as part of this test. That linkage is what makes the post-repair workflow a genuine audit trail rather than just a checkbox.
The New to Service feature deserves a mention too. Under AS/NZS 3760 clause 1.2.1.1, equipment that is new from a supplier and hasn't been put into service can be treated differently — it doesn't need to be tested immediately, but it does need a compliant label indicating it hasn't been tested yet, plus an entry date and a due date for its first test. PAT Recorder tracks NTS appliances separately on the dashboard, generates the required cord-wrap labels (62mm format), and automatically moves them into the due for testing list when their NTS period lapses.
Certificates and labels
Label printing connects directly to a Brother QL thermal label printer over the network. Test tags include the appliance asset number, auto-incrementing tag number, test date, next due date, tester name, and a QR code. NTS cord-wrap labels include the entry date, next test due date, and the mandatory not yet tested statement required by clause 2.5.2.1(c).
Every test or repair record can export a professional A4 PDF certificate in the correct format for its standard — complete with all measurements, tester details, timestamp, and a QR code that links back to the record for instant verification. It takes one click.
All of this from the browser — no separate label software, no manual certificate formatting.
Getting it running
PAT Recorder runs in Docker. Clone the repo, run docker compose up, open your browser, and the setup wizard walks you through connecting to a MySQL database — enter the hostname, port, username, password, and database name, and the app creates the database, runs all the migrations, and seeds the default retest rules. No config files to edit by hand, no command line after that point.
Database schema migrations are managed through the UI too — if you update to a newer version and there are pending migrations, you can apply them from the browser without needing terminal access to the container.
It'll run happily on a small server, a NAS, a Raspberry Pi, or a cloud VM. The source is on GitHub at [https://github.com/ell249/patrecorder] and it's MIT licensed — free to use, free to modify.
What's next
A few things I'd like to add when time permits...
- Email or SMS reminders when appliances are coming due — the dashboard shows you what's overdue, but a proactive nudge would be better
- User accounts and roles — right now it's single-user by design, but multi-technician environments could use access controls
- Multi-site support — filtering and reporting by site/location rather than just free-text
- Bulk import from spreadsheet — somewhat ironic that the thing that prompted this project is also the most-requested feature
- Mobile-optimised test entry — the current UI works on a tablet but isn't really designed for phone use on the job
Wrapping up
PAT Recorder started as a frustration with a tool that didn't exist, became a weekend project, and ended up as something I actually use. It's not fancy. It doesn't have a cloud subscription or a per-technician licence fee. It just does the job — records tests properly, keeps everything compliant, and means I can find any appliance's complete history in about ten seconds.
If you're managing PAT records in a spreadsheet and finding it painful, give it a go. Source is at [https://github.com/ell249/patrecorder]. Pull requests welcome.
