Brick mortar bag calculator
500 bricks at 40 bricks per bag need 13 bags of mortar mix, with room left for 20 more bricks. Enter your brick takeoff and the coverage printed on the bag, add waste if you want a buffer, and buy whole bags. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Brick count
- 500
- Coverage per bag
- 40
- Waste percent
- 0
- Effective bricks
- 500
- Bags exact
- 12.5
- Bags
- 13
Planning a brick wall, veneer, or garden border means knowing how many bags of mortar mix to load into the cart before you leave the yard. This brick mortar bag calculator turns a simple takeoff—your total brick count—and the mortar coverage per bag printed on the product or taken from your joint practice into a whole-bag purchase count you can trust. Optionally add a waste percent so cleanup, broken corners, and thick joints do not leave you short on the last course. Use the result for DIY shopping lists, contractor purchase orders, and multi-run schedules where each wall has its own brick count and bag coverage rate.
How bag count is computed from bricks and coverage
Start from the estimator identity used on many retail bag charts and DIY masonry guides: one bag of mortar mix is said to lay a stated number of bricks when joints and practice match the label. When waste is omitted the factor is one and the bare takeoff is used. Coverage is not cubic volume: it is bricks per bag.
That framing matches bag labels that say approximately twenty-five to forty-five modular bricks per bag depending on bag weight, joint thickness, and whether you are bedding only or laying full joints. If your supplier instead publishes cubic yield per bag and mortar volume per brick, use the volume-based mortar calculator for that path rather than forcing a conversion here.
What you can do with it
DIY garden wall shopping list
Enter your brick takeoff and the bricks-per-bag figure from the bag label, add ten percent waste if you want a buffer, and buy whole bags without shortfall or bulk overstock.
Contractor multi-run estimates
Feed each wall’s brick count and crew coverage rate into the same formula so purchase orders match the estimate and every ceil step is auditable.
FAQ
What happens if the brick count is negative?
A negative brick count is non-physical. Zero bricks is allowed and returns zero bags.
How is this different from a mortar volume calculator?
A volume calculator multiplies bricks by mortar volume per brick and divides by bag volume in cubic units. This tool divides brick count by bricks-per-bag coverage, which matches retail bag charts and many DIY searches for bag counts.
What does it cost?
The browser tool is free and runs locally.
Where do I find how many bricks one bag of mortar lays?
On the bag label, or from your own joint practice. Labels often say roughly 25 to 45 modular bricks per bag, depending on bag weight, joint thickness and whether you bed only or lay full joints.
Should I add a waste allowance?
It is optional and starts at zero. Adding about 10 percent gives a buffer for cleanup, broken corners and thick joints, so you are not short of mortar on the last course.
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/home/brick-mortar-bags \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"brick_count":500,"coverage_per_bag":40}'const res = await fetch("https://api.kit.forhosting.com/home/brick-mortar-bags", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"brick_count": 500,
"coverage_per_bag": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/brick-mortar-bags",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"brick_count": 500,
"coverage_per_bag": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/brick-mortar-bags", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"brick_count":500,"coverage_per_bag":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"brick_count":500,"coverage_per_bag":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/brick-mortar-bags", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"brick_count": 500,
"coverage_per_bag": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.brick_mortar_bags",
"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
The same pure function powers the free browser tool and the paid API, so a phone quote matches the line item a script posts later. A negative brick count or a non-positive coverage figure is rejected with a clear invalid_input message instead of a silent nonsense bag total.
How bag count is computed from bricks and coverage
Write effective_bricks equals brick_count times one plus waste_percent divided by one hundred. Then bags_exact equals effective_bricks divided by coverage_per_bag, and bags is the ceiling of that quotient because hardware stores sell whole bags, not fractional sacks. spare_bricks is how many extra brick places the rounded bag count can cover beyond the effective count, which is useful when you want a small buffer without inventing a second waste field. The pipeline is deterministic floating-point arithmetic with no random seeds, no wall-clock timestamps, and no network calls, so identical inputs always produce identical JSON. Brick count must not be negative: a negative count is rejected with invalid_input because a negative quantity is non-physical. Zero bricks is allowed and yields zero bags. coverage_per_bag must be strictly positive so the ratio is defined, and waste_percent when provided must sit between zero and one hundred inclusive.
What you send and what you get back
Send two required finite numbers: brick_count for the total number of bricks in the wall or run, and coverage_per_bag for how many bricks one bag of mortar mix covers in matching practice. Optionally send waste_percent as a percent overage of the brick count; if you omit it the default zero applies and waste_defaulted is true so API clients can see that no overage was assumed. Missing required fields, non-numeric strings, NaN, and Infinity fail with invalid_input and are not charged. When brick_count is negative the request fails with a message that the brick count cannot be negative, so clients can correct the takeoff before retrying instead of receiving a negative bag total. When coverage_per_bag is zero or negative the request fails because division by a non-positive coverage is undefined for a purchase estimate. On success the response echoes cleaned inputs, effective_bricks after waste, bags_exact, integer bags, spare_bricks, a unit_note reminding you that coverage is bricks per bag not cubic metres, and a short formula string for documentation. Classic checks include five hundred bricks at forty bricks per bag with no waste: bags_exact is twelve point five and bags ceilings to thirteen. Another useful check is one thousand bricks at thirty-five bricks per bag with ten percent waste: effective bricks become one thousand one hundred, bags_exact is about thirty-one point four three, and bags ceilings to the next whole sack. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where brick mortar bag estimates show up in real work
Homeowners building a garden wall, planter, or brick veneer need a trustworthy bag count before a hardware-store run, especially when large bags of mix are heavy and hard to return once opened. Suppliers often print brick coverage on the bag side panel; converting a takeoff count through that rate makes the shopping list transparent rather than a black-box rule of thumb. If you later need mortar volume from joint thickness and bag cubic yield, wall area from length and height, or brick count from wall dimensions and waste, treat those as separate search intents and landings rather than overloading this brick-count and bags-per-coverage calculator page. Masonry and hardscape crews build purchase schedules from takeoff brick counts and the coverage rate the crew uses for the joint design on site; a single deterministic endpoint that ceilings bags reduces spreadsheet drift between the estimator and the purchasing clerk. Property managers planning multiple partition or landscaping runs feed each brick_count and coverage_per_bag pair through the API and attach bags to purchase orders so overstock stays intentional. Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Bag label cross-check
Compare the calculator bag total against supplier charts that quote bricks per bag, then adjust coverage_per_bag when joint thickness differs from the label assumption.
Technical questions
How does this brick mortar bag calculator work?
It multiplies brick_count by (1 + waste_percent/100) to get effective_bricks, divides by coverage_per_bag (bricks laid per bag), and ceilings to whole bags. bags_exact stays in the response for audit.
What is coverage_per_bag?
It is how many bricks one bag of mortar mix covers—bricks per bag—not cubic volume. Use the figure on the bag label or from your joint practice (often roughly 25–45 modular bricks depending on bag size and joints).