Rip-rap calculator
A 120 m² slope armored 0.45 m thick with stone at 1.65 t/m³ needs 54 m³ of layer, or 89.1 tonnes to order from the quarry. You enter the density of your own stone, so the tons match the rock you place. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Area
- 120
- Thickness
- 0.45
- Density
- 1.65
- Volume
- 54
- Tons
- 89.1
Rip-rap, also spelled riprap, is a layer of angular quarry stone placed on a slope, channel bank, or shoreline to armor the surface against flowing water, wave run-up, and ice. Civil estimators, drainage contractors, and landowners need the stone tonnage before they order rock from a quarry, size dump trucks, or write a unit-price bid. This rip-rap calculator accepts three strictly positive numbers—the slope-face area to armor, the specified layer thickness, and the bulk density of the placed stone—and returns the volume of the layer and the tons required. Volume is area times thickness in one consistent length unit; density must be mass per cubic unit of that same system, for example tonnes per cubic metre with square metres and metres.
How rip-rap volume and tons are computed from area, thickness, and density
A rip-rap armor layer is modelled as a prism whose face is the slope surface to be protected and whose height is the specified stone thickness measured perpendicular to that face. Volume is area times thickness when those two quantities share one length unit: square metres with metres, square feet with feet, square yards with yards.
Tons are that volume multiplied by the bulk density of the placed stone, using mass per cubic unit that matches the volume: tonnes per cubic metre with cubic metres, or US short tons per cubic yard with cubic yards. The identity is the definition of density rearranged for mass: mass equals density times volume, so tons equal area times thickness times density when the units are consistent.
Placed angular quarry stone in SI work often sits near 1.6 to 1.8 tonnes per cubic metre once voids between pieces are included; solid granite is closer to 2.65 tonnes per cubic metre, which would overstate the truck tons if you forgot the voids. Passing density as a required number rather than hiding a single table is deliberate: a job that places limestone, recycled concrete, or a well-graded Class III mix would be billed the wrong tons if the page silently assumed 1.65.
Thickness is the specified layer depth, not the D50 stone size and not a loose truck heap; if a specification calls for 450 millimetres, convert to 0.45 metres before calling when you work in SI. The calculator does not add a waste factor, does not convert millimetres to metres, and does not inflate plan area by the slope hypotenuse; those are job-specific multipliers applied after the geometric take-off so a quote stays transparent. Area and thickness must be strictly positive finite numbers.
A zero or negative area cannot be a slope face, and a zero thickness is not an armor layer.
What you send, which units to use, and how validation fails
Convert millimetres of thickness to metres by dividing by one thousand before you call; convert inches of thickness to feet by dividing by twelve if you work in US customary units with density in tons per cubic foot. Mixing millimetres of thickness with a density of 1.65 tonnes per cubic metre without converting would understate tons by three orders of magnitude, so the contract keeps one unit set and leaves conversion to the caller.
A 120-square-metre face by 0.45 metres at 1.65 tonnes per cubic metre yields 54 cubic metres and 89.1 tons. Validation failures name the offending field so a form can highlight area when someone types zero, or thickness when a spreadsheet leaked a negative. Upper and lower limits keep intermediate products finite: each field must be at least 1e-15 and at most 1e12.
Where a rip-rap tons calculator earns its keep
Quarries and drainage contractors estimate stone tons before they load a truck so they can quote a ditch bank, a culvert outlet, or a pond berm instead of guessing from a previous job. Municipal storm desks and highway maintenance crews need a tonnage figure that matches the public calculator when a resident or a consultant pastes area and thickness into a storefront.
Homeowners lining a creek bank, landscape contractors building a dry-stack toe, and estimators checking an 18-inch Class II blanket against a bid tab all want the same three-input contract. Curriculum authors and quantity-survey trainers can pin goldens: 120 by 0.45 at 1.65 must stay 89.1 tons. If you later need gabion fill, filter-fabric area, or millimetre-to-metre conversion as a first-class form, treat those as separate search intents rather than overloading this rip-rap landing.
The tool is a prism take-off, not a substitute for a D50 sizing chart, a USACE or FHWA layer-thickness table, or a weighbridge ticket that already weighs the load. Failed validation is not billed, which keeps exploratory scripts cheap when you deliberately send a zero area to verify error handling. Round-trip checks are easy: recompute area times thickness by hand, multiply by density, and confirm the published volume and tons match within the same twelve-decimal rounding used for all numeric fields.
What you can do with it
Order quarry stone for a ditch bank
Contractors enter the sloped face area, specified layer thickness, and bulk density to size the quarry ticket for a rectangular ditch bank or culvert outlet before the first truck leaves.
Municipal shoreline and channel take-off
Storm desks convert a measured slope-face area and specified blanket thickness into tons so the bid tab and the public calculator quote the same stone quantity.
Classroom density checks on armor prisms
Instructors and LMS auto-graders verify that volume times 1.65 t/m³ yields the expected tons for a measured rectangular rip-rap sample.
FAQ
How do I calculate rip-rap tons for a slope?
Send a positive slope-face area, a positive layer thickness in the matching length unit, and the bulk density of the placed stone.
What density should I use for rip-rap stone?
Placed angular quarry stone is often about 1.65 t/m³ once voids are included (solid granite is nearer 2.65 t/m³). Use the quarry, mix class, or agency figure for the rock you will actually place; density is a required input so the solver does not guess the stone.
What happens if area or thickness is zero or negative?
Area and thickness must both be positive; a non-positive area cannot be a slope face and a non-positive thickness cannot be an armor layer. Those failures are not billed.
Is the area the plan (horizontal) area or the sloped face?
Use the sloped surface that will actually receive stone. If you measured a plan rectangle, divide by the cosine of the slope angle (or multiply by the slope length factor) before calling. Mixing plan area with a perpendicular thickness understates the rock.
Is the thickness the same as the stone size?
No. Thickness is the specified depth of the layer, measured at right angles to the slope face, not the median stone size or a loose truck heap. If the specification says 450 mm, enter 0.45 when you work in metres.
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/build/rip-rap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"area":120,"thickness":0.45,"density":1.65}'const res = await fetch("https://api.kit.forhosting.com/build/rip-rap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"area": 120,
"thickness": 0.45,
"density": 1.65
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/build/rip-rap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"area": 120,
"thickness": 0.45,
"density": 1.65
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/build/rip-rap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"area":120,"thickness":0.45,"density":1.65}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"area":120,"thickness":0.45,"density":1.65}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/build/rip-rap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"area": 120,
"thickness": 0.45,
"density": 1.65
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "build.rip_rap",
"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.
Limits
max_dim | 1000000000000 |
min_dim | 1e-15 |
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
Missing, zero, or negative area or thickness fails with invalid_input and is not billed.
How rip-rap volume and tons are computed from area, thickness, and density
The same three numbers always produce the same volume and the same tons after fixed twelve-decimal rounding, so goldens, widgets, and API clients never disagree on an 89.1-tonne blanket that is 120 square metres by 0.45 metres at 1.65 tonnes per cubic metre.
What you send, which units to use, and how validation fails
Send three required numeric fields. area is a finite positive number for the sloped face that will receive stone; aliases slope_area, A, and face_area are accepted so a take-off sheet does not need a rename. thickness is a finite positive number for the specified layer depth perpendicular to that face; aliases layer_thickness, depth, thick, and t are recognized. density is a finite positive number for placed-stone bulk density in mass per cubic unit; aliases stone_density, rho, and bulk_density are recognized. Strings that parse as finite numbers are accepted the same as JSON numbers. On success the response echoes the cleaned inputs, publishes volume as the product of area and thickness, tons as that volume times density, and formula as the string tons equals area times thickness times density. Failed tasks return invalid_input and do not consume prepaid balance. Successful API calls use the published base of $0.002 per item.
Technical questions
What does the rip-rap calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.