Bill Splitter: A Privacy-First Approach to Shared Expenses
Splitting bills among friends, roommates, or travel companions is a common yet often tedious task. While numerous applications exist to address this need, most require account creation, store personal data indefinitely, or come with subscription fees. Bill Splitter takes a different approach: a free, anonymous, and ephemeral solution for dividing shared expenses.
The Problem with Existing Solutions
Traditional bill-splitting applications typically require users to create accounts, provide email addresses, and maintain persistent data. For many casual use cases—splitting a dinner bill, dividing holiday expenses among friends, or managing shared household costs—this level of commitment feels excessive. Users simply want to calculate who owes whom without the overhead of yet another account to manage.
A Simpler Alternative
Bill Splitter operates on a straightforward principle: create a split, share the link, and let everyone add their expenses. The entire process requires no registration, no personal information, and no long-term data storage.
How It Works
The workflow consists of four steps:
-
Create a Split: Visit the application and create a new expense-sharing session with a single click.
-
Share the Link: A unique URL is generated that can be shared with group members through any messaging platform.
- Add Expenses: Each participant joins by entering their name and adds expenses they have paid for, including a description and amount.
- View the Settlement: Once all participants have marked themselves as finished, the application calculates the optimal settlement—displaying precisely who needs to pay whom and how much.
Key Features
No Account Required: The application is entirely anonymous. Participants identify themselves only by a name of their choosing within each split.
Automatic Expiration: All data is automatically deleted after 24 hours. This ensures privacy while acknowledging that most bill-splitting scenarios are resolved within a day.
Multi-Language Support: The interface is available in English and Dutch, with automatic detection based on browser preferences.
Mobile-Friendly Design: The responsive interface works seamlessly across devices, making it convenient to add expenses immediately after a purchase.
Smart Settlement Calculation: Rather than presenting a complex web of transactions, the application calculates the minimum number of payments required to settle all debts.
Under the Hood
For those interested in the technical foundation, Bill Splitter is built on a modern serverless architecture.
Architecture Overview
The application follows a clean separation between frontend and backend:
-
Frontend: A React-based single-page application provides the user interface. It communicates with the backend through a RESTful API and maintains local state to remember which participant you are within a split.
-
Backend: The API runs on Cloudflare Workers, a serverless platform that executes code at the network edge—geographically close to users regardless of their location. This results in consistently low response times.
-
Database: Data is stored in Cloudflare D1, a distributed SQLite-compatible database. The schema is minimal: splits, participants, and expenses, with automatic cleanup of expired data.
Privacy by Design
Privacy considerations informed every architectural decision:
- No authentication system means no passwords to breach
- No email addresses or personal identifiers are collected
- Automatic data expiration ensures information does not persist
- Client-side logging anonymises any potentially identifying information
- No cookies or tracking mechanisms are employed
The Settlement Algorithm
When all participants have finished entering expenses, the application calculates settlements using a greedy algorithm that minimises the number of transactions. Rather than having everyone pay everyone else, the system identifies the optimal pairings between those who owe money and those who are owed.
For example, if Alice paid 60 euros, Bob paid 30 euros, and Carol paid nothing for a 90-euro total, the per-person share is 30 euros. Carol owes 30 euros, Bob is settled, and Alice is owed 30 euros. The settlement: Carol pays Alice 30 euros. One transaction instead of potentially multiple smaller ones.
Use Cases
Bill Splitter is particularly well-suited for:
- Group Dinners: Quickly determine who owes what after a meal where different people covered different items
- Shared Accommodation: Split holiday rental costs, groceries, and shared activities among travellers
- Household Expenses: Roommates can track shared purchases and settle up regularly
- Event Planning: Coordinate expenses for parties, group gifts, or team outings
- One-Time Situations: Any scenario where creating accounts in a dedicated app feels excessive
Conclusion
Bill Splitter demonstrates that not every problem requires a complex solution. By focusing on the core need—calculating who owes whom—and deliberately avoiding feature bloat, the application provides genuine utility without the typical friction of modern web applications.
The source code is available for those who wish to examine the implementation or deploy their own instance. The application itself is free to use and will remain so.
Sometimes the best software is the software that does one thing well and then gets out of your way.
Bill Splitter is available at https://billsplitter.nl. The project is open source and welcomes contributions.