Calculate tip and split a bill
Settle a shared bill without doing sums at the table: 120 with an 18% tip split between 4 people means a 21.6 tip, a 141.6 total and 35.4 each. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Bill amount
- 120
- Tip percentage
- 18
- People
- 4
- Total
- 141.6
- Tip amount
- 21.6
- Per person
- 35.4
A shared bill becomes easy to settle when every number is visible. Enter the amount before gratuity, the tip percentage you want to leave, and the number of people paying. The calculator returns the tip amount, the final total, and an equal per-person share, with monetary results rounded to two decimal places. It works for restaurant checks, café tabs, group deliveries, and other shared expenses where everyone contributes equally. The calculation is deterministic and requires no account when used in the browser.
Enter the three values that describe the shared bill
Start with the bill amount before tip. Use a plain non-negative number, without a currency symbol or thousands separator, because the calculator performs arithmetic rather than currency conversion. Next, enter the tip percentage as a percentage value: use 15 for fifteen percent, not 0.15.
Finally, enter the number of people who will share the finished total. The people value must be a whole number of at least one. A value below one cannot describe a real split and produces an invalid input error instead of an unusable division result.
The bill amount and tip percentage may be zero, which is useful for complimentary items, no-tip situations, or simply checking how a bill divides before gratuity. All three fields are required, and each must be finite. Clear validation messages identify missing values, non-numeric data, negative amounts, fractional people counts, and values outside the calculator's practical limits.
These rules keep accidental text, infinity, and divide-by-zero cases out of receipts and payment flows.
Understand how the tip, total, and share are calculated
The calculator first multiplies the bill amount by the tip percentage and divides by one hundred. That result is the tip amount. It then adds the rounded tip amount to the bill to produce the final total.
Finally, it divides that total equally by the number of people to produce the per-person share. Money values are rounded to two decimal places, matching the precision normally shown for common currencies. For example, the same inputs always lead to the same output because the implementation uses only bounded arithmetic: it never calls a network service, reads the clock, or introduces randomness.
The response includes the normalized bill amount, the original tip percentage, the validated people count, the tip amount, the total, and the per-person result. Keeping these fields separate makes the answer useful in a receipt, a group message, or an expense record. Equal sharing is deliberate: this calculator does not assign different meal costs, weights, taxes, discounts, or gratuities to individual people.
Using the result when it is time to pay
Use the browser calculator for a quick answer while a group is ready to pay. Before asking people to transfer money, compare the returned total with the merchant's receipt, especially when tax, service charges, discounts, or card surcharges already appear on the bill. Enter the exact base you intend to tip on; the capability does not decide whether local custom applies gratuity before or after tax.
Because each person's rounded share may not sum perfectly to the rounded total in every possible case, a group can assign any remaining cent to one person when exact settlement matters. The tool does not identify a currency or convert between currencies, so every participant should interpret the amounts in the same unit. It also does not store a running table of orders.
Save the returned values in your own expense system if you need an audit trail or later reconciliation.
What you can do with it
Split a restaurant check
Calculate the gratuity, final total, and equal amount owed by each diner.
Share a delivery order
Add a chosen tip to a group delivery bill and post one clear contribution amount.
Automate expense messages
Return stable bill-split fields from an app or bot without duplicating validation logic.
FAQ
What values do I need to provide?
The people count must be a whole number of at least one.
How is the tip amount calculated?
The tip amount is the bill amount multiplied by the tip percentage and divided by 100, rounded to two decimals.
Does this calculator include tax or service charges?
It uses the bill amount exactly as supplied. Include or exclude tax and existing service charges according to your needs.
Can I split the bill unevenly between people?
No. The calculator divides the final total in equal shares only. It does not assign different meal costs, discounts or tips to individual people, so for uneven splits work out each person's part separately.
Can the bill or the tip be zero?
Yes. Both may be zero, which helps when no tip is left or you just want to see how the bill divides. The number of people must be a whole number of at least one.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/calc2/tip-split-bill \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bill_amount":120,"tip_percentage":18,"people":4}'const res = await fetch("https://api.kit.forhosting.com/calc2/tip-split-bill", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bill_amount": 120,
"tip_percentage": 18,
"people": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/tip-split-bill",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bill_amount": 120,
"tip_percentage": 18,
"people": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/tip-split-bill", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bill_amount":120,"tip_percentage":18,"people":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bill_amount":120,"tip_percentage":18,"people":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/tip-split-bill", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"bill_amount": 120,
"tip_percentage": 18,
"people": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.tip_split_bill",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
For automated workflows, the same calculation is available through the API for $0.002 per request.
Use the result responsibly in browser and API workflows
Use the API when an expense app, hospitality tool, chatbot, or checkout helper needs the same predictable JSON response every time. An API request costs $0.002, while the browser calculation can run locally for free.
Technical questions
What happens when the number of people is zero?
The request returns an invalid_input error because a bill cannot be divided among fewer than one person.
How much does the API calculation cost?
Each API request costs $0.002. The browser calculator is available for free.