Privacy-first browser fingerprinting platform built as a SaaS service for developers
Live Demo: https://creepjs.org | API Docs: https://creepjs.org/docs | Playground: https://creepjs.org/playground
CreepJS 2.0 is an educational, privacy-first browser fingerprinting platform designed to help developers understand and implement browser fingerprinting technology responsibly. It provides:
- π Interactive Demo - Visualize how browser fingerprinting works in real-time
- β‘ RESTful API - Production-ready API running on Cloudflare Workers (<50ms response time)
- π¦ JavaScript SDK - One-line integration with TypeScript support
- π Educational Content - Comprehensive guides explaining 40+ fingerprinting techniques
- π Privacy-First - Transparent, minimal data collection, user-controlled
"3-minute browser fingerprint API integration - Developer-friendly, privacy-first"
- Landing Page - Modern, responsive design with dark mode support
- Live Demo - Real-time browser fingerprint analysis with detailed breakdowns
- Interactive Playground - Test API endpoints with live examples
- Documentation Center - Complete guides, API reference, and tutorials
- 40+ Fingerprint Types - Canvas, WebGL, Audio, Fonts, Navigator, WebRTC, storage APIs, PCM, Service Workers, and more
- Performance Controls - Adaptive concurrency & idle-delay knobs keep UX smooth (see
docs/PERFORMANCE.md)
- RESTful API -
POST /v1/fingerprintfor fingerprint generation - Edge Computing - Deployed on Cloudflare Workers with global coverage
- Token Authentication - Simple API token-based auth
- Rate Limiting - Built-in rate limiting with Cloudflare KV
- <50ms Response Time - Lightning-fast with 99.9% uptime
import { getFingerprint } from '@creepjs/sdk';
const result = await getFingerprint({
token: 'cfp_your_token',
});
console.log(result.fingerprintId); // "a1b2c3d4e5f6..."Features:
- One-line integration
- TypeScript support
- UMD/ESM builds
- <15KB gzipped
- localStorage caching
The core engine now exposes 40+ entropy sources, spanning:
- Graphics: Canvas, WebGL, SVG, DOMRect, TextMetrics
- Hardware & Device: Screen/ScreenFrame, Color Gamut/Depth, Audio, WebRTC, Service Workers, Media Devices
- Storage & Platform: localStorage/sessionStorage/indexedDB/WebSQL, Cookie availability, plugins, Apple Pay, Private Click Measurement
- Navigator & Locale: Languages, Intl/Timezone, Reduced Motion/Transparency, HDR, Forced Colors, Vendor flavors, Architecture hints
Each collector is optional in the final payload so you can consume only the signals you need.
Need deeper tuning? Check out
docs/PERFORMANCE.mdfor concurrency, profiling, and troubleshooting tips.
Frontend (apps/web)
βββ Next.js 15 (App Router)
βββ React 19
βββ TypeScript 5.7
βββ Tailwind CSS + shadcn/ui
βββ Deployed on: Cloudflare Pages
Backend API (apps/api)
βββ Hono.js (Lightweight framework)
βββ Cloudflare Workers (V8 Isolates)
βββ Cloudflare KV (Storage)
βββ <50ms response time globally
Core Engine (packages/core)
βββ 40+ fingerprint collectors
βββ MurmurHash3 + Base62 encoding
βββ TypeScript
βββ Modular design
SDK (packages/sdk)
βββ Vanilla JavaScript
βββ TypeScript support
βββ UMD/ESM builds
βββ <15KB gzipped
| Benefit | Description |
|---|---|
| Zero Cold Start | V8 Isolates ensure instant response |
| Global Coverage | 300+ edge locations worldwide |
| Free Tier | 100K requests/day on Workers free plan |
| Low Latency | <50ms p95 response time |
| Easy Scaling | Seamlessly scales to millions of requests |
creepjs/
βββ apps/
β βββ web/ # Next.js 15 web application
β β βββ app/
β β β βββ page.tsx # Home page
β β β βββ demo/ # Live demo
β β β βββ docs/ # Documentation center
β β β βββ playground/ # API playground
β β β βββ fingerprint/[type]/ # Individual fingerprint pages
β β βββ components/ # React components
β β β βββ ui/ # shadcn/ui components
β β βββ public/ # Static assets
β β
β βββ api/ # Cloudflare Workers API
β βββ src/
β β βββ index.ts # Main entry point
β β βββ routes/ # API routes
β β βββ middleware/ # Auth, CORS, rate limiting
β β βββ utils/ # Validation, helpers
β βββ wrangler.toml # Cloudflare configuration
β
βββ packages/
β βββ core/ # Core fingerprinting engine
β β βββ src/
β β β βββ collectors/ # 40+ fingerprint collectors
β β β βββ utils/ # Hashing, async helpers
β β βββ tests/ # Unit tests
β β
β βββ sdk/ # JavaScript SDK
β βββ src/
β β βββ index.ts # SDK entry point
β βββ rollup.config.js # UMD/ESM build config
β
βββ docs/ # Documentation
β βββ ARCHITECTURE.md # Technical architecture
β βββ API.md # API reference
β βββ SDK.md # SDK guide
β βββ DEPLOYMENT.md # Deployment instructions
β βββ SECURITY.md # Security and privacy
β
βββ .github/
β βββ workflows/ # GitHub Actions CI/CD
β
βββ package.json # Monorepo root config
βββ turbo.json # Turborepo configuration
βββ pnpm-workspace.yaml # pnpm workspace config
βββ README.md # This file
- Node.js >= 20.9.0
- pnpm >= 9.0.0
- Cloudflare account (for deployment)
# Clone the repository
git clone https://github.com/taoyadev/creepjs.git
cd creepjs
# Install dependencies (MUST use pnpm)
pnpm install
# Start development server
pnpm dev
# This will start:
# - Next.js on http://localhost:3000
# - Wrangler (Workers) on http://localhost:8787# Build all packages
pnpm turbo run build
# Build specific app
pnpm --filter @creepjs/web build
pnpm --filter @creepjs/api build# Run all tests
pnpm turbo run test
# Test specific package
pnpm --filter @creepjs/core test
pnpm --filter @creepjs/api testInstallation:
npm install @creepjs/sdk
# or
pnpm add @creepjs/sdk
# or
yarn add @creepjs/sdkBasic Usage:
import { getFingerprint } from '@creepjs/sdk';
// Get fingerprint with API token
const result = await getFingerprint({
token: 'cfp_your_token',
endpoint: 'https://api.creepjs.org', // optional
cache: true, // Enable localStorage caching
cacheTtl: 3600, // Cache TTL in seconds
});
console.log(result);
// {
// fingerprintId: "a1b2c3d4e5f6...",
// confidence: 0.95,
// uniqueness: 0.87,
// timestamp: 1700000000000,
// cached: false
// }CDN (UMD):
<script src="https://cdn.creepjs.org/v1/sdk.js"></script>
<script>
CreepJS.getFingerprint({
token: 'cfp_your_token',
}).then((result) => {
console.log('Fingerprint ID:', result.fingerprintId);
});
</script>Get API Token:
curl "https://api.creepjs.org/v1/token?email=your@email.com"Generate Fingerprint:
curl -X POST https://api.creepjs.org/v1/fingerprint \
-H "Content-Type: application/json" \
-H "X-API-Token: cfp_your_token" \
-d '{
"components": {
"canvas": "...",
"webgl": "...",
"navigator": "..."
}
}'See API Documentation for complete reference.
1. Deploy Workers (API):
cd apps/api
# Login to Cloudflare
npx wrangler login
# Create KV namespace
npx wrangler kv:namespace create CREEPJS_TOKENS
# Deploy
npx wrangler deploy2. Deploy Pages (Frontend):
# Build the project
pnpm turbo run build --filter=@creepjs/web
# Deploy to Cloudflare Pages
cd apps/web
npx wrangler pages deploy .next --project-name=creepjs3. GitHub Actions (Automatic):
Set these secrets in GitHub repository settings:
CLOUDFLARE_API_TOKEN- Your Cloudflare API tokenCLOUDFLARE_ACCOUNT_ID- Your Cloudflare account ID
Push to main branch to trigger automatic deployment.
See DEPLOYMENT.md for detailed instructions.
# Run all tests
pnpm turbo run test
# Watch mode
pnpm --filter @creepjs/core test --watch# Test with Cloudflare Workers test environment
pnpm --filter @creepjs/api test# Run E2E tests
pnpm --filter @creepjs/web test:e2e| Metric | Target | Current |
|---|---|---|
| API Response Time (p95) | <100ms | ~50ms |
| SDK Bundle Size (gzipped) | <15KB | ~12KB |
| Lighthouse Score | >95 | 98 |
| Uptime | >99.9% | 99.95% |
- Transparency - Clear disclosure of data collection
- Minimization - Only collect necessary fingerprint data
- User Control - Provide "Do Not Track" options
- Short Retention - No long-term storage by default
- β GDPR - Consent mechanisms, data deletion API
- β CCPA - California privacy options
- β Cookie Banner - Clear disclosure
- β Privacy Policy - Easy-to-understand terms
See SECURITY.md for details.
- Core fingerprinting engine (40+ collectors)
- Cloudflare Workers API
- Next.js web application
- JavaScript SDK
- Documentation center
- Interactive playground
- Browser extension detection
- Advanced privacy mode detection
- Fingerprint comparison tool
- Export & sharing features
- More educational content
- CLI tool for testing
- Postman collection
- Code generators
- WordPress plugin
- React/Vue component library
See ROADMAP.md for complete roadmap.
We welcome contributions from the community! Please read our Contributing Guide before submitting PRs.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- TypeScript strict mode enabled
- ESLint + Prettier for code formatting
- Write tests for new features
- Follow conventional commits
- Core Engine: Based on CreepJS (MIT License)
- This Project: MIT License
See LICENSE for details.
Special thanks to Abraham Juliot for developing the excellent open-source CreepJS project, which serves as the technical foundation for this platform.
- Website: https://creepjs.org
- Documentation: https://creepjs.org/docs
- GitHub: https://github.com/taoyadev/creepjs
- Issues: https://github.com/taoyadev/creepjs/issues
Built with β€οΈ by developers, for developers
Making browser fingerprinting transparent, educational, and privacy-respectful