Unit Converter

Convert common units instantly.

Configure inputs in pipeline.

Output will appear here.

For informational purposes only.

No data is stored or transmitted.

(function(){ const display = document.querySelector('.result'); const source = document.querySelector('#rate-source'); const valueEl = document.querySelector('[data-key="value"]'); const fromEl = document.querySelector('#from_u'); const toEl = document.querySelector('#to_u'); const factors = { // length to m km: 1000, m: 1, cm: 0.01, mi: 1609.344, ft: 0.3048, in: 0.0254, // mass to kg kg: 1, g: 0.001, lb: 0.45359237, // temp conventions c: 'celsius', f: 'fahrenheit' }; const toBase = (v, u) => { if(u === 'c' || u === 'f') return u === 'f' ? ((v-32)*5/9) : v; return v * (factors[u] || 1); }; const fromBase = (v, u) => { if(u === 'c' || u === 'f') return u === 'f' ? (v*9/5+32) : v; return v / (factors[u] || 1); }; const convert = () => { let value = Number(valueEl?.value || 0); const fromU = fromEl?.value || 'km'; const toU = toEl?.value || 'mi'; if(!Number.isFinite(value)) value = 0; let out; if((fromU === 'c' || fromU === 'f') || (toU === 'c' || toU === 'f')){ const c = toBase(value, fromU); out = fromBase(c, toU); } else { const base = toBase(value, fromU); out = fromBase(base, toU); } if(display) display.textContent = `${value} ${fromU} ≈ ${Number.isInteger(out)?out:out.toFixed(4)} ${toU}`; if(source) source.textContent = 'Offline conversion matrix'; }; const bind = () => { [valueEl, fromEl, toEl].forEach(el => el?.addEventListener('input', convert)); [valueEl, fromEl, toEl].forEach(el => el?.addEventListener('change', convert)); }; if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', () => { bind(); convert(); }); } else { bind(); convert(); } })();