πŸš— Mileage Log

Add Trip

Including gas, tolls, etc.

πŸ“Š Summary

Total Trips
0
Total Distance
0 km
Total Fuel
0 L
Total Cost
$0
Avg Fuel Economy
0 L/100km
Cost per km
$0

πŸ“‹ Trip Log

No trips yet. Add one above.

πŸ’‘ About the Mileage Log

The Mileage Log helps you track trip distances, fuel consumption, and costs. Perfect for business reimbursement, personal trip recording, and vehicle fuel economy tracking. All data is stored locally in your browser β€” never uploaded.

What is Mileage Log - Trip / Fuel / Cost Tracker?

Mileage Log - Trip / Fuel / Cost Tracker is a free online tool that runs entirely in your browser. No download or signup needed β€” enter Date and From to get results instantly. All data is processed locally.

Use Cases

Key Features

function updateStats(){ var logs=getLogs(); var trips=logs.length; var totalDist=logs.reduce(function(s,l){return s+parseFloat(l.distance||0);},0); var totalFuel=logs.reduce(function(s,l){return s+parseFloat(l.fuel||0);},0); var totalCost=logs.reduce(function(s,l){return s+parseFloat(l.cost||0);},0); var avgFuel=totalDist>0?(totalFuel/totalDist*100):0; var costPerKm=totalDist>0?(totalCost/totalDist):0; el('totalTrips').textContent=trips; el('totalDistance').innerHTML=totalDist.toFixed(1)+' km'; el('totalFuel').innerHTML=totalFuel.toFixed(2)+' L'; el('totalCost').textContent='$'+totalCost.toFixed(2); el('avgFuel').innerHTML=avgFuel.toFixed(2)+' L/100km'; el('costPerKm').textContent='$'+costPerKm.toFixed(2); } el('addBtn').addEventListener('click',function(){ var date=el('tripDate').value||new Date().toISOString().split('T')[0]; var from=el('tripFrom').value.trim()||'Unspecified'; var to=el('tripTo').value.trim()||'Unspecified'; var dist=parseFloat(el('tripDistance').value); var fuel=parseFloat(el('tripFuel').value)||0; var cost=parseFloat(el('tripCost').value)||0; if(isNaN(dist)||dist<=0){showToast('Please enter a valid distance');return;} var logs=getLogs(); logs.push({date:date,from:from,to:to,distance:dist,fuel:fuel,cost:cost}); saveLogs(logs); renderLogs(); el('tripDistance').value='';el('tripFuel').value='';el('tripCost').value=''; showToast('Trip added'); }); el('clearFormBtn').addEventListener('click',function(){ el('tripFrom').value='';el('tripTo').value=''; el('tripDistance').value='';el('tripFuel').value='';el('tripCost').value=''; }); el('logList').addEventListener('click',function(e){ if(e.target.classList.contains('log-delete')){ var idx=parseInt(e.target.dataset.idx); var logs=getLogs(); logs.splice(idx,1); saveLogs(logs); renderLogs(); showToast('Trip deleted'); } }); el('copyLogBtn').addEventListener('click',function(){ var logs=getLogs(); if(logs.length===0){showToast('No trips to copy');return;} var text='Mileage Log\n'+'='.repeat(30)+'\n'; logs.forEach(function(l){ text+=l.date+' | '+l.from+' β†’ '+l.to+' | '+l.distance+'km | '+l.fuel+'L | $'+l.cost+'\n'; }); text+='='.repeat(30)+'\nTotal: '+logs.length+' trips | '+logs.reduce(function(s,l){return s+parseFloat(l.distance);},0).toFixed(1)+'km'; if(navigator.clipboard){ navigator.clipboard.writeText(text).then(function(){showToast('Copied to clipboard');}); }else{ var ta=document.createElement('textarea'); ta.value=text;ta.style.position='fixed';ta.style.opacity='0'; document.body.appendChild(ta);ta.select(); document.execCommand('copy');document.body.removeChild(ta); showToast('Copied to clipboard'); } }); el('clearLogBtn').addEventListener('click',function(){ if(confirm('Delete all trips? This cannot be undone.')){ localStorage.removeItem(STORAGE_KEY); renderLogs(); showToast('All trips cleared'); } }); el('tripDate').value=new Date().toISOString().split('T')[0]; renderLogs(); })();