Plato & specific gravity converter
12 degrees Plato is a specific gravity of about 1.048, or 48 Oechsle and gravity points. Move between Plato, SG, Brix, Balling, Oechsle and points for wort, must and recipe sheets with the standard brewing formulas. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Value
- 12
- From
- plato
- To
- sg
- Result
- 1.0483782422 sg
- Converted
- 1.0483782422
- Value sg
- 1.0483782422
- Plato
- 12.0027206552
A Plato and specific gravity converter turns one brewing density scale into another without hydrometer tables or hand arithmetic. Enter a finite value plus a source unit and a target unit among degrees Plato, specific gravity, degrees Brix, degrees Balling, degrees Oechsle, and gravity points; the tool returns the converted magnitude, the specific-gravity hub value, the equivalent degrees Plato and Brix, Oechsle and points, the industry formula string, and step-by-step substitution lines you can paste into a brew log, recipe spreadsheet, or lab notebook. Homebrewers dialing original gravity, commercial brewers reconciling lab Plato with hydrometer SG, wine and cider makers using Oechsle, and students checking extract homework all need the same deterministic path.
What Plato, specific gravity, Brix, and related scales mean
Brewing and wine making still report wort and must strength on several related density scales. Degrees Plato express the mass percent of sucrose-equivalent extract in a solution—so twelve degrees Plato means roughly twelve grams of extract per one hundred grams of wort. Specific gravity is the dimensionless ratio of the liquid density to water density at the hydrometer reference basis; water is one point zero zero zero and a typical pale lager original gravity sits near one point zero four eight.
Degrees Brix measure sucrose mass percent on the optical/refractometer scale; for practical brewing conversions through specific gravity this tool uses the same industry extract path as Plato, which matches how most brew-software tables treat wort. Degrees Balling are the historical European extract scale that Plato refined; here Balling shares the Plato conversion path so legacy labels convert without a second proprietary table.
Degrees Oechsle, common in German-speaking wine regions, equal one thousand times specific gravity minus one, and gravity points use the identical numeric factor so forty-eight points means specific gravity one point zero four eight. The closed forms applied here are the standard brewing Plato-to-SG expression SG equals one plus degrees Plato over two hundred fifty-eight point six minus Plato over two hundred fifty-eight point two times two hundred twenty-seven point one, and the ASBC cubic that recovers degrees Plato from specific gravity.
This tool applies those formulas only; it does not temperature-correct a warm sample, estimate alcohol from original and final gravity, or invent factors for unknown unit names. Same-unit requests succeed and return the input magnitude with a short message that no change of unit was required. Specific gravity after conversion must stay strictly positive.
Practical tips, limits, and when to use this landing
Prefer sending bare numbers for value when you control the client; string numbers are accepted only when they match a strict finite numeric pattern without percent signs or thousand separators. Round-trip checks are straightforward for Oechsle and points, which invert exactly through specific gravity; Plato and Brix use the published ASBC pair so tiny residual differences after twelve-decimal rounding are expected and documented.
Classic teaching pairs include twelve degrees Plato to specific gravity for a lager original gravity, one point zero six zero specific gravity into Plato for a pale ale check, and an Oechsle must reading into Brix for a dual-scale label. Stay inside the absolute range so intermediate products cannot overflow, and remember this path is not a substitute for temperature-corrected lab SOPs when custody or tax extract requires official tables.
What you can do with it
Recipe and brew-log gravity
Homebrewers and brewery software convert °P, SG, and Brix so recipe targets, hydrometer readings, and packaging labels share one strength figure.
Lab extract and must tickets
Lab techs convert densitometer or refractometer readings among Plato, Oechsle, and points for wort, must, and cider tickets without hand tables.
Homework and scale checks
Students convert Plato, SG, and Brix homework values with deterministic steps they can compare against hand calculations before submission.
FAQ
What is the formula from Plato to specific gravity?
The reverse uses the ASBC cubic: °P = −616.868 + 1111.14·SG − 630.272·SG² + 135.9975·SG³.
Are Brix and Plato the same?
They are very close sucrose mass-percent scales. For brewing conversions this tool uses the same SG polynomial path for both, matching common brew-software practice for wort.
What are Oechsle and gravity points?
Both equal (SG − 1) × 1000. So SG 1.048 is 48 °Oe and 48 gravity points. The difference is naming convention (wine vs beer).
Is the Plato specific gravity converter free?
The browser tool is free and runs locally.
What does 12 degrees Plato mean?
It means roughly 12 grams of sugar-equivalent extract in every 100 grams of wort. That converts to a specific gravity of about 1.048, close to the original gravity of a typical pale lager.
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/conv/plato-gravity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":12,"from":"plato","to":"sg"}'const res = await fetch("https://api.kit.forhosting.com/conv/plato-gravity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 12,
"from": "plato",
"to": "sg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/plato-gravity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 12,
"from": "plato",
"to": "sg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/plato-gravity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":12,"from":"plato","to":"sg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":12,"from":"plato","to":"sg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/plato-gravity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"value": 12,
"from": "plato",
"to": "sg"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.plato_gravity",
"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_abs | 1000000000000 |
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
Unknown unit names fail with a clear invalid_input error instead of silent wrong factors.
What Plato, specific gravity, Brix, and related scales mean
If a unit is not on the supported list the solver rejects the request with invalid_input naming the bad field and listing supported units, so clients never guess whether a typo produced a wrong number.
How to call the API and read the response
Value must be a finite number or a strict numeric string within absolute limits of one trillion. Wire this into recipe builders, brew-house dashboards, mobile clients, or batch jobs that already hold a hydrometer or refractometer reading and only need a second unit for display, packaging labels, or mixed SI–imperial brew logs without shipping conversion tables in every app binary. Send a JSON body with three required fields: value (aliases amount, plato, gravity, sg, brix, and magnitude), from (aliases from_unit, unit_from, and source), and to (aliases to_unit, unit_to, and target). From and to must resolve to supported unit names after alias normalization—plato or degrees plato, sg or specific gravity or og, brix or bx, balling, oechsle or oe, and points or gravity points are accepted case-insensitively. On success the response echoes the rounded input value, canonical from and to labels, result and converted set to the same rounded target magnitude, value_sg and specific_gravity as the hub relative density, plato and brix as extract-scale equivalents, oechsle and points as the thousandths-based readings, unit as the target label, formula as the short equation string, message as an English summary, steps as ordered substitution lines, and supported_units as the six canonical identifiers. Failed validation—missing fields, non-finite numbers, values outside absolute limits, non-positive specific gravity, or an unknown unit name—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and when to use this landing
Normalize display labels on your side if you need locale-specific spellings—this API always returns the short canonical tokens plato, sg, brix, balling, oechsle, and points so automated tests stay stable. This landing targets people searching for a Plato specific gravity converter, degrees Plato to SG, Brix to gravity, Oechsle calculator, or brewing wort hydrometer tool online; it is not a petroleum API gravity converter, not a general multi-quantity unit converter, not an ABV or attenuation calculator, and not a temperature-correction engine. Prefer this capability when both endpoints are among the six supported brewing gravity units and you need deterministic factors and step strings; if you need crude-oil degrees API or linear mass density, use the dedicated converters for those quantities instead. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when clients deliberately probe unknown unit names.
Technical questions
What happens with an unknown unit name?
The tool returns invalid_input and lists supported units (plato, sg, brix, balling, oechsle, points). Failed tasks are never charged.