{"id":150,"date":"2026-11-03T10:39:13","date_gmt":"2026-11-03T09:39:13","guid":{"rendered":"https:\/\/termometrwifi.com\/en\/slugalcoholmeter-correction\/"},"modified":"2026-11-07T20:46:54","modified_gmt":"2026-11-07T19:46:54","slug":"alcoholmeter-correction","status":"publish","type":"page","link":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/","title":{"rendered":"Alcoholmeter temperature correction - calculator (OIML tables)"},"content":{"rendered":"<p><strong>An alcoholmeter only tells the truth at 20 \u00b0C. In warmer liquid it reads high (at 30 \u00b0C by as much as 3-4 points), in colder liquid it reads low.<\/strong> The calculator below converts the reading into true strength - not from a simplified \u201ccorrection scale\u201d, but from the full ethanol-water density polynomial on which the standard alcoholometric tables are built (OIML). Next to it you will also find a saccharometer correction (\u00b0Blg, practically the same as \u00b0Plato).<\/p>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bitter:wght@500;600;700&family=Source+Sans+3:wght@400;600;700&display=swap\" rel=\"stylesheet\"><div class=\"twf-calc\" id=\"dest-calc\" data-only=\"korekta,blgtemp\"><header class=\"tc-head\"><span class=\"tc-eyebrow\">Distillation<\/span><h2 class=\"tc-title\">Distillation calculator<\/h2><p class=\"tc-lead\">Wash, yield, dilution, alcoholmeter correction, sugar scales, column and heating element power, costs - 16 distilling calculators in one place. Enter your data and the result updates live.<\/p><\/header>  <div class=\"tc-tabs\" role=\"tablist\" aria-label=\"Calculator categories\"><\/div>\n  <div class=\"tc-subnav\" id=\"dc-subnav\" role=\"tablist\" aria-label=\"Choose a calculator\"><\/div>\n\n  <div class=\"tc-grid\">\n    <div class=\"tc-panel\">\n      <div class=\"tc-panel__cap\" id=\"dc-cap\">Your data<\/div>\n      <div id=\"dc-fields\"><\/div>\n      <div class=\"tc-formula\" id=\"dc-formula\"><\/div>\n    <\/div>\n    <div class=\"tc-results\" id=\"dc-results\" aria-live=\"polite\"><\/div>\n  <\/div>\n\n  <p class=\"tc-foot\">\u26a0\ufe0f Approximate values (for education). Results depend on raw material purity, equipment efficiency and conditions - treat them as a starting point, not a standard.<\/p>\n  <p class=\"tc-foot\">Distilling alcohol is regulated or requires a licence in many countries. Check the regulations in your country before use.<\/p>\n  <a class=\"tc-cta\" data-twf-cta=\"kalk-destylacji\" href=\"https:\/\/termometrwifi.com\/en\/product\/equinox-t4-wifi-distillation-thermometer\/\">WiFi distillation thermometer - EQUINOX T-4 \u2192<\/a>\n<\/div>\n\n\n\n<script>\n(function () {\n  var root = document.getElementById('dest-calc');\n  if (!root) return;\n  var $ = function (s, c) { return (c || root).querySelector(s); };\n  var $$ = function (s, c) { return Array.prototype.slice.call((c || root).querySelectorAll(s)); };\n  var T = {\"uwaga\":\"Note\",\"wskazowka\":\"Tip\",\"blg\":\"\u00b0Blg\",\"obj_konc\":\"Final volume\",\"cukier\":\"Sugar\",\"woda\":\"Water\",\"spirytus\":\"Rectified spirit\",\"ilosc_cukru\":\"Sugar\",\"szac_alk\":\"Estimated alcohol\",\"moc_grzalki\":\"Heating element power\",\"czas_rozgrz\":\"Heat-up time\",\"zuzyta\":\"Energy used\",\"cena_energii\":\"Energy price\",\"poprawka\":\"Correction\",\"sg\":\"Specific gravity (SG)\",\"blg_name\":\"Sugar concentration (\u00b0Blg)\",\"blg_formula\":\"\\u003Cb\\u003E\u00b0Blg = sugar \\\/ (sugar + water) \u00d7 100\\u003C\\\/b\\u003E. Estimated alcohol \u2248 \u00b0Blg \u00d7 0.58.\",\"ilosc_wody\":\"Amount of water\",\"stez_nast\":\"Wash concentration\",\"stez_nast_t\":\"sugar {1} kg in {2} kg of solution\",\"obj_nast\":\"Wash volume\",\"po_ferm\":\"approximately, after full fermentation\",\"nastaw_name\":\"Wash planning\",\"nastaw_formula\":\"\\u003Cb\\u003Esugar = volume \u00d7 \u00b0Blg \\\/ 100\\u003C\\\/b\\u003E (with density correction), water = volume \u2212 sugar volume.\",\"obj_doc\":\"Target volume\",\"stez_doc\":\"Target strength\",\"drozdze_turbo\":\"Yeast (turbo)\",\"drozdze_t\":\"or as stated on the pack\",\"wyd_name\":\"Yield (from sugar)\",\"wyd_formula\":\"\\u003Cb\\u003Epure alcohol = sugar \u00d7 0.648 l\\\/kg \u00d7 efficiency\\u003C\\\/b\\u003E. Fermentation stoichiometry: 1 kg of sucrose \u2192 max. 0.511 kg = 0.648 l of 100% ethanol. Distillate = pure alcohol \\\/ strength.\",\"cukier_nast\":\"Sugar in the wash\",\"sprawnosc\":\"Efficiency (ferm. + distillation)\",\"moc_dest\":\"Distillate strength\",\"moc_dest_blad\":\"Distillate strength must be greater than zero.\",\"destylat\":\"Distillate {1}%\",\"destylat_t\":\"at {1}% efficiency (typically 75-90%)\",\"czysty\":\"Pure alcohol (100%)\",\"teoria\":\"Theoretical maximum\",\"teoria_t\":\"of 100% ethanol - not achievable in practice\",\"rozc_name\":\"Dilution with water\",\"rozc_formula\":\"Calculated by ethanol mass from the OIML alcoholometric tables (20 \u00b0C) - \\u003Cb\\u003Ewith contraction\\u003C\\\/b\\u003E. Final volume = alcohol \u00d7 strength \\\/ target. The simple formula \u201cwater = alcohol \u00d7 (strength - target) \\\/ target\u201d gives too little water.\",\"ilosc_alk\":\"Amount of alcohol\",\"stez_akt\":\"Current strength\",\"rozc_blad\":\"Target strength must be \\u003E 0 and lower than the current one.\",\"woda_dol\":\"Water to add\",\"woda_dol_t\":\"with contraction; the simple formula would give {1} ml\",\"mierz_t\":\"measure the strength once it has settled at about 20 \u00b0C\",\"miesz_name\":\"Blending 2 spirits\",\"miesz_formula\":\"Strength and volume calculated by ethanol mass from the OIML tables (20 \u00b0C) - with contraction. Approximately \\u003Cb\\u003Estrength \u2248 (V\u2081\u00d7%\u2081 + V\u2082\u00d7%\u2082) \\\/ (V\u2081 + V\u2082)\\u003C\\\/b\\u003E.\",\"a1_obj\":\"Spirit 1 - volume\",\"a1_stez\":\"Spirit 1 - strength\",\"a2_obj\":\"Spirit 2 - volume\",\"a2_stez\":\"Spirit 2 - strength\",\"wypadkowe\":\"Resulting strength\",\"obj_miesz\":\"Blend volume\",\"wodka_name\":\"Making vodka\",\"wodka_formula\":\"\\u003Cb\\u003Espirit = volume \u00d7 target \\\/ spirit %\\u003C\\\/b\\u003E; water is calculated by mass from the OIML tables (20 \u00b0C) - with contraction, so it is more than \u201cvolume - spirit\u201d.\",\"stez_spir\":\"Spirit strength\",\"wodka_blad\":\"Spirit strength must be \u2265 the target.\",\"wodka_woda_t\":\"with contraction - total {1} ml\",\"wodka_wsk_t\":\"pour the spirit into the water, check the strength at about 20 \u00b0C\",\"grz_formula\":\"\\u003Cb\\u003EP = U\u00b2 \\\/ R\\u003C\\\/b\\u003E (Ohm\u2019s law). Current I = U \\\/ R.\",\"napiecie\":\"Voltage\",\"opor\":\"Heating element resistance\",\"moc_grzania\":\"Heating power\",\"pobor\":\"Current draw\",\"pobor_t\":\"check that the circuit and fuse can handle it\",\"kol_name\":\"Column working power\",\"kol_formula\":\"\\u003Cb\\u003Einner \u00d8 = outer \u00d8 \u2212 2\u00d7wall\\u003C\\\/b\\u003E, cross-section = \u03c0\u00d7(\u00d8\\\/2)\u00b2, flooding point = cross-section \u00d7 load, working power = flooding point \u00d7 0.85.\",\"sr_zewn\":\"Outer diameter\",\"scianka\":\"Wall thickness\",\"obciazenie\":\"Load\",\"sugerowana\":\"Suggested working power\",\"sugerowana_t\":\"85% of the flooding point - a safe margin\",\"prog\":\"Flooding point\",\"przekroj\":\"Column cross-section\",\"sr_wewn_t\":\"inner \u00d8 {1} mm\",\"wyp_name\":\"Packing volume\",\"wyp_formula\":\"\\u003Cb\\u003Evolume = \u03c0\u00d7(\u00d8\\\/2)\u00b2\u00d7height\\u003C\\\/b\\u003E. Inner column volume to fill with packing.\",\"sr_wewn\":\"Inner diameter\",\"wys_wyp\":\"Packing height\",\"wyp_t\":\"inner column volume over this section\",\"rozgrz_formula\":\"\\u003Cb\\u003Etime [h] = volume \u00d7 \u0394T \u00d7 1.163 \\\/ power [W]\\u003C\\\/b\\u003E. 1.163 Wh heats 1 l of water by 1 \u00b0C.\",\"obj_cieczy\":\"Liquid volume\",\"temp_pocz\":\"Starting temperature\",\"temp_doc\":\"Target temperature\",\"przew_czas\":\"Estimated time\",\"rozgrz_t\":\"at 100% efficiency - in practice about 10-20% longer (heat losses)\",\"ant_name\":\"Boiling point vs pressure\",\"ant_formula\":\"Antoine equation (ethanol): \\u003Cb\\u003ET = 1642.89 \\\/ (8.20417 \u2212 log\u2081\u2080 P) \u2212 230.3\\u003C\\\/b\\u003E (P in mmHg). 1013 hPa \u2192 78.3 \u00b0C.\",\"cisnienie\":\"Atmospheric pressure\",\"temp_wrz\":\"Ethanol boiling point\",\"odchylenie\":\"Deviation from standard\",\"odchylenie_t\":\"relative to 78.3 \u00b0C at 1013 hPa\",\"kp_name\":\"Process cost (energy)\",\"kp_formula\":\"\\u003Cb\\u003Eenergy = (P\u2092\u00d7t\u2092 + P\u209a\u00d7t\u209a) \\\/ 1000\\u003C\\\/b\\u003E, cost = energy \u00d7 kWh price.\",\"moc_rozgrz\":\"Heat-up power\",\"moc_proc\":\"Process power\",\"czas_proc\":\"Process time\",\"koszt_en\":\"Energy cost\",\"kw_name\":\"Production cost\",\"kw_formula\":\"\\u003Cb\\u003Ecost = sugar\u00d7price + yeast + electricity\u00d7kWh price\\u003C\\\/b\\u003E, cost\\\/l = cost \\\/ product volume.\",\"cena_cukru\":\"Sugar price\",\"koszt_drozdzy\":\"Yeast cost\",\"zuzycie_pradu\":\"Electricity used\",\"produkt\":\"Finished product\",\"koszt_l\":\"Cost per litre\",\"koszt_l_t\":\"product: {1} l\",\"koszt_calk\":\"Total cost\",\"kor_name\":\"Alcoholmeter correction\",\"kor_formula\":\"An alcoholmeter is calibrated at \\u003Cb\\u003E20 \u00b0C\\u003C\\\/b\\u003E. The calculator works out the true strength from the full ethanol-water density polynomial of the \\u003Cb\\u003EOIML alcoholometric tables\\u003C\\\/b\\u003E - not from an approximation.\",\"odczyt_alk\":\"Alcoholmeter reading\",\"proc_obj\":\"% vol.\",\"temp_cieczy\":\"Liquid temperature\",\"kor_blad\":\"Reading 0-100% and temperature within the table range (\u221220\u202640 \u00b0C).\",\"moc_rzecz\":\"True strength (at 20 \u00b0C)\",\"odczyt_t\":\"reading {1}% at {2} \u00b0C\",\"pp\":\"pp\",\"cieplejsza\":\"liquid warmer than 20 \u00b0C - the alcoholmeter reads high\",\"zimniejsza\":\"liquid colder than 20 \u00b0C - the alcoholmeter reads low\",\"wzorcowa\":\"calibration temperature - no correction\",\"bt_name\":\"Saccharometer correction (Blg)\",\"bt_formula\":\"A saccharometer is also calibrated at \\u003Cb\\u003E20 \u00b0C\\u003C\\\/b\\u003E. Correction by the ASBC hydrometer formula (specific gravity SG \u2194 \u00b0Plato\\\/\u00b0Blg).\",\"odczyt_cukr\":\"Saccharometer reading\",\"temp_probki\":\"Sample temperature\",\"temp_wzorc\":\"Calibration temperature\",\"bt_blad\":\"Sample temperature within 0-60 \u00b0C.\",\"skoryg\":\"Corrected concentration\",\"odczyt_blg_t\":\"reading {1} \u00b0Blg at {2} \u00b0C\",\"z_odczytu\":\"from the reading: {1}\",\"sk_name\":\"Scales: Blg \\\/ Brix \\\/ Oechsle\",\"sk_formula\":\"\\u003Cb\\u003E\u00b0Blg \u2248 \u00b0Plato \u2248 \u00b0Brix\\u003C\\\/b\\u003E - all three are sugar percentage by weight (differences \\u003C0.05\u00b0). Then: SG = 1 + P\\\/(258.6 \u2212 0.87962\u00b7P); \u00b0Oe = (SG\u22121)\u00d71000; \u00b0KMW from the Babo formula (\u00b0Oe = (0.022\u00b7KMW + 4.54)\u00b7KMW); \u00b0NM from \u00b0Oe = 3.845\u00b7\u00b0NM + 10.8; \u00b0B\u00e9 = 145 \u2212 145\\\/SG.\",\"stez_cukru\":\"Sugar concentration\",\"blg_brix\":\"\u00b0Blg \\\/ \u00b0Brix\",\"sk_blad\":\"Enter a value within 0-40 \u00b0Blg.\",\"sk_brix_t\":\"Blg, Plato and Brix are in practice the same scale - sugar percentage by weight\",\"sk_oe_t\":\"winemaking: Germany, Switzerland, Luxembourg\",\"sk_kmw_t\":\"Austria, Hungary, Slovakia, Italy (Babo)\",\"sk_nm_t\":\"Czechia and Slovakia - kg of sugar per 100 l of must\",\"sk_be_t\":\"France, Spain, Australia\",\"tab_nastaw\":\"Wash\",\"tab_rozc\":\"Dilution\",\"tab_pomiar\":\"Measurement and corrections\",\"tab_kolumna\":\"Column and power\",\"tab_koszty\":\"Costs\"};   \/\/ napisy w j\u0119zyku witryny (PHP, domena twf)\n  var W = {\"waluta\":\"z\u0142\",\"kwh\":1,\"cukier\":3.5,\"drozdze\":15};   \/\/ waluta witryny i domy\u015blne ceny w niej\n  var tt = function (s) { var a = arguments; return s.replace(\/\\{(\\d)\\}\/g, function (m, i) { return a[i]; }); };\n  var jezyk = document.documentElement.lang || 'pl-PL';\n  var fmt = function (n, d) {\n    if (n === null || n === undefined || !isFinite(n)) return '-';\n    return (Math.round(n * Math.pow(10, d)) \/ Math.pow(10, d)).toLocaleString(jezyk, { maximumFractionDigits: d });\n  };\n  var hm = function (th) {\n    if (!isFinite(th) || th < 0) return '-';\n    var h = Math.floor(th), m = Math.round((th - h) * 60);\n    if (m === 60) { h += 1; m = 0; }\n    return h > 0 ? (h + ' h ' + (m < 10 ? '0' + m : m) + ' min') : (m + ' min');\n  };\n  var log10 = function (x) { return Math.log(x) \/ Math.LN10; };\n\n  \/\/ \u2500\u2500 G\u0119sto\u015b\u0107 mieszaniny etanol-woda: wielomian OIML R22 (Dz.U. 2003 nr 38 poz. 331, za\u0142. 1) \u2500\u2500\n  \/\/ q = u\u0142amek masowy etanolu (0..1), t = temperatura [\u00b0C]. Wynik w kg\/m\u00b3.\n  var OIML_A = [998.20123, -192.9769495, 389.1238958, -1668.103923, 13522.15441, -88292.78388,\n    306287.4042, -613838.1234, 747017.2998, -547846.1354, 223446.0334, -39032.85426];\n  var OIML_B = [-2.0618513e-1, -5.2682542e-3, 3.6130013e-5, -3.8957702e-7, 7.1693540e-9, -9.9739231e-11];\n  var OIML_C = [\n    [1.693443461530087e-1, -1.046914743455169e1, 7.196353469546523e1, -7.047478054272792e2, 3.924090430035045e3,\n     -1.210164659068747e4, 2.248646550400788e4, -2.605562982188164e4, 1.852373922069467e4, -7.420201433430137e3, 1.285617841998974e3],\n    [-1.193013005057010e-2, 2.517399633803461e-1, -2.170575700536993, 1.353034988843029e1, -5.029988758547014e1,\n     1.096355666577570e2, -1.422753946421155e2, 1.080435942856230e2, -4.414153236817392e1, 7.442971530188783],\n    [-6.802995733503803e-4, 1.876837790289664e-2, -2.002561813734156e-1, 1.022992966719220, -2.895696483903638,\n     4.810060584300675, -4.672147440794683, 2.458043105903461, -5.411227621436812e-1],\n    [4.075376675622027e-6, -8.763058573471110e-6],\n    [6.515031360099368e-6, -1.515784836987210e-6]\n  ];\n  function etRho(q, t) {\n    var r = 0, k, i;\n    for (k = 0; k < 12; k++) r += OIML_A[k] * Math.pow(q, k);\n    var dt = t - 20;\n    for (k = 0; k < 6; k++) r += OIML_B[k] * Math.pow(dt, k + 1);\n    for (i = 0; i < 5; i++) for (k = 0; k < OIML_C[i].length; k++) r += OIML_C[i][k] * Math.pow(q, k + 1) * Math.pow(dt, i + 1);\n    return r;\n  }\n  var ET_RHO20 = etRho(1, 20); \/\/ ~789.24\n  function abvFromQ(q) { return q * etRho(q, 20) \/ ET_RHO20 * 100; }\n  function qFromAbv(abv) {\n    var lo = 0, hi = 1, m, i;\n    for (i = 0; i < 60; i++) { m = (lo + hi) \/ 2; if (abvFromQ(m) < abv) lo = m; else hi = m; }\n    return (lo + hi) \/ 2;\n  }\n  \/\/ \u2500\u2500 Rozcie\u0144czanie z kontrakcj\u0105: liczymy przez MAS\u0118 etanolu (tablice OIML, 20 \u00b0C), nie przez proste\n  \/\/ proporcje obj\u0119to\u015bci. 1 l spirytusu 95% \u2192 40% potrzebuje ok. 1443 ml wody (wz\u00f3r szkolny: 1375 ml \u2192 ~41%).\n  var WODA_RHO20 = OIML_A[0]; \/\/ g\u0119sto\u015b\u0107 wody w 20 \u00b0C [kg\/m\u00b3 = g\/l]\n  function roztwor(ml, abv) { \/\/ {m: masa roztworu [g], e: masa etanolu [g]}\n    var q = qFromAbv(abv), m = ml * etRho(q, 20) \/ 1000;\n    return { m: m, e: m * q };\n  }\n  function mlZMasy(g, abv) { return g \/ (etRho(qFromAbv(abv), 20) \/ 1000); }\n  function qFromRhoAtT(target, t) {\n    var lo = 0, hi = 1, m, i; \/\/ g\u0119sto\u015b\u0107 maleje z q\n    for (i = 0; i < 60; i++) { m = (lo + hi) \/ 2; if (etRho(m, t) > target) lo = m; else hi = m; }\n    return (lo + hi) \/ 2;\n  }\n  \/\/ Korekta hydrometru piwowarskiego\/cukromierza (wz\u00f3r ASBC, T w \u00b0F)\n  function hydroF(tF) { return 1.00130346 - 1.34722124e-4 * tF + 2.04052596e-6 * tF * tF - 2.32820948e-9 * tF * tF * tF; }\n  function c2f(c) { return c * 9 \/ 5 + 32; }\n  function sgFromPlato(p) { return 1 + p \/ (258.6 - 0.87962 * p); }\n  function platoFromSg(sg) { return -616.868 + 1111.14 * sg - 630.272 * sg * sg + 135.997 * sg * sg * sg; }\n\n  \/\/ \u2500\u2500 Definicje 16 kalkulator\u00f3w \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var CALCS = {\n    blg: {\n      tab: 'nastaw', name: T.blg_name,\n      formula: T.blg_formula,\n      fields: [\n        { id: 'cukier', label: T.ilosc_cukru, unit: 'kg', val: 6, step: 0.1 },\n        { id: 'woda', label: T.ilosc_wody, unit: 'l', val: 25, step: 0.5 }\n      ],\n      compute: function (v) {\n        var total = v.cukier + v.woda;           \/\/ woda 1 l \u2248 1 kg\n        var blg = total > 0 ? v.cukier \/ total * 100 : 0;\n        var obj = v.woda + v.cukier * 0.625;      \/\/ cukier zajmuje ~0,625 l\/kg\n        var alk = blg * 0.58;\n        return [\n          { k: 'hero', cap: T.stez_nast, num: fmt(blg, 1) + ' ' + T.blg, sub: tt(T.stez_nast_t, fmt(v.cukier, 1), fmt(total, 1)) },\n          { k: 'plain', cap: T.obj_nast, num: fmt(obj, 1) + ' l' },\n          { k: 'plain', cap: T.szac_alk, num: '~' + fmt(alk, 1) + ' %', sub: T.po_ferm }\n        ];\n      }\n    },\n    nastaw: {\n      tab: 'nastaw', name: T.nastaw_name,\n      formula: T.nastaw_formula,\n      fields: [\n        { id: 'obj', label: T.obj_doc, unit: 'l', val: 30, step: 1 },\n        { id: 'blg', label: T.stez_doc, unit: T.blg, val: 20, step: 0.5 }\n      ],\n      compute: function (v) {\n        var rho = 1 + 0.004 * v.blg;               \/\/ przybli\u017cona g\u0119sto\u015b\u0107 roztworu cukru\n        var cukier = v.obj * v.blg \/ 100 * rho;    \/\/ kg\n        var woda = v.obj - cukier * 0.625;         \/\/ l\n        var drozdze = v.obj \/ 25 * 120;            \/\/ g dro\u017cd\u017cy turbo (~120 g \/ 25 l)\n        var alk = v.blg * 0.58;\n        return [\n          { k: 'hero', cap: T.cukier, num: fmt(cukier, 2) + ' kg' },\n          { k: 'plain', cap: T.woda, num: fmt(woda, 1) + ' l' },\n          { k: 'plain', cap: T.drozdze_turbo, num: '~' + fmt(drozdze, 0) + ' g', sub: T.drozdze_t },\n          { k: 'plain', cap: T.szac_alk, num: '~' + fmt(alk, 1) + ' %' }\n        ];\n      }\n    },\n    wydajnosc: {\n      tab: 'nastaw', name: T.wyd_name,\n      formula: T.wyd_formula,\n      fields: [\n        { id: 'cukier', label: T.cukier_nast, unit: 'kg', val: 6, step: 0.5 },\n        { id: 'spr', label: T.sprawnosc, unit: '%', val: 85, step: 1 },\n        { id: 'moc', label: T.moc_dest, unit: '%', val: 50, step: 1 }\n      ],\n      compute: function (v) {\n        if (v.moc <= 0) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.moc_dest_blad }];\n        }\n        var teoria = v.cukier * 0.648;\n        var czysty = teoria * Math.min(v.spr, 100) \/ 100;\n        var dest = czysty \/ (v.moc \/ 100);\n        return [\n          { k: 'hero', cap: tt(T.destylat, fmt(v.moc, 0)), num: fmt(dest, 2) + ' l', sub: tt(T.destylat_t, fmt(v.spr, 0)) },\n          { k: 'plain', cap: T.czysty, num: fmt(czysty, 2) + ' l' },\n          { k: 'plain', cap: T.teoria, num: fmt(teoria, 2) + ' l', sub: T.teoria_t }\n        ];\n      }\n    },\n    rozcien: {\n      tab: 'rozc', name: T.rozc_name,\n      formula: T.rozc_formula,\n      fields: [\n        { id: 'alk', label: T.ilosc_alk, unit: 'ml', val: 1000, step: 10 },\n        { id: 'cur', label: T.stez_akt, unit: '%', val: 70, step: 0.5 },\n        { id: 'tar', label: T.stez_doc, unit: '%', val: 40, step: 0.5 }\n      ],\n      compute: function (v) {\n        if (v.tar <= 0 || v.tar > v.cur) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.rozc_blad }];\n        }\n        var r = roztwor(v.alk, v.cur);\n        var mCel = r.e \/ qFromAbv(v.tar);             \/\/ masa gotowego roztworu o docelowej mocy\n        var woda = (mCel - r.m) \/ (WODA_RHO20 \/ 1000); \/\/ brakuj\u0105ca masa = woda\n        var kon = v.alk * v.cur \/ v.tar;\n        var prosty = v.alk * (v.cur - v.tar) \/ v.tar;\n        return [\n          { k: 'hero', cap: T.woda_dol, num: fmt(woda, 0) + ' ml', sub: tt(T.woda_dol_t, fmt(prosty, 0)) },\n          { k: 'plain', cap: T.obj_konc, num: fmt(kon, 0) + ' ml', sub: T.mierz_t }\n        ];\n      }\n    },\n    miesz: {\n      tab: 'rozc', name: T.miesz_name,\n      formula: T.miesz_formula,\n      fields: [\n        { id: 'v1', label: T.a1_obj, unit: 'ml', val: 500, step: 10 },\n        { id: 'p1', label: T.a1_stez, unit: '%', val: 70, step: 0.5 },\n        { id: 'v2', label: T.a2_obj, unit: 'ml', val: 500, step: 10 },\n        { id: 'p2', label: T.a2_stez, unit: '%', val: 40, step: 0.5 }\n      ],\n      compute: function (v) {\n        var a = roztwor(v.v1, v.p1), b = roztwor(v.v2, v.p2);\n        var m = a.m + b.m;\n        var moc = m > 0 ? abvFromQ((a.e + b.e) \/ m) : 0;\n        var vol = m > 0 ? mlZMasy(m, moc) : 0;\n        return [\n          { k: 'hero', cap: T.wypadkowe, num: fmt(moc, 1) + ' %' },\n          { k: 'plain', cap: T.obj_miesz, num: fmt(vol, 0) + ' ml' }\n        ];\n      }\n    },\n    wodka: {\n      tab: 'rozc', name: T.wodka_name,\n      formula: T.wodka_formula,\n      fields: [\n        { id: 'obj', label: T.obj_doc, unit: 'ml', val: 500, step: 10 },\n        { id: 'tar', label: T.stez_doc, unit: '%', val: 40, step: 0.5 },\n        { id: 'spir', label: T.stez_spir, unit: '%', val: 95, step: 0.5 }\n      ],\n      compute: function (v) {\n        if (v.spir <= 0 || v.tar > v.spir) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.wodka_blad }];\n        }\n        var spirytus = v.obj * v.tar \/ v.spir;\n        var gotowy = roztwor(v.obj, v.tar).m;          \/\/ masa gotowej w\u00f3dki\n        var woda = (gotowy - roztwor(spirytus, v.spir).m) \/ (WODA_RHO20 \/ 1000);\n        return [\n          { k: 'hero', cap: T.spirytus, num: fmt(spirytus, 0) + ' ml' },\n          { k: 'blue', cap: T.woda, num: fmt(woda, 0) + ' ml', sub: tt(T.wodka_woda_t, fmt(v.obj, 0)) },\n          { k: 'plain', cap: T.wskazowka, num: fmt(v.tar, 0) + ' %', sub: T.wodka_wsk_t }\n        ];\n      }\n    },\n    grzalka: {\n      tab: 'kolumna', name: T.moc_grzalki,\n      formula: T.grz_formula,\n      fields: [\n        { id: 'u', label: T.napiecie, unit: 'V', val: 230, step: 1 },\n        { id: 'r', label: T.opor, unit: '\u03a9', val: 26, step: 0.5 }\n      ],\n      compute: function (v) {\n        var p = v.r > 0 ? v.u * v.u \/ v.r : 0;\n        var i = v.r > 0 ? v.u \/ v.r : 0;\n        return [\n          { k: 'hero', cap: T.moc_grzania, num: fmt(p, 0) + ' W' },\n          { k: 'plain', cap: T.pobor, num: fmt(i, 1) + ' A', sub: T.pobor_t }\n        ];\n      }\n    },\n    kolumna: {\n      tab: 'kolumna', name: T.kol_name,\n      formula: T.kol_formula,\n      fields: [\n        { id: 'dz', label: T.sr_zewn, unit: 'mm', val: 51, step: 1 },\n        { id: 'g', label: T.scianka, unit: 'mm', val: 1.5, step: 0.1 },\n        { id: 'obc', label: T.obciazenie, unit: 'W\/cm\u00b2', val: 110, step: 5 }\n      ],\n      compute: function (v) {\n        var dw = v.dz - 2 * v.g;                       \/\/ mm\n        var pole = Math.PI * Math.pow((dw \/ 10) \/ 2, 2); \/\/ cm\u00b2\n        var prog = pole * v.obc;                        \/\/ W\n        var sug = prog * 0.85;                          \/\/ W\n        return [\n          { k: 'hero', cap: T.sugerowana, num: fmt(sug, 0) + ' W', sub: T.sugerowana_t },\n          { k: 'plain', cap: T.prog, num: fmt(prog, 0) + ' W' },\n          { k: 'plain', cap: T.przekroj, num: fmt(pole, 1) + ' cm\u00b2', sub: tt(T.sr_wewn_t, fmt(dw, 1)) }\n        ];\n      }\n    },\n    sprezynki: {\n      tab: 'kolumna', name: T.wyp_name,\n      formula: T.wyp_formula,\n      fields: [\n        { id: 'dw', label: T.sr_wewn, unit: 'mm', val: 50, step: 1 },\n        { id: 'h', label: T.wys_wyp, unit: 'cm', val: 50, step: 1 }\n      ],\n      compute: function (v) {\n        var pole = Math.PI * Math.pow((v.dw \/ 10) \/ 2, 2); \/\/ cm\u00b2\n        var vol = pole * v.h \/ 1000;                       \/\/ l\n        return [\n          { k: 'hero', cap: T.wyp_name, num: fmt(vol, 2) + ' l', sub: T.wyp_t }\n        ];\n      }\n    },\n    rozgrzew: {\n      tab: 'kolumna', name: T.czas_rozgrz,\n      formula: T.rozgrz_formula,\n      fields: [\n        { id: 'p', label: T.moc_grzalki, unit: 'W', val: 2000, step: 100 },\n        { id: 'vol', label: T.obj_cieczy, unit: 'l', val: 30, step: 1 },\n        { id: 't0', label: T.temp_pocz, unit: '\u00b0C', val: 20, step: 1 },\n        { id: 't1', label: T.temp_doc, unit: '\u00b0C', val: 90, step: 1 }\n      ],\n      compute: function (v) {\n        var dT = v.t1 - v.t0;\n        var wh = v.vol * dT * 1.163;              \/\/ Wh (dla 100% sprawno\u015bci)\n        var th = v.p > 0 ? wh \/ v.p : 0;          \/\/ h\n        return [\n          { k: 'hero', cap: T.przew_czas, num: hm(th) },\n          { k: 'plain', cap: T.zuzyta, num: fmt(wh \/ 1000, 2) + ' kWh', sub: T.rozgrz_t }\n        ];\n      }\n    },\n    antoine: {\n      tab: 'kolumna', name: T.ant_name,\n      formula: T.ant_formula,\n      fields: [\n        { id: 'hpa', label: T.cisnienie, unit: 'hPa', val: 1013, step: 1 }\n      ],\n      compute: function (v) {\n        var mmHg = v.hpa * 0.7500617;\n        var t = 1642.89 \/ (8.20417 - log10(mmHg)) - 230.300;\n        var d = t - 78.3;\n        return [\n          { k: 'hero', cap: T.temp_wrz, num: fmt(t, 1) + ' \u00b0C' },\n          { k: 'plain', cap: T.odchylenie, num: (d >= 0 ? '+' : '') + fmt(d, 1) + ' \u00b0C', sub: T.odchylenie_t }\n        ];\n      }\n    },\n    kosztproc: {\n      tab: 'koszty', name: T.kp_name,\n      formula: T.kp_formula,\n      fields: [\n        { id: 'pr', label: T.moc_rozgrz, unit: 'W', val: 2000, step: 100 },\n        { id: 'tr', label: T.czas_rozgrz, unit: 'h', val: 1, step: 0.25 },\n        { id: 'pp', label: T.moc_proc, unit: 'W', val: 1500, step: 100 },\n        { id: 'tp', label: T.czas_proc, unit: 'h', val: 4, step: 0.25 },\n        { id: 'cena', label: T.cena_energii, unit: W.waluta + '\/kWh', val: W.kwh, step: 0.05 }\n      ],\n      compute: function (v) {\n        var kwh = (v.pr * v.tr + v.pp * v.tp) \/ 1000;\n        var koszt = kwh * v.cena;\n        return [\n          { k: 'hero', cap: T.koszt_en, num: fmt(koszt, 2) + ' ' + W.waluta },\n          { k: 'plain', cap: T.zuzyta, num: fmt(kwh, 2) + ' kWh' }\n        ];\n      }\n    },\n    kosztwytw: {\n      tab: 'koszty', name: T.kw_name,\n      formula: T.kw_formula,\n      fields: [\n        { id: 'cukier', label: T.ilosc_cukru, unit: 'kg', val: 6, step: 0.1 },\n        { id: 'cena', label: T.cena_cukru, unit: W.waluta + '\/kg', val: W.cukier, step: 0.1 },\n        { id: 'drozdze', label: T.koszt_drozdzy, unit: W.waluta, val: W.drozdze, step: 1 },\n        { id: 'prad', label: T.zuzycie_pradu, unit: 'kWh', val: 12, step: 0.5 },\n        { id: 'cenakwh', label: T.cena_energii, unit: W.waluta + '\/kWh', val: W.kwh, step: 0.05 },\n        { id: 'produkt', label: T.produkt, unit: 'l', val: 4, step: 0.1 }\n      ],\n      compute: function (v) {\n        var koszt = v.cukier * v.cena + v.drozdze + v.prad * v.cenakwh;\n        var kl = v.produkt > 0 ? koszt \/ v.produkt : 0;\n        return [\n          { k: 'hero', cap: T.koszt_l, num: fmt(kl, 2) + ' ' + W.waluta + '\/l', sub: tt(T.koszt_l_t, fmt(v.produkt, 1)) },\n          { k: 'plain', cap: T.koszt_calk, num: fmt(koszt, 2) + ' ' + W.waluta }\n        ];\n      }\n    },\n    korekta: {\n      tab: 'pomiar', name: T.kor_name,\n      formula: T.kor_formula,\n      fields: [\n        { id: 'odczyt', label: T.odczyt_alk, unit: T.proc_obj, val: 50, step: 0.1 },\n        { id: 'temp', label: T.temp_cieczy, unit: '\u00b0C', val: 25, step: 0.5 }\n      ],\n      compute: function (v) {\n        if (v.odczyt < 0 || v.odczyt > 100 || v.temp < -20 || v.temp > 40) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.kor_blad }];\n        }\n        var target = etRho(qFromAbv(v.odczyt), 20);\n        var qTrue = qFromRhoAtT(target, v.temp);\n        var moc = abvFromQ(qTrue);\n        var d = moc - v.odczyt;\n        return [\n          { k: 'hero', cap: T.moc_rzecz, num: fmt(moc, 1) + ' %', sub: tt(T.odczyt_t, fmt(v.odczyt, 1), fmt(v.temp, 1)) },\n          { k: 'plain', cap: T.poprawka, num: (d >= 0 ? '+' : '') + fmt(d, 1) + ' ' + T.pp, sub: v.temp > 20 ? T.cieplejsza : (v.temp < 20 ? T.zimniejsza : T.wzorcowa) }\n        ];\n      }\n    },\n    blgtemp: {\n      tab: 'pomiar', name: T.bt_name,\n      formula: T.bt_formula,\n      fields: [\n        { id: 'odczyt', label: T.odczyt_cukr, unit: T.blg, val: 20, step: 0.1 },\n        { id: 'temp', label: T.temp_probki, unit: '\u00b0C', val: 25, step: 0.5 },\n        { id: 'kal', label: T.temp_wzorc, unit: '\u00b0C', val: 20, step: 0.5 }\n      ],\n      compute: function (v) {\n        if (v.temp < 0 || v.temp > 60) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.bt_blad }];\n        }\n        var sg = sgFromPlato(v.odczyt);\n        var sgKor = sg * hydroF(c2f(v.temp)) \/ hydroF(c2f(v.kal));\n        var blg = platoFromSg(sgKor);\n        var d = blg - v.odczyt;\n        return [\n          { k: 'hero', cap: T.skoryg, num: fmt(blg, 1) + ' ' + T.blg, sub: tt(T.odczyt_blg_t, fmt(v.odczyt, 1), fmt(v.temp, 1)) },\n          { k: 'plain', cap: T.poprawka, num: (d >= 0 ? '+' : '') + fmt(d, 2) + ' ' + T.blg },\n          { k: 'plain', cap: T.sg, num: fmt(sgKor, 3), sub: tt(T.z_odczytu, fmt(sg, 3)) }\n        ];\n      }\n    },\n    skale: {\n      tab: 'pomiar', name: T.sk_name,\n      formula: T.sk_formula,\n      fields: [\n        { id: 'blg', label: T.stez_cukru, unit: T.blg_brix, val: 20, step: 0.1 }\n      ],\n      compute: function (v) {\n        if (v.blg < 0 || v.blg > 40) {\n          return [{ k: 'plain', cap: T.uwaga, num: '-', sub: T.sk_blad }];\n        }\n        var sg = sgFromPlato(v.blg);\n        var oe = (sg - 1) * 1000;\n        var kmw = (-4.54 + Math.sqrt(4.54 * 4.54 + 0.088 * oe)) \/ 0.044;\n        var nm = (oe - 10.8) \/ 3.845;\n        var be = 145 - 145 \/ sg;\n        return [\n          { k: 'hero', cap: '\u00b0Brix \/ \u00b0Plato', num: fmt(v.blg, 1) + ' \u00b0', sub: T.sk_brix_t },\n          { k: 'plain', cap: T.sg, num: fmt(sg, 3) },\n          { k: 'plain', cap: '\u00b0Oechsle', num: fmt(oe, 0) + ' \u00b0Oe', sub: T.sk_oe_t },\n          { k: 'plain', cap: '\u00b0KMW (Babo)', num: fmt(kmw, 1) + ' \u00b0', sub: T.sk_kmw_t },\n          { k: 'plain', cap: '\u00b0NM (mo\u0161tom\u011br)', num: nm > 0 ? fmt(nm, 1) + ' \u00b0' : '-', sub: T.sk_nm_t },\n          { k: 'plain', cap: '\u00b0Baum\u00e9', num: fmt(be, 1) + ' \u00b0B\u00e9', sub: T.sk_be_t }\n        ];\n      }\n    }\n  };\n\n  var ORDER = {\n    nastaw: ['blg', 'nastaw', 'wydajnosc'],\n    rozc: ['rozcien', 'miesz', 'wodka'],\n    pomiar: ['korekta', 'blgtemp', 'skale'],\n    kolumna: ['grzalka', 'kolumna', 'sprezynki', 'rozgrzew', 'antoine'],\n    koszty: ['kosztproc', 'kosztwytw']\n  };\n  var TAB_LABELS = { nastaw: T.tab_nastaw, rozc: T.tab_rozc, pomiar: T.tab_pomiar, kolumna: T.tab_kolumna, koszty: T.tab_koszty };\n  var TAB_KEYS = ['nastaw', 'rozc', 'pomiar', 'kolumna', 'koszty'];\n\n  \/\/ Filtr [only=\"...\"]: spoke pokazuje tylko wybrane kalkulatory, hub (puste) wszystkie.\n  var onlyRaw = (root.getAttribute('data-only') || '').split(',').map(function (s) { return s.trim(); }).filter(Boolean);\n  var allow = onlyRaw.length ? onlyRaw.filter(function (id) { return CALCS[id]; }) : null;\n\n  \/\/ Widoczne zak\u0142adki = tylko te, kt\u00f3re maj\u0105 dozwolone kalkulatory.\n  var TABSF = [];\n  TAB_KEYS.forEach(function (k) {\n    var ids = ORDER[k].filter(function (id) { return !allow || allow.indexOf(id) >= 0; });\n    if (ids.length) TABSF.push({ k: k, ids: ids });\n  });\n  if (!TABSF.length) { TABSF.push({ k: 'nastaw', ids: ['blg'] }); }\n\n  var S = { tab: TABSF[0].k, calc: TABSF[0].ids[0], vals: {} };\n\n  \/\/ Zainicjuj warto\u015bci domy\u015blne dla wszystkich kalkulator\u00f3w\n  Object.keys(CALCS).forEach(function (id) {\n    S.vals[id] = {};\n    CALCS[id].fields.forEach(function (f) { S.vals[id][f.id] = f.val; });\n  });\n\n  function tabIds(k) {\n    for (var i = 0; i < TABSF.length; i++) { if (TABSF[i].k === k) return TABSF[i].ids; }\n    return [];\n  }\n\n  function renderTabs() {\n    var bar = $('.tc-tabs');\n    if (TABSF.length <= 1) { bar.style.display = 'none'; bar.innerHTML = ''; return; }\n    bar.style.display = '';\n    bar.innerHTML = TABSF.map(function (t) {\n      return '<button class=\"tc-tab' + (t.k === S.tab ? ' is-active' : '') + '\" data-tab=\"' + t.k + '\" role=\"tab\" aria-selected=\"' + (t.k === S.tab) + '\">' + TAB_LABELS[t.k] + '<\/button>';\n    }).join('');\n  }\n\n  function renderSubnav() {\n    var ids = tabIds(S.tab), sn = $('#dc-subnav');\n    if (ids.length <= 1) { sn.style.display = 'none'; sn.innerHTML = ''; return; }\n    sn.style.display = '';\n    sn.innerHTML = ids.map(function (id) {\n      return '<button class=\"tc-pill' + (id === S.calc ? ' is-active' : '') + '\" data-calc=\"' + id + '\" role=\"tab\" aria-selected=\"' + (id === S.calc) + '\">' + CALCS[id].name + '<\/button>';\n    }).join('');\n  }\n\n  function renderPanel() {\n    var c = CALCS[S.calc], vals = S.vals[S.calc];\n    $('#dc-cap').textContent = c.name;\n    $('#dc-fields').innerHTML = c.fields.map(function (f) {\n      return '<div class=\"tc-field\"><label class=\"tc-lbl\" for=\"dc-' + f.id + '\">' + f.label + '<\/label>'\n        + '<div class=\"tc-inw\"><input id=\"dc-' + f.id + '\" type=\"number\" inputmode=\"decimal\" data-id=\"' + f.id + '\" value=\"' + vals[f.id] + '\" step=\"' + f.step + '\" min=\"0\"><span>' + f.unit + '<\/span><\/div><\/div>';\n    }).join('');\n    $('#dc-formula').innerHTML = c.formula;\n  }\n\n  function renderResults() {\n    var c = CALCS[S.calc];\n    var cards = c.compute(S.vals[S.calc]);\n    $('#dc-results').innerHTML = cards.map(function (card) {\n      var numCls = card.k === 'hero' ? 'tc-num' : 'tc-num tc-num--sm';\n      return '<div class=\"tc-card tc-card--' + card.k + '\"><div class=\"tc-cap\">' + card.cap + '<\/div>'\n        + '<div class=\"' + numCls + '\">' + card.num + '<\/div>'\n        + (card.sub ? '<div class=\"tc-sub\">' + card.sub + '<\/div>' : '') + '<\/div>';\n    }).join('');\n  }\n\n  function bindFields() {\n    $$('#dc-fields input').forEach(function (inp) {\n      inp.addEventListener('input', function () {\n        var val = parseFloat(inp.value);\n        S.vals[S.calc][inp.getAttribute('data-id')] = isFinite(val) ? val : 0;\n        renderResults();\n      });\n    });\n  }\n\n  function selectCalc(id) {\n    S.calc = id;\n    renderSubnav();\n    renderPanel();\n    bindFields();\n    renderResults();\n  }\n\n  function selectTab(tab) {\n    S.tab = tab;\n    renderTabs();\n    selectCalc(tabIds(tab)[0]);\n  }\n\n  $('.tc-tabs').addEventListener('click', function (e) {\n    var b = e.target.closest('.tc-tab');\n    if (b) selectTab(b.getAttribute('data-tab'));\n  });\n  $('#dc-subnav').addEventListener('click', function (e) {\n    var b = e.target.closest('.tc-pill');\n    if (b) selectCalc(b.getAttribute('data-calc'));\n  });\n\n  renderTabs();\n  selectCalc(S.calc);\n})();\n<\/script>\n<h2>Why temperature fools an alcoholmeter<\/h2>\n<p>An alcoholmeter is a hydrometer - it measures the density of the liquid, and the scale converts it into % by volume <strong>assuming the liquid is at 20 \u00b0C<\/strong>. A warm solution expands and has a lower density, so the float sinks deeper and \u201csees\u201d more alcohol than there really is. A cold one - the opposite. Ethanol expands ~5\u00d7 more than water, so the error grows with strength and with every degree away from 20 \u00b0C.<\/p>\n<h2>Correction table (based on the OIML tables)<\/h2>\n<p>Values you need to <strong>add to<\/strong> (cold liquid) or <strong>subtract from<\/strong> (warm liquid) the reading:<\/p>\n<div class=\"twf-tabela\"><table>\n<thead>\n<tr>\n<th>Reading<\/th>\n<th>10 \u00b0C<\/th>\n<th>15 \u00b0C<\/th>\n<th>25 \u00b0C<\/th>\n<th>30 \u00b0C<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>40%<\/td>\n<td>+4.0<\/td>\n<td>+2.1<\/td>\n<td>\u22122.1<\/td>\n<td>\u22124.1<\/td>\n<\/tr>\n<tr>\n<td>50%<\/td>\n<td>+3.6<\/td>\n<td>+1.9<\/td>\n<td>\u22121.9<\/td>\n<td>\u22123.8<\/td>\n<\/tr>\n<tr>\n<td>60%<\/td>\n<td>+3.4<\/td>\n<td>+1.8<\/td>\n<td>\u22121.8<\/td>\n<td>\u22123.5<\/td>\n<\/tr>\n<tr>\n<td>70%<\/td>\n<td>+3.1<\/td>\n<td>+1.7<\/td>\n<td>\u22121.7<\/td>\n<td>\u22123.3<\/td>\n<\/tr>\n<tr>\n<td>80%<\/td>\n<td>+2.8<\/td>\n<td>+1.5<\/td>\n<td>\u22121.5<\/td>\n<td>\u22123.0<\/td>\n<\/tr>\n<tr>\n<td>90%<\/td>\n<td>+2.4<\/td>\n<td>+1.3<\/td>\n<td>\u22121.3<\/td>\n<td>\u22122.6<\/td>\n<\/tr>\n<tr>\n<td>96%<\/td>\n<td>+1.9<\/td>\n<td>+1.0<\/td>\n<td>\u22121.1<\/td>\n<td>\u22122.1<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>Example: distillate straight from the cooler is at 30 \u00b0C, and the alcoholmeter shows 70%. The true strength is about <strong>66.7%<\/strong> - a bigger difference than many a \u201cmargin\u201d you add when diluting.<\/p>\n<h2>Saccharometer correction<\/h2>\n<p>The same problem affects measuring a wash: a \u00b0Blg saccharometer is also calibrated at 20 \u00b0C. A freshly made, lukewarm wash can read 0.5-1 \u00b0Blg high. The second tab of the calculator corrects the \u00b0Blg reading by the ASBC hydrometer formula - useful for <a href=\"https:\/\/termometrwifi.com\/en\/blg-calculator\/\">wash planning<\/a>.<\/p>\n<h2>How to measure correctly - 4 rules<\/h2>\n<ol>\n<li><strong>Mix and wait<\/strong> - the sample must be at a uniform temperature; measure it with a thermometer, not \u201cby touch\u201d.<\/li>\n<li><strong>A clean cylinder, no foam<\/strong> - bubbles on the float can distort the reading more than temperature.<\/li>\n<li><strong>Read at eye level<\/strong>, at the bottom of the meniscus.<\/li>\n<li><strong>Ideally cool the sample to ~20 \u00b0C<\/strong> - then no correction is needed at all; keep the calculator for when you do not want to wait.<\/li>\n<\/ol>\n<h2>Frequently asked questions<\/h2>\n<p><strong>The alcoholmeter showed 93% at 30 \u00b0C - how much do I really have?<\/strong><br \/>\nAbout 90.9%. At high concentrations every degree above 20 \u00b0C means ~0.25 points too high.<\/p>\n<p><strong>Can I use the simplified \u201c0.3%\/\u00b0C\u201d rule?<\/strong><br \/>\nFor a quick estimate - yes, around 40-70% it works reasonably. But the correction depends on both strength and temperature (non-linearly), which is why the calculator works from the full tables rather than a single constant.<\/p>\n<p><strong>Where do the formulas come from?<\/strong><br \/>\nFrom the international density polynomial for ethanol-water mixtures (OIML R22), the basis of the standard alcoholometric tables. The calculator solves this polynomial exactly for your reading and temperature.<\/p>\n<h2>Measured? Now calculate the rest<\/h2>\n<p>Now that you know the true strength, the <a href=\"https:\/\/termometrwifi.com\/en\/alcohol-dilution-calculator\/\">dilution calculator<\/a> works out the water to get to 40%, and the <a href=\"https:\/\/termometrwifi.com\/en\/distillation-calculator\/\">full distillation calculator<\/a> covers the wash, the column and the costs.<\/p>\n<p><!--twf-faq:start--><\/p>\n<h2>More questions<\/h2>\n<div class=\"twf-faq\">\n<h3>At what temperature should I use an alcoholmeter?<\/h3>\n<p>An alcoholmeter is calibrated at 20 \u00b0C - the reference temperature under OIML standards. At this temperature the reading is direct, with no conversion. The acceptable range is 15-25 \u00b0C; outside it the error grows quickly and a correction from the OIML tables is needed. Before measuring, let the sample temperature even out by waiting 10-20 minutes in stable surroundings.<\/p>\n<h3>At what temperature does alcohol lose strength?<\/h3>\n<p>Alcohol does not lose strength during storage under normal conditions - only its density changes with temperature. At higher temperatures the liquid expands and an alcoholmeter shows an apparently different concentration. A real drop in strength can happen when a liqueur or distillate is repeatedly heated uncovered - ethanol boils at 78.4 \u00b0C and gradually evaporates.<\/p>\n<h3>What is the correction scale for an alcoholmeter?<\/h3>\n<p>The correction scale depends on the alcohol concentration and the deviation from 20 \u00b0C. According to the OIML tables, a 5 \u00b0C difference can already mean a correction of 0.5-1.5% vol., and 10 \u00b0C as much as 2-3% vol.; the higher the concentration, the bigger the correction. The exact values are in the OIML R 22 tables - or in the calculator on this page, which does the conversion automatically.<\/p>\n<h3>At what temperature should alcohol be measured?<\/h3>\n<p>Alcoholmeters are calibrated at 20 \u00b0C (OIML standard) - at this temperature the reading is direct, with no correction. In practice the acceptable range is 15-25 \u00b0C, but any deviation from 20 \u00b0C needs a correction from the OIML tables (the calculator on this page helps here). The sample must be at an even temperature: stir, wait 2-3 minutes and only then lower the alcoholmeter in.<\/p>\n<h3>What is the density of 96% ethanol?<\/h3>\n<p>96% (v\/v) ethanol has a density of about 0.8078 g\/cm\u00b3 at the reference temperature of 20 \u00b0C (according to the OIML tables). This value changes with temperature - a rise of 1 \u00b0C lowers the density by about 0.00085 g\/cm\u00b3, which translates directly into the alcoholmeter reading. That is why measuring 96% spirit without a temperature correction can give an error of several percent by volume.<\/p>\n<h3>How do you calculate alcohol concentration with a calculator?<\/h3>\n<p>The correction calculator needs two pieces of data: the alcoholmeter reading (apparent concentration) and the temperature of the liquid at the time of measurement. From these - using the OIML tables - it converts the result into the true concentration at the reference temperature of 20 \u00b0C. An alcoholmeter is calibrated at exactly 20 \u00b0C; each degree of deviation can change the reading by 0.1-0.4% vol. An accurate temperature reading (e.g. with a WiFi thermometer) translates directly into an accurate correction.<\/p>\n<h3>Temperature correction - why does the thermometer matter?<\/h3>\n<p>An alcoholmeter is a hydrometer: it measures the density of the liquid and is calibrated at 20 \u00b0C (OIML tables). Warm liquid has a lower density, so the alcoholmeter reads high. In cold liquid it reads low. Example: a reading of 70% in distillate at 30 \u00b0C is really about 66.7%. The error depends on strength and on the deviation from 20 \u00b0C, so measure the sample temperature with a thermometer, not \u201cby touch\u201d, and correct the result with the calculator. The same applies to a saccharometer (\u00b0Blg), which is also calibrated at 20 \u00b0C.<\/p>\n<\/div>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"At what temperature should I use an alcoholmeter?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An alcoholmeter is calibrated at 20 \u00b0C - the reference temperature under OIML standards. At this temperature the reading is direct, with no conversion. The acceptable range is 15-25 \u00b0C; outside it the error grows quickly and a correction from the OIML tables is needed. Before measuring, let the sample temperature even out by waiting 10-20 minutes in stable surroundings.\"}},{\"@type\":\"Question\",\"name\":\"At what temperature does alcohol lose strength?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Alcohol does not lose strength during storage under normal conditions - only its density changes with temperature. At higher temperatures the liquid expands and an alcoholmeter shows an apparently different concentration. A real drop in strength can happen when a liqueur or distillate is repeatedly heated uncovered - ethanol boils at 78.4 \u00b0C and gradually evaporates.\"}},{\"@type\":\"Question\",\"name\":\"What is the correction scale for an alcoholmeter?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The correction scale depends on the alcohol concentration and the deviation from 20 \u00b0C. According to the OIML tables, a 5 \u00b0C difference can already mean a correction of 0.5-1.5% vol., and 10 \u00b0C as much as 2-3% vol.; the higher the concentration, the bigger the correction. The exact values are in the OIML R 22 tables - or in the calculator on this page, which does the conversion automatically.\"}},{\"@type\":\"Question\",\"name\":\"At what temperature should alcohol be measured?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Alcoholmeters are calibrated at 20 \u00b0C (OIML standard) - at this temperature the reading is direct, with no correction. In practice the acceptable range is 15-25 \u00b0C, but any deviation from 20 \u00b0C needs a correction from the OIML tables (the calculator on this page helps here). The sample must be at an even temperature: stir, wait 2-3 minutes and only then lower the alcoholmeter in.\"}},{\"@type\":\"Question\",\"name\":\"What is the density of 96% ethanol?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"96% (v\/v) ethanol has a density of about 0.8078 g\/cm\u00b3 at the reference temperature of 20 \u00b0C (according to the OIML tables). This value changes with temperature - a rise of 1 \u00b0C lowers the density by about 0.00085 g\/cm\u00b3, which translates directly into the alcoholmeter reading. That is why measuring 96% spirit without a temperature correction can give an error of several percent by volume.\"}},{\"@type\":\"Question\",\"name\":\"How do you calculate alcohol concentration with a calculator?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The correction calculator needs two pieces of data: the alcoholmeter reading (apparent concentration) and the temperature of the liquid at the time of measurement. From these - using the OIML tables - it converts the result into the true concentration at the reference temperature of 20 \u00b0C. An alcoholmeter is calibrated at exactly 20 \u00b0C; each degree of deviation can change the reading by 0.1-0.4% vol. An accurate temperature reading (e.g. with a WiFi thermometer) translates directly into an accurate correction.\"}},{\"@type\":\"Question\",\"name\":\"Temperature correction - why does the thermometer matter?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An alcoholmeter is a hydrometer: it measures the density of the liquid and is calibrated at 20 \u00b0C (OIML tables). Warm liquid has a lower density, so the alcoholmeter reads high. In cold liquid it reads low. Example: a reading of 70% in distillate at 30 \u00b0C is really about 66.7%. The error depends on strength and on the deviation from 20 \u00b0C, so measure the sample temperature with a thermometer, not \u201cby touch\u201d, and correct the result with the calculator. The same applies to a saccharometer (\u00b0Blg), which is also calibrated at 20 \u00b0C.\"}}]}<\/script><br \/>\n<!--twf-faq:end--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An alcoholmeter is wrong away from 20 \u00b0C. The correction calculator converts the reading into true strength using the standard alcoholometric tables. Plus a Blg saccharometer correction.<\/p>\n","protected":false},"author":566,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_yoast_wpseo_focuskw":"","_yoast_wpseo_title":"Alcoholmeter temperature correction - calculator (OIML tables)","_yoast_wpseo_metadesc":"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.","_uag_custom_page_level_css":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-150","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.9 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Alcoholmeter temperature correction - calculator (OIML tables)<\/title>\n<meta name=\"description\" content=\"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alcoholmeter temperature correction - calculator (OIML tables)\" \/>\n<meta property=\"og:description\" content=\"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/\" \/>\n<meta property=\"og:site_name\" content=\"TermometrWifi\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-07T19:46:54+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/alcoholmeter-correction\\\/\",\"url\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/alcoholmeter-correction\\\/\",\"name\":\"Alcoholmeter temperature correction - calculator (OIML tables)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#website\"},\"datePublished\":\"2026-11-03T09:39:13+00:00\",\"dateModified\":\"2026-11-07T19:46:54+00:00\",\"description\":\"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/alcoholmeter-correction\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/termometrwifi.com\\\/en\\\/alcoholmeter-correction\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/alcoholmeter-correction\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alcoholmeter temperature correction - calculator (OIML tables)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/\",\"name\":\"TermometrWifi\",\"description\":\"WiFi smoker controllers and distillation thermometers\",\"publisher\":{\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#organization\",\"name\":\"TermometrWifi\",\"url\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/11\\\/termometrwifi-logo.webp\",\"contentUrl\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/11\\\/termometrwifi-logo.webp\",\"width\":350,\"height\":131,\"caption\":\"TermometrWifi\"},\"image\":{\"@id\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"merchantReturnLink\":\"https:\\\/\\\/termometrwifi.com\\\/en\\\/returns\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Alcoholmeter temperature correction - calculator (OIML tables)","description":"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/","og_locale":"en_GB","og_type":"article","og_title":"Alcoholmeter temperature correction - calculator (OIML tables)","og_description":"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.","og_url":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/","og_site_name":"TermometrWifi","article_modified_time":"2026-11-07T19:46:54+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/","url":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/","name":"Alcoholmeter temperature correction - calculator (OIML tables)","isPartOf":{"@id":"https:\/\/termometrwifi.com\/en\/#website"},"datePublished":"2026-11-03T09:39:13+00:00","dateModified":"2026-11-07T19:46:54+00:00","description":"An alcoholmeter is wrong away from 20 \u00b0C. The calculator converts the reading into true strength using standard alcoholometric tables. Also corrects \u00b0Blg.","breadcrumb":{"@id":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/termometrwifi.com\/en\/alcoholmeter-correction\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/termometrwifi.com\/en\/"},{"@type":"ListItem","position":2,"name":"Alcoholmeter temperature correction - calculator (OIML tables)"}]},{"@type":"WebSite","@id":"https:\/\/termometrwifi.com\/en\/#website","url":"https:\/\/termometrwifi.com\/en\/","name":"TermometrWifi","description":"WiFi smoker controllers and distillation thermometers","publisher":{"@id":"https:\/\/termometrwifi.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/termometrwifi.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/termometrwifi.com\/en\/#organization","name":"TermometrWifi","url":"https:\/\/termometrwifi.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/termometrwifi.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/termometrwifi.com\/en\/wp-content\/uploads\/sites\/2\/2026\/11\/termometrwifi-logo.webp","contentUrl":"https:\/\/termometrwifi.com\/en\/wp-content\/uploads\/sites\/2\/2026\/11\/termometrwifi-logo.webp","width":350,"height":131,"caption":"TermometrWifi"},"image":{"@id":"https:\/\/termometrwifi.com\/en\/#\/schema\/logo\/image\/"},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","merchantReturnLink":"https:\/\/termometrwifi.com\/en\/returns\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"twf-karta":false,"post-thumbnail":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false},"uagb_author_info":{"display_name":"claudeSEO","author_link":"https:\/\/termometrwifi.com\/en\/author\/claudeseo\/"},"uagb_comment_info":0,"uagb_excerpt":"An alcoholmeter is wrong away from 20 \u00b0C. The correction calculator converts the reading into true strength using the standard alcoholometric tables. Plus a Blg saccharometer correction.","_links":{"self":[{"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/pages\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/users\/566"}],"replies":[{"embeddable":true,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":54,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/pages\/150\/revisions"}],"predecessor-version":[{"id":2442,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/pages\/150\/revisions\/2442"}],"wp:attachment":[{"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/media?parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/categories?post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/termometrwifi.com\/en\/wp-json\/wp\/v2\/tags?post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}