Self-hostable

Keep tabs.
Split bills.
Settle up.

Self-hosted expense sharing. Create a room, share the code, split everything. No signup, no tracking, no BS.

9:41
Tokyo Trip
TOKYO
Room Code
X7KQM
4
Your Balance
+€62.40owed by Chloé
Wyliam 58%Chloé 42%
Recent Expenses
W
Dinner at Ramen Ichifuji
Wyliam paid
€84.50
W
Uber to the airport
Wyliam paid
€32.00
C
Airbnb (2 nights)
Chloé paid
€220.00
W
Coffee & croissants
Wyliam paid
€18.30
C
Museum tickets
Chloé paid
€48.00

Everything you need.
Nothing you don't.

5-letter room codes

Create a room, share the code. Anyone can join instantly without an account.

Equal or custom splits

Split equally, by percentage, or exact amounts. Your call.

Automatic balances

The app computes who owes what in real time. No spreadsheet needed.

Self-hosted

Your data stays on your server. No third-party tracking, no cloud lock-in.

Custom accent

Make it yours. Pick the accent color that matches your style.

No auth required

Just a name. No email, no password, no verification.

Dark, minimal, fast

Nothing-style design. Pure black, hairline borders, zero clutter.

Four steps to even.

01

Create a room

Or join with a 5-letter code. No account, no email. Pick a name and you are in.

Room Code
X7KQM
02

Add expenses

Who paid, how much, what for. Log every shared cost as it happens.

Dinner
Wyliam paid
€84.50
Airbnb
Chloé paid
€220.00
03

See who owes what

Balances update automatically. The app figures out the optimal split.

Balances
Wyliam+€62.40
Chloé-€62.40
Léo€0.00
04

Settle up

Mark debts as settled. Clean slate, everyone paid, no awkward math.

All settled up
Chloé paid €62.40

Built for people who
hate overhead.

0
Tracking pixels
Zero. Not one.
0s
Deploy time
docker compose up
0
Letters to join
Share a code, done
0%
Self-hosted
Your data, your server
Built with
FlutterFastAPIPostgreSQLDockerPythonDart

Deploy in
60 seconds.

One docker-compose file. Your database, your server, your rules. The entire backend is a single container.

GHCR imageghcr.io/wyligr/tabbr-backend:latest
DatabasePostgreSQL 16
LicenseOpen source
View the repo
docker-compose.yml
services:
tabbr-backend:
image: ghcr.io/wyligr/tabbr-backend:latest
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://tabbr:tabbr@db:5432/tabbr
depends_on:
- db
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: tabbr
POSTGRES_PASSWORD: tabbr
POSTGRES_DB: tabbr
volumes:
- tabbr-data:/var/lib/postgresql/data
volumes:
tabbr-data:
terminal
$ docker compose up -d
[+] Running 3/3
✓ Network tabbr_default Created
✓ Container tabbr-db Started
✓ Container tabbr-backend Started
Ready on :8000

Stop splitting hairs.
Start splitting bills.

Download the app, create a room, share the code. That's it.