AntiForge

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 stored
Sign anything
No strokes yet

Turn your phone sideways for more room to sign.

Your signature will replay here at real speed, coloured by how fast the pen moved.
Strokes
–
Pen-down
–
Paused
–
Samples
–
Input
–
9.3%
equal error rate, skilled forgeries
SVC2004 Task 2, one global threshold
1.3%
equal error rate, random forgeries
other writers' signatures
12.5%
held-out skilled EER
fitted on one task, scored on the other
80
writers benchmarked
5 references each

How it works

  1. 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. 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. 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. 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.

000.250.250.50.50.750.7511false accept ratetrue accept rate
Task 2 skilled · EER 9.3%Task 1 skilled · EER 10.7%Task 2 random · EER 1.3%Task 1 random · EER 2.8%
TaskSkilled EERRandom EERPer-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.