Hashed access codes
Run codes are stored as hashes, so even a database glimpse won't reveal them.
TestSetGo protects a test's fairness with access control, shuffling, server-enforced timers and attempt limits — and, when you want it, focus tracking that participants can see. The measures that raise the effort of cheating, without a webcam or browser lockdown.
Give a run a short access code, stored hashed and never in the clear, or send each participant a personal invitation token tied to one person. Require a verified email when identity matters; rate-limited endpoints resist guessing and brute force.
Questions and answer options can shuffle per participant, so neighbours don't see the same order. Timers run on the server, not the browser, attempt limits are set per run, and only one active attempt is allowed at a time, enforced atomically so nobody can race two windows.
Turn on focus tracking and every switch away from the test page is recorded, down to the question it happened on — after participants are told exactly what is watched: no camera, no microphone, no keystrokes. Set an optional exit limit that submits the attempt automatically, cap the seats on a run, and follow progress, timers and focus signals in a monitor that refreshes while people work.
Answers autosave as a participant works, so a dropped connection or closed tab never loses their progress. If someone flags a problem with a question, the report reaches you, and any correction regrades affected attempts with a full audit trail.
Run codes are stored as hashes, so even a database glimpse won't reveal them.
Questions and answer options are ordered per participant, making copying from a neighbour far harder.
The clock runs on the server, so closing the tab can't buy extra time.
Cap attempts per run, with one active attempt enforced atomically to stop parallel sittings.
Require a verified email when you need to be confident who is behind an answer.
Identity options →Entry points are rate-limited, so access codes and links can't be guessed by brute force.
Record when a participant leaves the test page, question by question — a deterrent signal, plainly disclosed, never treated as proof on its own.
Watch in-progress attempts with progress and time remaining, and end an attempt with an audited reason when you must.
Cap how many participants can enter a run. People who already started always keep their place.
No, by design: no camera, no microphone, no keystroke logging, no browser lockdown. When you do want behavioural deterrence, opt-in focus tracking records how often a participant leaves the test page — and tells them so before they start — with an optional limit that submits the attempt automatically. Everything else is structural: access control, shuffling, server-enforced timers, attempt limits and verified identity.
The live monitor shows every in-progress attempt with its answering progress, time remaining and focus signals, refreshing every few seconds. Signals are indicators rather than verdicts — notifications and accidental clicks also count — so the record shows which question each exit happened on, and you decide what it means.
Access codes are stored hashed rather than in plain text, and the endpoints that accept them are rate-limited, so they can't be read from the data or guessed.
No. Only one active attempt is allowed at a time, enforced atomically, so nobody can run two windows in parallel. Attempt limits per run also cap how often a test can be taken.
Yes. Timers run on the server, not the browser, so closing the tab, reloading or tampering with the page can't extend the window.
Questions and answer options can be shuffled per participant, so no two people see the same order. With timers and one active attempt, casual copying gets much harder, without surveillance.
Their answers autosave as they go, so a dropped connection or closed tab doesn't lose their work. They resume where they left off, within the run's time limit.
Set an access code, a timer and an attempt limit, and deliver a fair test without spying on anyone.