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
Compare different loan or investment options before committing
Calculate key figures quickly during financial planning
Make informed spending decisions with accurate cost analysis
Mobile calculations without opening a spreadsheet app
Key Features
Completely Free: No registration, no limits
Privacy Safe: Data never leaves your browser
Cross-Platform: Any modern browser
Zero Dependencies: Open and use
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();
})();