Online signature verification
A signature is verified by how it was written, not how it looks.
A forger can copy a shape. Copying your pen speed, your rhythm, the way you accelerate into a loop and hesitate before a crossbar is far harder. AntiForge records the act of signing and compares that.
No account, no upload. Capture, matching and storage all happen in your browser.
Try the capture
Nothing is storedTurn your phone sideways for more room to sign.
- Strokes
- –
- Pen-down
- –
- Paused
- –
- Samples
- –
- Input
- –
How it works
- 1
Capture the act, not the picture
Every pointer sample is recorded with a high-resolution timestamp, plus pressure on pens. The result is a trajectory: where the pen was, when, and how fast it was moving.
- 2
Normalise what a forger can copy
Each signature is resampled at 100 Hz, centred, and scaled to unit size. Position on the page and overall size carry no weight. Per-sample velocity, speed and direction are derived from the timestamps.
- 3
Align with Dynamic Time Warping
Two signatures never take exactly the same time. DTW finds the best point-to-point alignment inside a band around the diagonal and sums the remaining differences across all feature channels.
- 4
Judge against the writer's own variation
Enrollment measures how far your signatures are from each other. An attempt is scored by its distance to your references relative to that spread, plus pen-down time and stroke count, through a logistic model fitted on the public SVC2004 corpus.
The whole pipeline is about 500 lines of dependency-free TypeScript in src/lib/engine. The benchmark that produced the numbers on this page is reproducible with pnpm bench.
Benchmark on SVC2004
40 writers per task, enrolled from 5 genuine signatures, then tested on 15 further genuine signatures, 20 skilled forgeries made by people who practised the signature, and 39 random forgeries. Task 1 has coordinates and time only; Task 2 adds pen pressure.
| Task | Skilled EER | Random EER | Per-writer EER |
|---|---|---|---|
| Task 1 (x, y, time) | 10.7% | 2.8% | 6.5% |
| Task 2 (x, y, time, pressure) | 9.3% | 1.3% | 3.0% |
“Per-writer EER” assumes a separately tuned threshold for each writer, which is how many papers report results; the headline numbers above use one threshold for everyone, which is what this app ships.
Limits, stated plainly
- Mouse is not pen. SVC2004 was captured on a tablet. Trackpad and mouse signatures have coarser dynamics, so real-world error rates will be worse than the benchmark.
- Skilled, practised forgers get through. Roughly one in ten skilled forgeries in SVC2004 passes at the equal-error operating point. This is a demonstration of the technique, not an access control.
- Five samples is a small estimate. The writer's variation is measured from ten pairwise distances. An unusual enrollment sample widens the band noticeably, which is why enrollment flags outliers.
- No liveness, no anti-replay. The raw trajectory is what gets compared. Anyone with a recording of it can replay it. Server-side use would need a challenge and device attestation.