
Face recognition is not only a model choice. It is a decision about where images travel, how templates are stored, who can enroll people, and what happens when the match is uncertain.
SyntaxLab's face demo performs recognition and matching in the browser. It includes live enrollment, a liveness check, one-to-one selfie and ID comparison, and searching an uploaded group photo. The page says images are not uploaded and lets a visitor choose whether to remember enrolled people locally.
Local processing can reduce exposure
When images and face descriptors stay on the device, the application avoids sending those inputs to a remote recognition service. That can simplify one part of data handling. It does not make the use anonymous, risk-free, or automatically compliant with applicable law.
Local browser storage still needs a clear retention choice and an obvious delete action. Shared devices, browser profiles, backups, and access by other people can matter too.
A threshold is a product policy
Face similarity is not a binary truth. A threshold balances false matches against missed matches, and the appropriate setting depends on the use case and testing population. A demo slider can illustrate that trade-off; it cannot establish suitability for access control, attendance, exams, or identity verification.
Measure false acceptance and false rejection across representative conditions, define a fallback, and ensure a human can resolve consequential cases. Do not make a single similarity score the sole basis for a high-impact decision.
Project evidence
The front-end implementation lives in syntaxlab/src/components/demos/face/ and src/lib/face-recognition.ts; the route is src/routes/demos.face.tsx. The demo uses browser-side face models and optional local persistence. This article does not claim fairness certification, regulatory compliance, or production identity verification.