TraceTail JavaScript SDK for browser fingerprinting
npm install @tracetail/js> Enterprise browser fingerprinting with over 99.5% accuracy. Zero dependencies, TypeScript support, and rock-solid stability.




``bash`
npm install @tracetail/js
`javascript
import TraceTail from '@tracetail/js';
// Initialize with API key
const tracetail = new TraceTail({
apiKey: 'your-api-key',
debug: false
});
// Generate fingerprint
const result = await tracetail.generateFingerprint();
console.log('Visitor ID:', result.visitorId);
console.log('Confidence:', (result.confidence * 100).toFixed(1) + '%');
`
- 🎯 Over 99.5% accuracy - Industry-leading device identification
- ⚡ Zero dependencies - Lightweight and fast (27KB bundle)
- 🔒 Enterprise security - Bank-grade fraud detection
- 📱 Cross-platform - Works on all browsers and devices
- 🔧 TypeScript - Full type safety and IntelliSense
- 🌐 Incognito consistent - Same ID across normal and private browsing
- 🚀 Performance optimized - <25ms fingerprint generation
Create a new TraceTail instance.
`javascript`
const tracetail = new TraceTail({
apiKey: 'tt_live_abc123xyz789', // Required: Your API key
endpoint: 'https://tracetail.io/api', // Optional: Custom endpoint
debug: true // Optional: Enable debug logging
});
Parameters:
- apiKey (string): Your TraceTail API key (required)endpoint
- (string): Custom API endpoint (optional)debug
- (boolean): Enable debug logging (optional)
Generate a browser fingerprint with visitor identification.
`javascript
// Basic usage
const result = await tracetail.generateFingerprint();
// With detailed components
const detailedResult = await tracetail.generateFingerprint({
verbose: true // Include raw component data
});
`
Parameters:
- options.verbose (boolean): Include detailed component data
Returns: Promise
`typescript`
interface FingerprintResult {
visitorId: string; // Unique visitor identifier
confidence: number; // Accuracy confidence (0-1)
processingTime: number; // Generation time in milliseconds
timestamp: string; // ISO timestamp
version: string; // SDK version (2.3.3)
signalCount: number; // Number of signals collected
components?: ComponentData; // Raw signal data (verbose mode)
}
Get the SDK version (static property).
`javascript`
console.log('SDK Version:', TraceTail.version); // "2.3.3"
`javascript
import TraceTail from '@tracetail/js';
// Initialize once
const tracetail = new TraceTail({
apiKey: process.env.TRACETAIL_API_KEY
});
// Use throughout your app
async function identifyVisitor() {
try {
const result = await tracetail.generateFingerprint();
console.log({
visitorId: result.visitorId, // "fp_abc123def456"
confidence: result.confidence, // 0.995 (99.5% accurate)
processingTime: result.processingTime, // 18ms
signalCount: result.signalCount // 45 signals collected
});
return result.visitorId;
} catch (error) {
console.error('Fingerprinting failed:', error);
return null;
}
}
`
`javascript
// Get detailed fingerprint data
const detailed = await tracetail.generateFingerprint({ verbose: true });
console.log({
visitorId: detailed.visitorId,
confidence: detailed.confidence,
components: {
canvas: detailed.components.canvas, // Canvas fingerprint
webgl: detailed.components.webgl, // WebGL parameters
audio: detailed.components.audio, // Audio context
fonts: detailed.components.fonts, // Font detection
hardware: detailed.components.hardware // Hardware info
}
});
`
`javascript`
async function safeFingerprinting() {
try {
const result = await tracetail.generateFingerprint();
if (result.confidence > 0.9) {
// High confidence - reliable identification
return result.visitorId;
} else {
// Lower confidence - may want to retry or use fallback
console.warn('Lower confidence fingerprint');
return result.visitorId;
}
} catch (error) {
console.error('Fingerprinting error:', error);
// Implement fallback identification
return generateFallbackId();
}
}
`javascript
const CACHE_KEY = 'tracetail_visitor_id';
const CACHE_TTL = 3600000; // 1 hour
async function getCachedFingerprint() {
// Check cache first
const cached = localStorage.getItem(CACHE_KEY);
if (cached) {
const data = JSON.parse(cached);
if (Date.now() - data.timestamp < CACHE_TTL) {
return data.visitorId;
}
}
// Generate new fingerprint
const result = await tracetail.generateFingerprint();
// Cache result
localStorage.setItem(CACHE_KEY, JSON.stringify({
visitorId: result.visitorId,
timestamp: Date.now()
}));
return result.visitorId;
}
`
For quick integration without NPM:
`html`
data-api-key="your-api-key">
Full TypeScript support with comprehensive type definitions:
`typescript
import TraceTail, { FingerprintResult, ComponentData } from '@tracetail/js';
// Initialize with types
const tracetail = new TraceTail({
apiKey: process.env.TRACETAIL_API_KEY!,
debug: process.env.NODE_ENV !== 'production'
});
// Typed results
const result: FingerprintResult = await tracetail.generateFingerprint();
// Type-safe component access
if (result.components) {
const canvas: ComponentData = result.components.canvas;
const webgl: ComponentData = result.components.webgl;
}
`
`bash`
npm install @tracetail/react
`tsx
import { useTraceTail } from '@tracetail/react';
function App() {
const { fingerprint, loading } = useTraceTail({
apiKey: 'your-api-key'
});
return
$3
`bash
npm install @tracetail/vue
``vue
Visitor: {{ visitorId }}
`$3
`bash
npm install @tracetail/angular
``typescript
import { TraceTailService } from '@tracetail/angular';@Component({
template:
})
export class MyComponent {
fingerprint$ = this.traceTail.fingerprint$;
constructor(private traceTail: TraceTailService) {}
}
`🛠️ Development
`bash
Clone repository
git clone https://github.com/tracetail/tracetail.gitInstall dependencies
npm installRun tests
npm testBuild package
npm run build
``- Bundle Size: 27KB minified + gzipped
- Generation Time: <25ms average
- Accuracy: >99.5% unique identification
- Browser Support: All modern browsers + IE11
- Caching: Automatic 1-hour local caching
- GDPR Compliant: No PII collected by default
- Secure: Client-side processing with optional server enhancement
- Transparent: Open source and auditable
- Configurable: Respect user privacy preferences
- Fraud Prevention: Detect suspicious users and prevent account takeovers
- Analytics: Track unique visitors without cookies
- Personalization: Provide consistent experience across sessions
- Security: Implement device-based authentication
- A/B Testing: Ensure consistent test groups
- Documentation: docs.tracetail.io
- API Reference: tracetail.io/api/docs
- GitHub Issues: github.com/tracetail/tracetail/issues
- Email: support@tracetail.com
- Discord: discord.gg/tracetail
MIT - see LICENSE for details.