Data

The log, as a file

Two files. The raw one is exactly what was typed at the pump, 302 tanks and 4 purchase rows. The derived one adds every computed column. Both are rebuilt with the site.

fillups.csv

Raw rows, the file the site is built from. Eight columns.

Download CSV

fillups.json

One object per tank with the derived columns filled in.

Download JSON

cars.json

The four cars: name, trim, fuel, purchase date, last fill, rated tank capacity.

Download JSON

maintenance.csv

The service history: one row per visit, with what was done, where, the product and parts.

Download CSV

Licensed CC BY 4.0. Use it for anything; say where it came from. Latest tank in the file: Oct 9, 2026.

Raw columns

ColumnMeaning
carCar slug, matches cars.json.
dateFill-up date, local to America/New_York, YYYY-MM-DD.
eventfillup, or purchase for the row that marks the day the car was bought (no fuel numbers).
odometerOdometer at the fill, miles. Tracked for the 2023 Corolla only. Its purchase row is 0.
milesMiles driven on the tank being replaced. Trip-meter readings for the earlier cars; odometer differences for the Corolla.
gallonsGallons pumped.
costTotal paid, US dollars.
notesFree text as typed: oil changes, tires, weather, trips.

Derived columns in fillups.json

ColumnHow it is computed
ppgcost / gallons
mpgmiles / gallons, blank when the tank has no miles
daysdays since the previous fill, or since purchase for a car's first tank
miles_per_daymiles / days
cost_per_milecost / miles
cum_milesrunning total of miles for the car, the odometer for the Corolla
odometer_estfor the 2017 Fit only: the odometer walked back from the trade-in reading of 50,066 on 2023-05-26, so every tank gets an estimate; blank for cars that logged the real thing
temp_mean_fmean of the daily mean temperatures at the Atlanta grid point from the day after the previous fill through the fill day; blank when fewer than 80% of those days are on record
fill_fractiongallons / the car's rated tank capacity from cars.json (capacities verified by the owner), assuming a fill to full
eventstags parsed from the notes: oil, tires, filter, service, trip, weather, premium

maintenance.csv

ColumnMeaning
carCar slug, matches cars.json.
dateDate of the visit, YYYY-MM-DD.
odometerOdometer at the visit, miles. For the three earlier cars the number is in the same basis as their fuel log: a running total since purchase, or the estimate walked back from the trade-in reading.
odometer_estyes when the odometer was read off the fuel log for that date rather than off the dash.
itemsWhat was done, a semicolon list from: oil, rotation, tires, air filter, cabin filter, fuel filter, inspection, brakes, service, other.
shopWhere: a business name, or Home.
productOil brand, grade and quantity; tire model and size.
partsFilters and other parts installed.
costDollars, 0 for a visit covered by an included maintenance plan, blank when not recorded.
notesFree text.

Entries for the earlier cars were lifted from notes typed next to a tank at the time, so their date is the tank's date and the shop and product are unknown. The Corolla's rows come from the owner's records.

Methods

Averages of per-tank figures (MPG, price per gallon) are means over tanks, which is how the log summarized a year for thirteen years. Overall ratios (miles over gallons, dollars over miles) are shown next to them under their own names, and the two are not interchangeable: a mean of tank MPGs weights every tank the same, the ratio weights big tanks more.

No median, rank or seasonal average is stated from fewer than 5 tanks. A tank under four gallons is never a best or worst tank, because a small top-up produces an unreliable MPG.

Every tank is treated as a fill to full, which is how the log was kept. Dates are civil dates in America/New_York; day counts are calendar differences. No station, location or fuel grade is recorded.

The three earlier cars have no odometer column, so their running mileage is the sum of tank miles since purchase, not a reading. The Corolla's is the odometer.

Weather

Temperatures come from Open-Meteo's historical archive (ERA5 reanalysis), one grid point for Atlanta, chosen as a metro-level reference rather than an address. The daily series is committed to the repository as data/weather-daily.csv (date, mean, max and min in Fahrenheit) and refreshed with a script; days newer than the snapshot are fetched when the site builds, and a tank simply has no temperature when they cannot be. Weather data by Open-Meteo, CC BY 4.0.