Grain adjusted weight calculator
Settle a grain ticket at the agreed moisture instead of the scale weight: 10000 kg of maize at 18% moisture holds 8200 kg of dry kernel, so at a 15% standard the lot weighs less and the shrink is shown. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Wet weight
- 10,000
- Moisture percent
- 18
- Standard moisture
- 15
- Dry matter percent
- 82
- Dry matter weight
- 8,200
- Water weight
- 1,800
- Adjusted weight
- 9,647.0588235294
Grain buyers, elevator operators, and farm-storage managers do not settle lots on scale weight alone. A truck of maize at eighteen percent moisture holds less dry kernel than the same scale weight at a contract standard of fifteen percent, so trade tickets convert the as-is weight to an equivalent weight at the agreed moisture. This grain adjusted weight calculator applies the wet-basis shrink identity used on North American and export contracts: adjusted weight equals wet weight times one hundred minus measured moisture, divided by one hundred minus standard moisture. The same identity returns dry-matter mass, water mass, and the shrink or moisture-gain percent that docks or credits the load.
What moisture-adjusted grain weight means
Moisture-adjusted grain weight is the scale weight a lot would have if you could add or remove only water until the wet-basis moisture equalled the contract or storage standard, leaving every kilogram of dry kernel, hull, and oil unchanged. Grain moisture on tickets is almost always wet basis: grams of water per one hundred grams of the wet sample, not the dry-basis moisture used on some laboratory sheets. Because water is part of the weighed mass, two trucks that read the same on the scale can deliver different dry matter.
A ten-thousand-kilogram lot at eighteen percent moisture holds eighty-two hundred kilograms of dry matter; the same scale weight at fifteen percent holds eighty-five hundred. Buyers therefore convert to a standard moisture so payment, storage inventory, and bin capacity refer to the same dry-matter content. The conversion is the USDA and grain-trade shrink identity: multiply the as-is weight by one hundred minus the measured moisture and divide by one hundred minus the standard moisture.
The result is larger than the scale weight when the grain is drier than the standard, and smaller when it is wetter. That increase is not a gift of extra grain; it is the extra water the contract still allows you to include. The decrease is not a penalty on dry matter; it is the water you would have to evaporate to reach the standard.
This calculator reports both the adjusted weight and the shrink or gain percent so a ticket, a dryer log, and a classroom problem stay on the same arithmetic.
Trade tickets, storage, and related search intent
Country elevators use moisture-adjusted weight so a wet harvest load is paid on the same dry-matter footing as a load already at the house standard. Farm storage logs convert incoming wet tonnes to a standard so bin inventories do not swell with rain and then collapse after the dryer. Exporters and crushers pin the same identity in settlement sheets so origin and destination cannot disagree on rounding.
Teaching laboratories use a live calculator so students stop treating moisture as a simple percent-off the scale rather than a wet-basis ratio. You supply the standard moisture yourself; typical printed values are fifteen or fifteen point five for United States number two yellow corn, thirteen for soybeans, thirteen point five for wheat, fourteen point five for barley, and fourteen for sorghum, but a written contract always wins.
Search intent for this page includes grain adjusted weight calculator, moisture shrink calculator grain, dry matter grain weight, convert grain weight to standard moisture, and elevator moisture dock. This landing is not an avoirdupois grain-to-gram unit converter, not a dryer British-thermal-unit fuel estimate, and not a test-weight to bulk-density table; those queries mean different numbers. Limits of the model are honest: it is wet-basis and algebraic.
It does not apply handling shrink, foreign-material dockage, or grade discounts, and it will not convert a dry-basis laboratory moisture unless you convert that figure to wet basis first.
What you can do with it
Elevator settlement tickets
Convert a wet harvest load to the house or contract moisture so payment reflects dry matter rather than rain weight, and print shrink percent next to the scale ticket.
On-farm bin inventory
Log incoming tonnes at measured moisture and store the equivalent weight at your storage standard so bin totals stay comparable after drying.
Teaching and contract checks
Give students or counterparties wet weight, measured moisture, and the contract standard and verify the USDA shrink identity without reversing the two percentages.
FAQ
What moisture basis does the calculator use?
Wet basis: grams of water per 100 g of wet grain, the number printed on elevator tickets. Dry-basis laboratory moisture must be converted to wet basis before calling. Moisture values must be at least 0 and strictly less than 100.
Why can the adjusted weight be larger than the scale weight?
The contract still allows that water, so the equivalent weight at the standard is higher. Dry-matter mass is unchanged.
Does this include handling shrink or foreign-material dockage?
No. The result is moisture adjustment only. Handling shrink, FM dockage, test-weight discounts, and grade factors are separate ticket lines and are not applied here.
What is the formula for grain moisture shrink?
Adjusted weight equals wet weight times 100 minus the measured moisture, divided by 100 minus the standard moisture. It is the wet-basis identity used on North American and export grain contracts.
Why does the dry matter stay the same after the adjustment?
Because only water is added or removed on paper until the moisture matches the standard. A 10000 kg load at 18% moisture keeps its 8200 kg of dry matter, while its 1800 kg of water changes.
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/bio/grain-adjusted-weight \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"wet_weight":10000,"moisture_percent":18,"standard_moisture":15}'const res = await fetch("https://api.kit.forhosting.com/bio/grain-adjusted-weight", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"wet_weight": 10000,
"moisture_percent": 18,
"standard_moisture": 15
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/grain-adjusted-weight",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"wet_weight": 10000,
"moisture_percent": 18,
"standard_moisture": 15
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/grain-adjusted-weight", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"wet_weight":10000,"moisture_percent":18,"standard_moisture":15}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"wet_weight":10000,"moisture_percent":18,"standard_moisture":15}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/grain-adjusted-weight", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"wet_weight": 10000,
"moisture_percent": 18,
"standard_moisture": 15
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.grain_adjusted_weight",
"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
Invalid moistures at or above one hundred percent, non-positive lots, and missing fields fail with invalid_input and are not billed.
Input contract, formula, and response fields
Both moisture fields must be at least zero and strictly less than one hundred, because one hundred percent moisture is all water and would make the standard-moisture denominator zero. A drier lot, for example 25000 at eleven percent toward a 13.5 percent wheat standard, returns a gain: adjusted weight rises because the contract still allows that water. Send a JSON object with three required finite numbers. Field wet_weight is the as-is scale weight of the lot in any consistent mass unit (kilograms, pounds, tonnes, or a bushel ticket treated as mass); accepted aliases are weight, grain_weight, mass, as_is_weight, and incoming_weight. It must be greater than zero. Field moisture_percent is the measured wet-basis moisture as a percent of wet weight; aliases are moisture, actual_moisture, moisture_content, mc, and wet_moisture. Field standard_moisture is the contract or storage wet-basis target; aliases are target_moisture, contract_moisture, std_moisture, and base_moisture. A worked example: wet_weight 10000, moisture_percent 18, and standard_moisture 15 yield dry_matter_weight 8200, water_weight 1800, adjusted_weight 9647.058823529413, shrink_percent 3.529411764706, weight_change negative 352.941176470587, and adjustment_direction shrink. Success also echoes the three inputs, dry_matter_percent, formula, and a short message. Missing fields, empty strings, booleans, non-finite values, a non-positive lot, and a moisture at or above one hundred fail with invalid_input and are not billed. Successful API calls use prepaid balance at $0.002 per item.
Trade tickets, storage, and related search intent
Failed validation does not consume prepaid balance. A round-trip check recomputes wet weight times one hundred minus moisture over one hundred minus standard and compares that ratio with adjusted_weight at twelve-decimal rounding.
Technical questions
How is moisture-adjusted grain weight calculated?
adjusted_weight = wet_weight × (100 − moisture_percent) / (100 − standard_moisture). That identity conserves dry matter and is the wet-basis USDA shrink used on grain tickets. Send those three finite numbers; aliases such as weight, moisture, and contract_moisture are accepted.
What does the grain adjusted weight calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.