Face analysis library with liveness detection, biometric template extraction, and fuzzy hashing for privacy-preserving identity verification.
npm install facezkp



Face analysis library with liveness detection, biometric template extraction, and fuzzy hashing for privacy-preserving identity verification.
``bash`
npm install facezk-core
`typescript
import { FaceZK, HumanIntegration } from 'facezk-core';
// Initialize FaceZK
const facezk = new FaceZK({
backend: 'webgl',
debug: false,
minConfidence: 0.5,
minLivenessScore: 0.8,
});
await facezk.initialize();
// Start verification session
const session = facezk.startSession();
// Process video frame
const video = document.getElementById('video');
const result = await facezk.processFrame(video);
if (result?.verified) {
console.log('✅ Verification successful!');
console.log('Biometric ID:', result.biometricId);
console.log('Humanity Code:', result.humanityCode);
}
`
`typescript
import { generateFuzzyHash, compareFuzzyHashes, defaultFuzzyConfig } from 'facezk-core';
// Generate fuzzy hash for storage
const template = await facezk.extractTemplate(faceResult);
const fuzzyHash = generateFuzzyHash(template, defaultFuzzyConfig);
// Store locally (never on server!)
localStorage.setItem('userBiometricHash', fuzzyHash.hash);
// Later verification
const newTemplate = await facezk.extractTemplate(newFaceResult);
const newHash = generateFuzzyHash(newTemplate, defaultFuzzyConfig);
const comparison = compareFuzzyHashes(fuzzyHash, newHash, defaultFuzzyConfig);
if (comparison.match) {
console.log(✅ Same person! Similarity: ${comparison.similarity * 100}%);❌ Different person. Similarity: ${comparison.similarity * 100}%
} else {
console.log();`
}
`typescript
const config = {
// Performance
backend: 'webgl', // 'webgl', 'wasm', 'cpu'
async: true,
// Detection
minConfidence: 0.7,
maxDetected: 1,
// Liveness
minLivenessScore: 0.85,
livenessFrames: 10,
// Fuzzy Hashing
fuzzyConfig: {
hashBits: 256,
similarityThreshold: 0.85,
normalization: 'l2',
},
// Features
face: {
detector: { enabled: true, rotation: true },
mesh: { enabled: true },
iris: { enabled: true },
emotion: { enabled: true },
ageGender: { enabled: true },
antispoof: { enabled: true },
},
};
const facezk = new FaceZK(config);
`
#### FaceZK
Main library class for face verification.
`typescript`
class FaceZK {
constructor(config?: Partial
// Initialization
initialize(): Promise
// Session management
startSession(sessionId?: string): VerificationSession;
resetSession(): void;
// Processing
processFrame(input: Input): Promise
// Events
addEventListener(event: VerificationEvent, listener: VerificationEventListener): void;
removeEventListener(event: VerificationEvent, listener: VerificationEventListener): void;
}
#### HumanIntegration
Integration with Human library for face detection.
`typescript`
class HumanIntegration {
constructor(config: HumanIntegrationConfig);
// Initialization
initialize(): Promise
dispose(): void;
// Detection
detectFaces(input: Input): Promise
// Utilities
convertToBiometricTemplate(faceResult: FaceResult): BiometricTemplate;
drawOverlay(ctx: CanvasRenderingContext2D, faceResult: FaceResult): void;
}
#### generateFuzzyHash(template, config?)
Generate fuzzy-tolerant biometric hash.
`typescript`
function generateFuzzyHash(
template: BiometricTemplate,
config?: FuzzyHashConfig
): FuzzyHashResult;
#### compareFuzzyHashes(hash1, hash2, config?)
Compare two fuzzy hashes for similarity.
`typescript`
function compareFuzzyHashes(
hash1: FuzzyHashResult,
hash2: FuzzyHashResult,
config?: FuzzyHashConfig
): { similarity: number; match: boolean };
Try the interactive demo to see FaceZK in action:
`bash`
npm run demo
Then visit: http://localhost:3030/demo/
Features:
- Real-time face detection and analysis
- Fuzzy hash generation and comparison
- Performance monitoring
- Debug information panel
`bashRun all tests
npm test
Performance
$3
- Detection Speed: 30+ FPS on modern devices
- Memory Usage: <100MB for typical usage
- Hash Generation: ~5-10ms per template
- Hash Comparison: ~1-2ms per comparison
- Accuracy: 95%+ for same person, <5% false positives$3
- ✅ Chrome 88+
- ✅ Firefox 85+
- ✅ Safari 14+
- ✅ Edge 88+Security
$3
- Local Processing - No biometric data leaves the device
- Fuzzy Hashing - Prevents reverse engineering of face data
- Deterministic - Same face produces consistent hashes
- Configurable - Adjustable security thresholds$3
1. Always use HTTPS in production
2. Validate inputs before processing
3. Keep library updated to latest version
4. Use secure storage for biometric hashes
5. Test with diverse samples for your use caseContributing
We welcome contributions! Please see our Contributing Guide for details.
$3
`bash
Clone repository
git clone https://github.com/VerifiedOnchain/facezk-lib.git
cd facezk-libInstall dependencies
npm installBuild library
npm run buildRun tests
npm testStart demo
npm run demo
``MIT License - see LICENSE for details.
- Documentation: https://facezk.com/docs
- Issues: GitHub Issues
- Security: security@facezk.com
- General: team@facezk.com
- Human Library - Face detection and analysis
- TensorFlow.js - Machine learning framework
- MediaPipe - Face mesh and landmarks
---
Made with ❤️ by the VerifiedOnchain Team