Visualize your dating data
A modern dating app analytics platform that helps you understand your Tinder and Hinge performance through beautiful insights and data visualizations.
- Get your data from Tinder at account.gotinder.com/data or Hinge
- Upload your data at swipestats.io
- View insights - Analyze your matches, messages, swipe patterns, and compare yourself to cohorts
- Track your journey - Add life events and see how they impact your dating app performance
SwipeStats takes your privacy seriously. Your data is anonymized using a unique ID generated by hashing your email and account creation date with the SHA256 algorithm. This means your email and personal information never reach the server in their original form.
export async function createSHA256Hash(str: string) {
const utf8 = new TextEncoder().encode(str);
const hashBuffer = await crypto.subtle.digest("SHA-256", utf8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray
.map((bytes) => bytes.toString(16).padStart(2, "0"))
.join("");
return hashHex;
}Your profile ID is created deterministically, so if you upload your file again in the future, your data will be updated without creating duplicates:
const profileId = await createSHA256Hash(
birthDate + "-" + appProfileCreateDate,
);Learn more: SHA256 on Wikipedia
# Install dependencies
bun install
# Start development server
bun devMigrating from old Prisma database to new Drizzle database? See MIGRATION.md for complete instructions.
Quick migration:
bun run src/scripts/reset-schema.ts
bun run src/scripts/run-migration.tsThis is a T3 Stack project with:
- Next.js - React framework
- Drizzle - Database ORM
- Tailwind CSS - Styling
- tRPC - Type-safe API
- Better Auth - Authentication
src/
├── app/ # Next.js app router
├── server/ # Backend logic
│ ├── db/ # Database schema & queries
│ └── api/ # tRPC routers
├── scripts/ # Migration & utility scripts
└── lib/ # Shared utilities
MIGRATION.md # Database migration guide
- 📊 Comprehensive Analytics - Track swipes, matches, messages, and response times
- 👥 Cohort Comparisons - See how you compare to others by gender, age, and location
- 📅 Life Event Tracking - Correlate dating performance with trips, relationships, and profile changes
- 🎯 Profile A/B Testing - Test different bios and photos to optimize your profile
- 🔒 Privacy-First - All data is anonymized using SHA256 hashing
- 📱 Multi-Platform - Supports both Tinder and Hinge data
- 📈 Insights Dashboard - Beautiful visualizations of your dating journey
- CLAUDE.md - Developer guide for working with this codebase
- MIGRATION.md - Database migration guide
- BLOG.md - Blog content ideas
This repository is a continuation and complete rewrite of the original swipestats.io project. The new version features:
- Migration from Prisma to Drizzle ORM
- Upgraded to Next.js 16 with App Router
- Modern authentication with Better Auth
- Enhanced analytics and cohort comparison system
- Profile A/B testing functionality
- Improved privacy and data handling
The original repository is archived and this version represents the active development of SwipeStats.
To learn more about the T3 Stack: