Someone pays for the car, someone else pays for the dinner, and by Sunday night there are eleven screenshots in the group chat and nobody is sure who owes what. The usual fix is an app. The app is fine. The problem is that six people now have to install it, create an account, confirm an email and accept an invite before the first expense goes in, and at least one of them never does.
This guide is the other way round: an expense splitter that is a link. Claude writes it as a single HTML file, Hostus hosts it, and everyone in the group opens the same page on their phone, types what they paid, and sees the balances change for all of them. No app, no account for the friends, and the numbers are still there after the trip when somebody clears their browser.
What it looks like
Here is one, live: a Lisbon weekend. Four friends, three days, the kind of trip where one person books the flat, another buys the groceries and a third keeps paying for taxis. The friends are fictional, the business behind the demo is fictional and the amounts are illustrative, but the page is real. Add an expense, pick who paid and who shares it, and watch the balances at the bottom move. Open the link in a second browser, or on your phone, and the expense you just added is already there.
It has the four parts a splitter needs and a group chat never produces: a list of members, a list of expenses with who paid and who is included, a balance per person, and a short list of who pays whom so the group can settle. It also has nothing else, which is why it fits in one file.
How a splitter with no app works
A single HTML page can draw the expense list and do the arithmetic. What it cannot do on its own is hold the list somewhere all six people can reach it. A page that keeps data in the browser with localStorage works for exactly one person on one device, until they clear it.
On Hostus the page gets storage of its own. If the file references hostus.data, the server injects a small SDK before the script runs, and the page can read and write records that belong to that document. In the default mode, called shared, every reader reads and writes everything, which is exactly what a group splitter wants.
const { data } = window.hostus;
data.watch("expenses", render); // now, and on every change
await data.add("expenses", {
note: "Groceries", amount: 48.20, payer: "Ana",
split: ["Ana", "Bruno", "Carla", "Diogo"]
});Nobody logs in. A visitor who opens the link gets a signed cookie from the server, which is enough for the page to mark the rows they added as theirs and show a quiet "you" next to them. The friends never see a sign-up form. The records live on the document, not in anyone's browser, so the list is the same on the phone, on the laptop and after a cache clear.
The prompt
With the Hostus connector on in Claude, this writes the page and publishes it in one turn.
Make me an expense splitter for a weekend trip with four friends: Ana, Bruno, Carla and Diogo.
Anyone with the link can add an expense: a note, the amount, who paid, and which of the four share it (default everyone, equal split). The page lists the expenses, shows a balance per person, and computes a short "who pays whom" list so the group settles in as few transfers as possible. All of that math happens in the page.
Use the hostus.data SDK so the expenses live on the document: data.watch("expenses", render) and data.add("expenses", { note, amount, payer, split }). Let a person edit or delete the rows they added and mark those rows with a quiet "you". No backend, no localStorage, no key in the page. One HTML file, mobile first. Then publish it to Hostus and give me the link.The page is born private: in the Hostus dashboard, switch it to public (or email-gated) before you send the link to the group. Change the names and the occasion and it is your trip. For a shared flat, ask for a month selector and a running total per person instead of a settle-up list. Ask for a currency symbol, a dark theme or a receipt photo field if the group needs one. The next version goes up on the same link, and the expenses already entered stay where they are.
Hostus first, then the apps: which one to pick
Hostus. Best if you want a splitter that is a link and nobody installs anything. Claude writes the page, Hostus hosts it, every friend adds expenses from the same link on their phone, and the balances update for all of them. No account for the friends, no ads, and the data survives a cleared browser because it is stored on the document. The free plan has no clock and asks for no card.
Tricount. Pick it if you want a finished app and the group is happy to install one. Its site says "Free. No ads. No limits.", that there is no daily expense cap, and that you can try it without signing up. It is an iOS and Android app, and it ships with things a hand-written page will not have on day one, such as currency conversion and payment requests.
Splitwise. Pick it if the group already uses it. It is the incumbent, free for iPhone, Android and web, and its Pro page sells "No limits and no ads" and "Add as many expenses as you like each day, with no interruptions", which tells you what the free plan does: it limits how many expenses you add in a day and it shows ads. Splitwise does not publish the daily number, and the Pro price is not on the site either, so check their pricing page.
Settle Up. Pick it if you want a group app that also has a web app, so the one friend who refuses to install anything can still open the group in a browser. Its site says expenses are backed up and synced across the group. It does not state a price, a free tier, ads or whether members need an account, so check their site before you commit the group to it.
A shared spreadsheet. Pick it if the group is two people and both of you like spreadsheets. It works, the data is yours and there is no limit. But everyone edits everyone's rows, the formulas break the first time somebody sorts a column, and a spreadsheet on a phone is a small window onto a large grid.
Side by side
| Option | Friends need an account | Works on a phone from a link | Daily limit | Ads | Who owns the data | Free plan |
|---|---|---|---|---|---|---|
| Hostus, one HTML page | No, a signed cookie | Yes, the same link | None | None | You, on your document | Yes, no clock, 1,000 records per collection |
| Tricount | Not to try it, per its site | iOS and Android app | None, per its site | None, per its site | Lives in their app | Free, per its site |
| Splitwise | Check their site | iPhone, Android and web apps | Yes on free, number not published | Yes on free, Pro removes them | Lives in their app | Yes, limited; Pro price not on the site |
| Settle Up | Not stated on its site | Web app, iOS and Android | Not stated | Not stated | Lives in their app | Check their site |
| Shared spreadsheet | Depends on the sharing settings | Yes, cramped | None | None | You | Yes |
Prices and limits were read on each vendor's own site on 18 October 2026 and change without notice. Where a cell says "check their site", the vendor did not publish the fact on the pages we read, and we would rather send you there than guess.
Who pays whom: the math stays in the page
Balances are not stored anywhere. The page computes them from the expense rows every time it renders: for each expense, the payer is credited the full amount and each person in the split is debited their share. Add up the credits and debits per person and you have a balance. Then the settle-up list: line up the people who are owed against the people who owe, match the largest debt to the largest credit, and repeat until everything is zero. Four friends usually settle in two or three transfers.
Because the math lives in the page, there is nothing to migrate and nothing to drift out of sync. If somebody deletes a wrong expense, the balances follow. If you later ask Claude to change the split rule, say to percentages for the rent, the stored expenses stay as they are and only the rendering changes. One thing the page will not do is convert currencies: pick one currency for the trip and enter everything in it, or ask for a field for the original amount and keep the conversion in your head.
Closing the trip
When the weekend is over and everyone has paid up, you have two choices, and neither touches the HTML. Leave the page as it is: it stays online and readable, and the group can still look up who paid for the ferry. Or freeze it: ask Claude to close the data on the document, and the page keeps showing the list but stops accepting new rows. Nobody adds an expense in March to a trip that ended in January.
For the next trip, make a new page. One document is one page, and a folder groups them, so a year of trips sits together in your dashboard, each with its own members, its own list and its own link. If the group changes, nothing from the old trip follows into the new one.
Good to know before you switch
The page splits and computes; it does not move money. There is no payment button and no link to a bank, so the settle-up list is a list of transfers for people to make on their own. There is no currency conversion: one currency per trip. And the balances are computed in the page from the expense rows, which is simple and transparent, but it also means the page is the only place they exist.
Shared mode means shared. Any reader of the link can edit or delete any row, including rows they did not add, because that is what the mode is for. Keep the link inside the group. The storage works because the page is hosted on Hostus, which is what identifies each reader; open the file from your desktop and the list is empty. The free plan holds 1,000 records per collection, which is a lot of taxis, and 20,000 on paid.