[{"data":1,"prerenderedAt":1897},["ShallowReactive",2],{"blog-what-the-swipe-deck-is-for":3,"blog-related-what-the-swipe-deck-is-for":246},{"id":4,"title":5,"author":6,"body":7,"category":228,"date":229,"description":230,"draft":231,"extension":232,"image":233,"imageAlt":234,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":237,"navigation":236,"path":238,"readTime":220,"seo":239,"stem":240,"tags":241,"__hash__":245},"blog\u002Fblog\u002Fwhat-the-swipe-deck-is-for.md","Why sorting trips is a card deck and not a list","The Milesheet Team",{"type":8,"value":9,"toc":218},"minimark",[10,14,19,22,25,29,32,61,64,68,164,167,171,177,183,189,193,196,200],[11,12,13],"p",{},"Recording drives is the easy half of a mileage app. Any phone can do it. The half that decides whether anyone still uses the thing in March is deciding which drives were work.",[15,16,18],"h2",{"id":17},"why-lists-fail","Why lists fail",[11,20,21],{},"Most mileage apps present the backlog as a list with a dropdown on each row. It is a perfectly logical design and almost nobody finishes it.",[11,23,24],{},"The reasons are consistent. A list shows how much is left, which is discouraging. Each row demands a decision without giving you enough to make it — a date and a distance do not tell you what a journey was. And the interaction is precise: find the row, hit the small control, choose from a menu, move on. Precision is fine at a desk and awful on a sofa.",[15,26,28],{"id":27},"why-a-deck-works","Why a deck works",[11,30,31],{},"One journey at a time, with its route drawn on a map, and a gesture rather than a target.",[33,34,35,43,49,55],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"The map is the memory aid."," People do not remember 14 August. They remember the shape of a drive to Bristol and back.",[36,44,45,48],{},[39,46,47],{},"One card is not a backlog."," You cannot see how many are left, so you do not stop because it looked like a lot.",[36,50,51,54],{},[39,52,53],{},"A swipe is imprecise on purpose."," It works one-handed, on a sofa, while something else is on.",[36,56,57,60],{},[39,58,59],{},"It is reversible."," Every swipe has an undo, so being wrong costs nothing and you stop hesitating.",[11,62,63],{},"The measure of success is that a week of driving takes under a minute. Below that threshold people do it. Above it, they intend to.",[15,65,67],{"id":66},"why-the-list-loses","Why the list loses",[69,70,71,86],"table",{},[72,73,74],"thead",{},[75,76,77,80,83],"tr",{},[78,79],"th",{},[78,81,82],{},"List with dropdowns",[78,84,85],{},"Card deck",[87,88,89,101,114,127,138,151],"tbody",{},[75,90,91,95,98],{},[92,93,94],"td",{},"Shows how much is left",[92,96,97],{},"Yes — discouraging",[92,99,100],{},"No",[75,102,103,106,109],{},[92,104,105],{},"Memory aid per item",[92,107,108],{},"Date and distance",[92,110,111],{},[39,112,113],{},"The route on a map",[75,115,116,119,122],{},[92,117,118],{},"Interaction",[92,120,121],{},"Precise tap on a small control",[92,123,124],{},[39,125,126],{},"A swipe",[75,128,129,132,135],{},[92,130,131],{},"One-handed on a sofa",[92,133,134],{},"Awkward",[92,136,137],{},"Yes",[75,139,140,143,146],{},[92,141,142],{},"Undo",[92,144,145],{},"Sometimes",[92,147,148],{},[39,149,150],{},"Every action",[75,152,153,156,159],{},[92,154,155],{},"Time for a week of driving",[92,157,158],{},"Several minutes",[92,160,161],{},[39,162,163],{},"Under a minute",[11,165,166],{},"The last row is the only one that matters. Below a minute people do it; above it they intend to.",[15,168,170],{"id":169},"what-makes-it-faster-still","What makes it faster still",[11,172,173,176],{},[39,174,175],{},"Tagged places."," Once the office and your regular sites are tagged, most cards arrive with the answer suggested and an Auto-sort button clears them together.",[11,178,179,182],{},[39,180,181],{},"Bulk selection",", for when a fortnight away has left a genuine pile: hold one trip, tick the rest, file them all at once.",[11,184,185,188],{},[39,186,187],{},"Commuting excluded automatically",", once home and workplace are tagged, so the journeys that were never claimable stop occupying your attention.",[15,190,192],{"id":191},"the-unglamorous-point","The unglamorous point",[11,194,195],{},"None of this is clever technology. It is the recognition that the hard part of a mileage log is not measurement, it is the two seconds of human judgement per journey — and that the whole thing lives or dies on making those two seconds cheap enough that they happen.",[15,197,199],{"id":198},"sources","Sources",[33,201,202,211],{},[36,203,204],{},[205,206,210],"a",{"href":207,"rel":208},"https:\u002F\u002Fwww.gov.uk\u002Fself-assessment-tax-returns\u002Fkeeping-records",[209],"nofollow","HMRC — Self Assessment: keeping your records",[36,212,213],{},[205,214,217],{"href":215,"rel":216},"https:\u002F\u002Fwww.gov.uk\u002Ftax-relief-for-employees\u002Fvehicles-you-use-for-work",[209],"HMRC — Claim tax relief for your job expenses: vehicles you use for work",{"title":219,"searchDepth":220,"depth":220,"links":221},"",2,[222,223,224,225,226,227],{"id":17,"depth":220,"text":18},{"id":27,"depth":220,"text":28},{"id":66,"depth":220,"text":67},{"id":169,"depth":220,"text":170},{"id":191,"depth":220,"text":192},{"id":198,"depth":220,"text":199},"Using Milesheet","2025-09-25","The design decision that determines whether anyone actually keeps a mileage log.",false,"md","\u002Fshots\u002Fclassify.png","The Classify deck in Milesheet, one journey at a time",null,true,{},"\u002Fblog\u002Fwhat-the-swipe-deck-is-for",{"title":5,"description":230},"blog\u002Fwhat-the-swipe-deck-is-for",[242,243,244],"milesheet","design","sorting","BXj8wUZrnJ1GIN5Ke-xK7oRPjItBrGXE90gpT-9ExHk",[247,588,795,1056,1287,1439,1664],{"id":248,"title":249,"author":6,"body":250,"category":228,"date":574,"description":575,"draft":231,"extension":232,"image":576,"imageAlt":577,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":578,"navigation":236,"path":579,"readTime":580,"seo":581,"stem":582,"tags":583,"__hash__":587},"blog\u002Fblog\u002Fswitching-from-another-mileage-app.md","Switching mileage apps without losing the tax year",{"type":8,"value":251,"toc":564},[252,255,259,262,265,269,280,294,297,301,307,322,336,340,347,368,371,375,378,394,397,401,473,477,545,548,550],[11,253,254],{},"Changing mileage apps mid-tax-year sounds like the sort of thing that loses you money. It does not have to, as long as the history comes with you.",[15,256,258],{"id":257},"why-the-history-matters","Why the history matters",[11,260,261],{},"The 45p rate only applies to your first 10,000 business miles in a tax year. If your new app starts counting from zero in September, every mile it records is priced at 45p, including the ones that should have dropped to 25p because of driving you did in May. Your claim ends up wrong in the direction HMRC cares about.",[11,263,264],{},"Bring the old trips across and the banding is calculated over the whole year, as it should be.",[15,266,268],{"id":267},"getting-the-data-out","Getting the data out",[11,270,271,272,275,276,279],{},"Most mileage apps can export a CSV, usually somewhere in settings under export, reports or backup. What you want is one row per journey with, at minimum, a ",[39,273,274],{},"date"," and a ",[39,277,278],{},"distance",". Anything else is a bonus:",[33,281,282,285,288,291],{},[36,283,284],{},"Start and end location",[36,286,287],{},"Start time",[36,289,290],{},"Business or personal",[36,292,293],{},"Notes or purpose",[11,295,296],{},"If your old app can only email you a PDF report, you can still type the trips in by hand. Tedious, but a one-off.",[15,298,300],{"id":299},"check-three-things-before-importing","Check three things before importing",[11,302,303,306],{},[39,304,305],{},"Units."," Is the distance column miles or kilometres? Getting this wrong inflates or shrinks a whole year of claims.",[11,308,309,312,313,317,318,321],{},[39,310,311],{},"Date format."," UK exports are usually ",[314,315,316],"code",{},"dd\u002Fmm\u002Fyyyy",", but apps built elsewhere often use ",[314,319,320],{},"mm\u002Fdd\u002Fyyyy",". If the first twelve rows look plausible and the rest look mad, this is why.",[11,323,324,327,328,331,332,335],{},[39,325,326],{},"What \"category\" means."," Some apps export ",[314,329,330],{},"Business","\u002F",[314,333,334],{},"Personal",", others use custom categories like \"Client visit\" or \"Commute\". You will want to know which is which before you map the column.",[15,337,339],{"id":338},"bringing-it-into-milesheet","Bringing it into Milesheet",[11,341,342,343,346],{},"Settings, then Export & backup, then ",[39,344,345],{},"Import trips from CSV",". The wizard is three steps:",[348,349,350,356,362],"ol",{},[36,351,352,355],{},[39,353,354],{},"Pick the file."," Milesheet reads the header row and works out which column is which, including the common naming from other apps.",[36,357,358,361],{},[39,359,360],{},"Check the mapping."," Every field is a dropdown. Point Date and Distance at the right columns, set miles or kilometres, choose what unlabelled rows should become, and pick which vehicle they belong to.",[36,363,364,367],{},[39,365,366],{},"Preview and import."," You see how many trips parsed cleanly and how many rows could not be read, then confirm.",[11,369,370],{},"Anything that duplicates a trip already in Milesheet is skipped, so importing the same file twice is harmless. Rows with an unreadable date or distance are reported rather than silently dropped.",[15,372,374],{"id":373},"after-the-import","After the import",[11,376,377],{},"Two things worth doing:",[33,379,380,387],{},[36,381,382,383,386],{},"Open ",[39,384,385],{},"Insights"," and check the tax-year total looks like your year. If it is wildly out, the units or the date format were probably wrong; delete the imported trips and try again.",[36,388,389,390,393],{},"Tag your regular places in ",[39,391,392],{},"Locations",". Once the office and your usual sites are tagged, Milesheet sorts most future trips for you.",[11,395,396],{},"Then carry on driving. From that point, the log keeps itself.",[15,398,400],{"id":399},"what-to-check-in-the-export","What to check in the export",[69,402,403,416],{},[72,404,405],{},[75,406,407,410,413],{},[78,408,409],{},"Check",[78,411,412],{},"Why it matters",[78,414,415],{},"If it is wrong",[87,417,418,429,440,451,462],{},[75,419,420,423,426],{},[92,421,422],{},"Units — miles or kilometres",[92,424,425],{},"A km export read as miles is 38% short",[92,427,428],{},"Every claim figure understates",[75,430,431,434,437],{},[92,432,433],{},"Date format",[92,435,436],{},"US vs UK ordering silently swaps days and months",[92,438,439],{},"Trips land in the wrong month, banding breaks",[75,441,442,445,448],{},[92,443,444],{},"Classification column",[92,446,447],{},"Some apps export it, some do not",[92,449,450],{},"Everything arrives unclassified",[75,452,453,456,459],{},[92,454,455],{},"Running order",[92,457,458],{},"Banding depends on date order",[92,460,461],{},"Rate bands apply to the wrong trips",[75,463,464,467,470],{},[92,465,466],{},"Duplicates",[92,468,469],{},"Re-importing doubles mileage",[92,471,472],{},"The claim is overstated",[15,474,476],{"id":475},"the-import-step-by-step","The import, step by step",[69,478,479,489],{},[72,480,481],{},[75,482,483,486],{},[78,484,485],{},"Step",[78,487,488],{},"Where",[87,490,491,499,507,515,522,529,537],{},[75,492,493,496],{},[92,494,495],{},"Export CSV from the old app",[92,497,498],{},"Its own settings",[75,500,501,504],{},[92,502,503],{},"Settings → Export & sync → Import trips from CSV",[92,505,506],{},"Milesheet",[75,508,509,512],{},[92,510,511],{},"Map the columns (date and distance are required)",[92,513,514],{},"Import wizard",[75,516,517,520],{},[92,518,519],{},"Choose the unit — miles or kilometres",[92,521,514],{},[75,523,524,527],{},[92,525,526],{},"Review the preview before committing",[92,528,514],{},[75,530,531,534],{},[92,532,533],{},"Sort anything that arrived unclassified",[92,535,536],{},"Classify tab",[75,538,539,542],{},[92,540,541],{},"Tag your regular places",[92,543,544],{},"Settings → Locations",[11,546,547],{},"Duplicates of trips already in the app are skipped, so a second import after a failed one does not\ndouble anything.",[15,549,199],{"id":198},[33,551,552,557],{},[36,553,554],{},[205,555,210],{"href":207,"rel":556},[209],[36,558,559],{},[205,560,563],{"href":561,"rel":562},"https:\u002F\u002Fwww.gov.uk\u002Fgovernment\u002Fpublications\u002Frates-and-allowances-travel-mileage-and-fuel-allowances\u002Ftravel-mileage-and-fuel-rates-and-allowances",[209],"HMRC — Travel, mileage and fuel rates and allowances",{"title":219,"searchDepth":220,"depth":220,"links":565},[566,567,568,569,570,571,572,573],{"id":257,"depth":220,"text":258},{"id":267,"depth":220,"text":268},{"id":299,"depth":220,"text":300},{"id":338,"depth":220,"text":339},{"id":373,"depth":220,"text":374},{"id":399,"depth":220,"text":400},{"id":475,"depth":220,"text":476},{"id":198,"depth":220,"text":199},"2026-06-04","How to get your history out of another app, what to check in the export, and how to bring it into Milesheet so the 10,000-mile banding still works.","\u002Fshots\u002Fdata.png","Export and sync options in Milesheet",{},"\u002Fblog\u002Fswitching-from-another-mileage-app",3,{"title":249,"description":575},"blog\u002Fswitching-from-another-mileage-app",[584,585,586],"import","csv","getting started","wvYHkcMBZnfK9jTLipyKYS0Bv1B4BpOdfy7tMBxjU2I",{"id":589,"title":590,"author":6,"body":591,"category":228,"date":784,"description":785,"draft":231,"extension":232,"image":233,"imageAlt":786,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":787,"navigation":236,"path":788,"readTime":220,"seo":789,"stem":790,"tags":791,"__hash__":794},"blog\u002Fblog\u002Ffive-habits-that-make-the-claim-add-up.md","Five habits that turn a mileage app into a claim",{"type":8,"value":592,"toc":774},[593,596,600,603,606,610,613,624,628,631,634,638,645,648,652,655,658,662,750,753,757,760,762],[11,594,595],{},"Most abandoned mileage logs are not abandoned because the app was bad. They are abandoned because the habit never formed. These five take about two minutes a week between them.",[15,597,599],{"id":598},"_1-sort-trips-while-you-still-remember-them","1. Sort trips while you still remember them",[11,601,602],{},"The single highest-value habit. A journey sorted on the evening it happened is accurate. The same journey sorted in April is a guess dressed as a record.",[11,604,605],{},"Milesheet's Classify deck exists for this: each card replays the route on a map, you swipe right for business and left for personal, and a week of driving takes under a minute. Do it while the kettle boils.",[15,607,609],{"id":608},"_2-tag-your-regular-places-once","2. Tag your regular places once",[11,611,612],{},"Ten minutes, once, and a large proportion of your sorting stops being manual. Tag the office, the sites you visit repeatedly, the clients you see monthly.",[11,614,615,616,619,620,623],{},"Tag your house as ",[39,617,618],{},"Home"," and any permanent workplace as ",[39,621,622],{},"Workplace"," while you are there. That is what keeps ordinary commuting out of your claim, which is the most common way a mileage claim goes wrong.",[15,625,627],{"id":626},"_3-log-the-fill-up-at-the-pump-not-later","3. Log the fill-up at the pump, not later",[11,629,630],{},"Two full tanks with odometer readings and Milesheet knows your car's real economy rather than the brochure figure. Every trip cost after that is a real number.",[11,632,633],{},"The reason to do it at the pump is that the odometer reading is the part you cannot reconstruct afterwards. The receipt survives; the mileage on the dash does not.",[15,635,637],{"id":636},"_4-check-insights-once-a-month","4. Check Insights once a month",[11,639,640,641,644],{},"Not for pleasure — for the two things that are much harder to fix later. Whether anything is still unclassified, and whether the ",[39,642,643],{},"unlogged mileage"," figure has appeared, which means the odometer and your journeys disagree and some driving never got recorded.",[11,646,647],{},"A month-old gap is recoverable from memory and a calendar. A year-old one is not.",[15,649,651],{"id":650},"_5-export-at-the-end-of-the-tax-year-not-the-end-of-january","5. Export at the end of the tax year, not the end of January",[11,653,654],{},"Produce the CSV and the claim PDF in April while the year is fresh, and put them somewhere that is not only your phone. If you file in January, you want the version you assembled when you could still check it.",[11,656,657],{},"Turn on auto-export and even this one takes care of itself.",[15,659,661],{"id":660},"the-habits-and-what-each-is-worth","The habits, and what each is worth",[69,663,664,680],{},[72,665,666],{},[75,667,668,671,674,677],{},[78,669,670],{},"Habit",[78,672,673],{},"How often",[78,675,676],{},"Time",[78,678,679],{},"What it protects",[87,681,682,696,709,723,737],{},[75,683,684,687,690,693],{},[92,685,686],{},"Sort trips while you remember them",[92,688,689],{},"Weekly",[92,691,692],{},"1 min",[92,694,695],{},"Accuracy of the whole log",[75,697,698,700,703,706],{},[92,699,541],{},[92,701,702],{},"Once",[92,704,705],{},"10 min",[92,707,708],{},"Most future sorting, and commuting exclusion",[75,710,711,714,717,720],{},[92,712,713],{},"Log the fill-up at the pump",[92,715,716],{},"Per fill",[92,718,719],{},"30 sec",[92,721,722],{},"Real MPG, and the odometer trail",[75,724,725,728,731,734],{},[92,726,727],{},"Check Insights",[92,729,730],{},"Monthly",[92,732,733],{},"2 min",[92,735,736],{},"Unclassified backlog and unlogged mileage",[75,738,739,742,745,747],{},[92,740,741],{},"Export at tax year end",[92,743,744],{},"Yearly",[92,746,733],{},[92,748,749],{},"The version you filed from",[11,751,752],{},"Under fifteen minutes a year of actual effort, plus a minute a week.",[15,754,756],{"id":755},"the-underlying-point","The underlying point",[11,758,759],{},"None of these are about diligence. They are about doing the small thing at the moment it is easy, so that nothing depends on remembering anything nine months later.",[15,761,199],{"id":198},[33,763,764,769],{},[36,765,766],{},[205,767,210],{"href":207,"rel":768},[209],[36,770,771],{},[205,772,217],{"href":215,"rel":773},[209],{"title":219,"searchDepth":220,"depth":220,"links":775},[776,777,778,779,780,781,782,783],{"id":598,"depth":220,"text":599},{"id":608,"depth":220,"text":609},{"id":626,"depth":220,"text":627},{"id":636,"depth":220,"text":637},{"id":650,"depth":220,"text":651},{"id":660,"depth":220,"text":661},{"id":755,"depth":220,"text":756},{"id":198,"depth":220,"text":199},"2025-12-18","Installing it is not the job. These are the small things that decide whether you have a record worth filing in January.","Sorting journeys into business or personal in Milesheet",{},"\u002Fblog\u002Ffive-habits-that-make-the-claim-add-up",{"title":590,"description":785},"blog\u002Ffive-habits-that-make-the-claim-add-up",[242,792,793],"habits","records","p_vp2rbVnB19ARKxP19YL3_WBiMdreT-KfC0mx0ntnA",{"id":796,"title":797,"author":6,"body":798,"category":228,"date":1045,"description":1046,"draft":231,"extension":232,"image":1047,"imageAlt":1048,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":1049,"navigation":236,"path":1050,"readTime":580,"seo":1051,"stem":1052,"tags":1053,"__hash__":1055},"blog\u002Fblog\u002Fwhy-milesheet-has-no-account.md","Why Milesheet has no account, and what that costs us",{"type":8,"value":799,"toc":1036},[800,803,806,810,813,816,819,823,826,858,861,865,883,887,1007,1010,1014,1017,1020,1024,1027,1029],[11,801,802],{},"There is no sign-up screen in Milesheet. There is no server holding your journeys, no password, and no way for us to see where you have driven — because there is nothing to see it with.",[11,804,805],{},"That was a deliberate choice, and it is not a free one.",[15,807,809],{"id":808},"what-a-location-log-actually-is","What a location log actually is",[11,811,812],{},"A mileage tracker knows where you live, where you work, who your clients are, when you are away from the house and how long for. It is one of the most sensitive datasets an ordinary person generates, and it is generated automatically, in the background, for years.",[11,814,815],{},"The industry norm is to sync all of that to a server so it can be restored, shared and analysed. That is a genuine convenience. It also means a breach at a company you have never thought about exposes a map of your life.",[11,817,818],{},"We decided the right amount of your location data for us to hold was none.",[15,820,822],{"id":821},"what-we-gave-up","What we gave up",[11,824,825],{},"Being honest about the trade:",[33,827,828,834,840,846,852],{},[36,829,830,833],{},[39,831,832],{},"No cross-device sync out of the box."," Your journeys live on the phone that recorded them.",[36,835,836,839],{},[39,837,838],{},"No web dashboard."," There is no server to serve one.",[36,841,842,845],{},[39,843,844],{},"No \"log in on your new phone and it is all there\"."," You restore from a backup file instead.",[36,847,848,851],{},[39,849,850],{},"No usage analytics."," We genuinely do not know which features are used most, which makes the app harder to improve.",[36,853,854,857],{},[39,855,856],{},"No password reset",", because there is nothing to reset — which means if you lose the phone and the backup, the data is gone.",[11,859,860],{},"That last one is the real cost, and it is why the app nags about backups.",[15,862,864],{"id":863},"what-you-get","What you get",[33,866,867,870,873,876],{},[36,868,869],{},"No account to create, verify, or remember",[36,871,872],{},"Nothing to breach, because there is no central store",[36,874,875],{},"No subscription, because there is no server to pay for — hence one payment",[36,877,878,879,882],{},"Exports that go ",[39,880,881],{},"only"," where you point them: your own Files folder, your own cloud drive, your own NAS",[15,884,886],{"id":885},"the-trade-stated-plainly","The trade, stated plainly",[69,888,889,901],{},[72,890,891],{},[75,892,893,895,898],{},[78,894],{},[78,896,897],{},"With an account",[78,899,900],{},"Milesheet's way",[87,902,903,914,925,936,946,957,969,982,994],{},[75,904,905,908,910],{},[92,906,907],{},"Sign-up required",[92,909,137],{},[92,911,912],{},[39,913,100],{},[75,915,916,919,921],{},[92,917,918],{},"Your locations on someone's server",[92,920,137],{},[92,922,923],{},[39,924,100],{},[75,926,927,930,933],{},[92,928,929],{},"Restore on a new phone",[92,931,932],{},"Automatic",[92,934,935],{},"From a backup file you keep",[75,937,938,941,944],{},[92,939,940],{},"Web dashboard",[92,942,943],{},"Usually",[92,945,100],{},[75,947,948,951,954],{},[92,949,950],{},"Cross-device sync",[92,952,953],{},"Built in",[92,955,956],{},"Via your own cloud folder",[75,958,959,962,964],{},[92,960,961],{},"Usage analytics informing the app",[92,963,137],{},[92,965,966,968],{},[39,967,100],{}," — we cannot see anything",[75,970,971,974,977],{},[92,972,973],{},"Breach exposes your movements",[92,975,976],{},"Possible",[92,978,979],{},[39,980,981],{},"Nothing to breach",[75,983,984,987,989],{},[92,985,986],{},"Subscription needed to fund servers",[92,988,943],{},[92,990,991],{},[39,992,993],{},"No servers, one payment",[75,995,996,999,1002],{},[92,997,998],{},"Lose phone and backup",[92,1000,1001],{},"Recoverable",[92,1003,1004],{},[39,1005,1006],{},"Data is gone",[11,1008,1009],{},"The last row is the real cost, and it is why the app keeps mentioning backups.",[15,1011,1013],{"id":1012},"where-your-data-does-go-if-you-ask-it-to","Where your data does go, if you ask it to",[11,1015,1016],{},"Sync is opt-in and it is yours. Point it at iCloud Drive, a folder in Files, or a WebDAV server on your own network, and Milesheet writes always-current CSVs and a full backup there. Each destination reports whether it actually worked, because a silent sync failure is worse than none.",[11,1018,1019],{},"Nothing is uploaded anywhere else, at any point, for any reason.",[15,1021,1023],{"id":1022},"the-one-thing-to-do","The one thing to do",[11,1025,1026],{},"Take a backup, and put it somewhere that is not the phone. That is the price of not having a server, and it takes about fifteen seconds.",[15,1028,199],{"id":198},[33,1030,1031],{},[36,1032,1033],{},[205,1034,210],{"href":207,"rel":1035},[209],{"title":219,"searchDepth":220,"depth":220,"links":1037},[1038,1039,1040,1041,1042,1043,1044],{"id":808,"depth":220,"text":809},{"id":821,"depth":220,"text":822},{"id":863,"depth":220,"text":864},{"id":885,"depth":220,"text":886},{"id":1012,"depth":220,"text":1013},{"id":1022,"depth":220,"text":1023},{"id":198,"depth":220,"text":199},"2025-11-27","Every mileage app wants a login. Here is what we gave up by not having one, and what you get in return.","\u002Fshots\u002Fsettings.png","Milesheet settings — no account, because there is nothing to sign in to",{},"\u002Fblog\u002Fwhy-milesheet-has-no-account",{"title":797,"description":1046},"blog\u002Fwhy-milesheet-has-no-account",[242,1054,243],"privacy","LmcZWkoecHLavAdp6B0YCLoRT_Q9COZOM5FlbREL73c",{"id":1057,"title":1058,"author":6,"body":1059,"category":228,"date":1278,"description":1279,"draft":231,"extension":232,"image":576,"imageAlt":1280,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":1281,"navigation":236,"path":1282,"readTime":220,"seo":1283,"stem":1284,"tags":1285,"__hash__":1286},"blog\u002Fblog\u002Fgetting-a-year-of-history-in.md","Getting a year of driving into Milesheet after the fact",{"type":8,"value":1060,"toc":1270},[1061,1064,1068,1074,1077,1080,1093,1097,1100,1104,1107,1133,1140,1144,1241,1244,1248,1251,1253],[11,1062,1063],{},"Almost nobody starts recording on 6 April. Most people start when something prompts them — a tax bill, an accountant's email, a realisation that a year of driving went unrecorded. The half-year behind you is still worth recovering.",[15,1065,1067],{"id":1066},"if-you-have-a-csv-from-another-app","If you have a CSV from another app",[11,1069,1070,1071,1073],{},"The quickest route. Export from the old app, then ",[39,1072,503],{},".",[11,1075,1076],{},"Milesheet reads most formats because you map the columns yourself: which one is the date, which is the distance, which are the start and end places. Only date and distance are required. Duplicates of trips you already have are skipped, so importing twice does not double your mileage.",[11,1078,1079],{},"Check two things afterwards:",[33,1081,1082,1087],{},[36,1083,1084,1086],{},[39,1085,305],{}," If the old app exported kilometres and you told Milesheet miles, everything is 60% too small and the claim with it.",[36,1088,1089,1092],{},[39,1090,1091],{},"Classification."," Some exports carry business\u002Fpersonal, some do not. If not, everything lands unclassified and you sort it in the Classify deck.",[15,1094,1096],{"id":1095},"if-you-have-a-spreadsheet","If you have a spreadsheet",[11,1098,1099],{},"Same route. Save it as CSV, map the columns. A spreadsheet with dates, distances and a note of where you went imports as well as any app export.",[15,1101,1103],{"id":1102},"if-you-have-nothing-but-a-diary-and-a-bank-statement","If you have nothing but a diary and a bank statement",[11,1105,1106],{},"Harder, and worth being honest about: what you can reconstruct is not as strong as a contemporaneous record. But it is far better than nothing, and there are more anchors than people realise.",[33,1108,1109,1115,1121,1127],{},[36,1110,1111,1114],{},[39,1112,1113],{},"Your calendar"," gives dates and destinations for meetings",[36,1116,1117,1120],{},[39,1118,1119],{},"Invoices"," tell you which client you visited and when",[36,1122,1123,1126],{},[39,1124,1125],{},"Fuel receipts"," put you at a place on a date, and the odometer readings between them tell you how far the car actually went",[36,1128,1129,1132],{},[39,1130,1131],{},"Odometer readings"," at MOT are recorded and give you a total for the year",[11,1134,1135,1136,1139],{},"Add the journeys you can evidence by hand — ",[39,1137,1138],{},"Trips → +"," — and leave out the ones you genuinely cannot. A shorter honest log beats a longer invented one, and a reconstructed claim that agrees with your invoices and fuel receipts is defensible in a way that a round number is not.",[15,1141,1143],{"id":1142},"what-each-source-can-give-you","What each source can give you",[69,1145,1146,1159],{},[72,1147,1148],{},[75,1149,1150,1153,1156],{},[78,1151,1152],{},"Source",[78,1154,1155],{},"Gives you",[78,1157,1158],{},"Strength",[87,1160,1161,1175,1186,1197,1206,1216,1227],{},[75,1162,1163,1166,1169],{},[92,1164,1165],{},"CSV from another app",[92,1167,1168],{},"Dates, distances, often places",[92,1170,1171,1174],{},[39,1172,1173],{},"Strongest"," — contemporaneous",[75,1176,1177,1180,1183],{},[92,1178,1179],{},"Spreadsheet you kept",[92,1181,1182],{},"Whatever you recorded",[92,1184,1185],{},"Strong if kept as you went",[75,1187,1188,1191,1194],{},[92,1189,1190],{},"Calendar",[92,1192,1193],{},"Dates and destinations of meetings",[92,1195,1196],{},"Good corroboration",[75,1198,1199,1201,1204],{},[92,1200,1119],{},[92,1202,1203],{},"Which client, which week",[92,1205,1196],{},[75,1207,1208,1210,1213],{},[92,1209,1125],{},[92,1211,1212],{},"Where you were, when",[92,1214,1215],{},"Places you at a location on a date",[75,1217,1218,1221,1224],{},[92,1219,1220],{},"Odometer at MOT",[92,1222,1223],{},"Total miles for the year",[92,1225,1226],{},"Bounds the whole reconstruction",[75,1228,1229,1232,1235],{},[92,1230,1231],{},"Memory alone",[92,1233,1234],{},"Very little",[92,1236,1237,1240],{},[39,1238,1239],{},"Weakest"," — avoid relying on it",[11,1242,1243],{},"A reconstruction that agrees with three of these is defensible. One built only from the last row is\nnot, and is better left out.",[15,1245,1247],{"id":1246},"then-close-the-gap-for-good","Then close the gap for good",[11,1249,1250],{},"Once the history is in, turn on departure detection so the recording stops depending on you remembering. The reason to do this today rather than in April is that this is the exact situation you are trying not to repeat.",[15,1252,199],{"id":198},[33,1254,1255,1260,1265],{},[36,1256,1257],{},[205,1258,210],{"href":207,"rel":1259},[209],[36,1261,1262],{},[205,1263,217],{"href":215,"rel":1264},[209],[36,1266,1267],{},[205,1268,563],{"href":561,"rel":1269},[209],{"title":219,"searchDepth":220,"depth":220,"links":1271},[1272,1273,1274,1275,1276,1277],{"id":1066,"depth":220,"text":1067},{"id":1095,"depth":220,"text":1096},{"id":1102,"depth":220,"text":1103},{"id":1142,"depth":220,"text":1143},{"id":1246,"depth":220,"text":1247},{"id":198,"depth":220,"text":199},"2025-10-30","You started in October and the tax year began in April. Here is how to make the first half of the year count.","Import and export options in Milesheet",{},"\u002Fblog\u002Fgetting-a-year-of-history-in",{"title":1058,"description":1279},"blog\u002Fgetting-a-year-of-history-in",[242,584,793],"i9ex2tAi1rO9lwbXdRgSoxht971aHXYw-t5ItePOtdc",{"id":4,"title":5,"author":6,"body":1288,"category":228,"date":229,"description":230,"draft":231,"extension":232,"image":233,"imageAlt":234,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":1436,"navigation":236,"path":238,"readTime":220,"seo":1437,"stem":240,"tags":1438,"__hash__":245},{"type":8,"value":1289,"toc":1428},[1290,1292,1294,1296,1298,1300,1302,1320,1322,1324,1394,1396,1398,1402,1406,1410,1412,1414,1416],[11,1291,13],{},[15,1293,18],{"id":17},[11,1295,21],{},[11,1297,24],{},[15,1299,28],{"id":27},[11,1301,31],{},[33,1303,1304,1308,1312,1316],{},[36,1305,1306,42],{},[39,1307,41],{},[36,1309,1310,48],{},[39,1311,47],{},[36,1313,1314,54],{},[39,1315,53],{},[36,1317,1318,60],{},[39,1319,59],{},[11,1321,63],{},[15,1323,67],{"id":66},[69,1325,1326,1336],{},[72,1327,1328],{},[75,1329,1330,1332,1334],{},[78,1331],{},[78,1333,82],{},[78,1335,85],{},[87,1337,1338,1346,1356,1366,1374,1384],{},[75,1339,1340,1342,1344],{},[92,1341,94],{},[92,1343,97],{},[92,1345,100],{},[75,1347,1348,1350,1352],{},[92,1349,105],{},[92,1351,108],{},[92,1353,1354],{},[39,1355,113],{},[75,1357,1358,1360,1362],{},[92,1359,118],{},[92,1361,121],{},[92,1363,1364],{},[39,1365,126],{},[75,1367,1368,1370,1372],{},[92,1369,131],{},[92,1371,134],{},[92,1373,137],{},[75,1375,1376,1378,1380],{},[92,1377,142],{},[92,1379,145],{},[92,1381,1382],{},[39,1383,150],{},[75,1385,1386,1388,1390],{},[92,1387,155],{},[92,1389,158],{},[92,1391,1392],{},[39,1393,163],{},[11,1395,166],{},[15,1397,170],{"id":169},[11,1399,1400,176],{},[39,1401,175],{},[11,1403,1404,182],{},[39,1405,181],{},[11,1407,1408,188],{},[39,1409,187],{},[15,1411,192],{"id":191},[11,1413,195],{},[15,1415,199],{"id":198},[33,1417,1418,1423],{},[36,1419,1420],{},[205,1421,210],{"href":207,"rel":1422},[209],[36,1424,1425],{},[205,1426,217],{"href":215,"rel":1427},[209],{"title":219,"searchDepth":220,"depth":220,"links":1429},[1430,1431,1432,1433,1434,1435],{"id":17,"depth":220,"text":18},{"id":27,"depth":220,"text":28},{"id":66,"depth":220,"text":67},{"id":169,"depth":220,"text":170},{"id":191,"depth":220,"text":192},{"id":198,"depth":220,"text":199},{},{"title":5,"description":230},[242,243,244],{"id":1440,"title":1441,"author":6,"body":1442,"category":228,"date":1653,"description":1654,"draft":231,"extension":232,"image":1655,"imageAlt":1656,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":1657,"navigation":236,"path":1658,"readTime":580,"seo":1659,"stem":1660,"tags":1661,"__hash__":1663},"blog\u002Fblog\u002Fwhat-milesheet-does-when-you-force-quit.md","What happens to your trip if you swipe the app away",{"type":8,"value":1443,"toc":1644},[1444,1447,1451,1454,1457,1461,1464,1472,1476,1482,1488,1491,1497,1501,1504,1508,1617,1620,1624,1627,1630,1632],[11,1445,1446],{},"Any app that records in the background has the same weakness: the operating system, or the user, can stop it. What separates a trustworthy mileage log from an unreliable one is what happens next.",[15,1448,1450],{"id":1449},"the-thing-people-do-without-thinking","The thing people do without thinking",[11,1452,1453],{},"Swipe up in the app switcher to \"close\" apps. It feels like tidying. On iOS it is also an explicit instruction that the app should stop doing everything, including background location, and the system honours it.",[11,1455,1456],{},"So a trip that was recording stops recording, silently, mid-journey.",[15,1458,1460],{"id":1459},"why-the-app-cannot-simply-carry-on","Why the app cannot simply carry on",[11,1462,1463],{},"It cannot. That is the point of the gesture, and no amount of clever engineering gets around it — an app that could ignore being force-quit would be a considerably worse thing to have on your phone.",[11,1465,1466,1467,1471],{},"What an app ",[1468,1469,1470],"em",{},"can"," do is notice, tell you, and not lose what it already had.",[15,1473,1475],{"id":1474},"what-milesheet-does","What Milesheet does",[11,1477,1478,1481],{},[39,1479,1480],{},"Every point is written as it arrives."," Not buffered in memory and saved at the end. If recording stops at any moment, everything up to that moment is already on disk.",[11,1483,1484,1487],{},[39,1485,1486],{},"A dead-man's switch."," While a trip records, the app keeps deferring a scheduled notification. If it stops deferring — because it is no longer running — the notification fires a few minutes later and tells you the drive is no longer being recorded.",[11,1489,1490],{},"That is deliberately backwards from how notifications usually work. Nothing has to run in order to warn you, because the thing that has failed is the thing that would have sent the warning.",[11,1492,1493,1496],{},[39,1494,1495],{},"Recovery on next launch."," Open the app afterwards and it finds the interrupted trip and offers three choices: carry on recording, save what it has, or bin it. It does not decide for you, and it does not quietly discard a partial journey.",[15,1498,1500],{"id":1499},"android-differs","Android differs",[11,1502,1503],{},"On Android a recording trip shows an ongoing notification with a Stop button, so the fact it is running is visible the whole time. Swiping the app out of recents can still stop it, and some manufacturers are more aggressive about background apps than others, so the same watchdog applies.",[15,1505,1507],{"id":1506},"what-survives-what","What survives what",[69,1509,1510,1526],{},[72,1511,1512],{},[75,1513,1514,1517,1520,1523],{},[78,1515,1516],{},"Event",[78,1518,1519],{},"Recording continues?",[78,1521,1522],{},"Data kept?",[78,1524,1525],{},"You are told?",[87,1527,1528,1540,1551,1566,1584,1595,1606],{},[75,1529,1530,1533,1535,1537],{},[92,1531,1532],{},"Screen off, phone in pocket",[92,1534,137],{},[92,1536,137],{},[92,1538,1539],{},"—",[75,1541,1542,1545,1547,1549],{},[92,1543,1544],{},"Another app in the foreground",[92,1546,137],{},[92,1548,137],{},[92,1550,1539],{},[75,1552,1553,1556,1558,1563],{},[92,1554,1555],{},"Phone restarted",[92,1557,100],{},[92,1559,1560],{},[39,1561,1562],{},"Yes, up to that point",[92,1564,1565],{},"Yes, on next launch",[75,1567,1568,1571,1575,1579],{},[92,1569,1570],{},"App swiped away in the switcher",[92,1572,1573],{},[39,1574,100],{},[92,1576,1577],{},[39,1578,1562],{},[92,1580,1581],{},[39,1582,1583],{},"Yes, within minutes",[75,1585,1586,1589,1591,1593],{},[92,1587,1588],{},"App crashes",[92,1590,100],{},[92,1592,1562],{},[92,1594,1565],{},[75,1596,1597,1600,1602,1604],{},[92,1598,1599],{},"Battery dies",[92,1601,100],{},[92,1603,1562],{},[92,1605,1565],{},[75,1607,1608,1611,1613,1615],{},[92,1609,1610],{},"Location permission revoked mid-trip",[92,1612,100],{},[92,1614,1562],{},[92,1616,137],{},[11,1618,1619],{},"The column that matters is the middle one. In every case the journey so far is already on disk,\nbecause points are written as they arrive rather than held in memory until the end.",[15,1621,1623],{"id":1622},"what-this-means-in-practice","What this means in practice",[11,1625,1626],{},"Assume it will happen occasionally, because it will. The measure of the app is not that it never gets interrupted — it is that an interruption costs you a notification and a tap, rather than a journey you only discover is missing in April.",[11,1628,1629],{},"The wider principle: if a mileage log can lose data silently, you cannot trust any of it, because you have no way of knowing which journeys are missing.",[15,1631,199],{"id":198},[33,1633,1634,1639],{},[36,1635,1636],{},[205,1637,210],{"href":207,"rel":1638},[209],[36,1640,1641],{},[205,1642,217],{"href":215,"rel":1643},[209],{"title":219,"searchDepth":220,"depth":220,"links":1645},[1646,1647,1648,1649,1650,1651,1652],{"id":1449,"depth":220,"text":1450},{"id":1459,"depth":220,"text":1460},{"id":1474,"depth":220,"text":1475},{"id":1499,"depth":220,"text":1500},{"id":1506,"depth":220,"text":1507},{"id":1622,"depth":220,"text":1623},{"id":198,"depth":220,"text":199},"2025-05-15","The failure mode every background-recording app has, and what an honest one does about it.","\u002Fshots\u002Ftrack.png","A trip recording on the Track screen in Milesheet",{},"\u002Fblog\u002Fwhat-milesheet-does-when-you-force-quit",{"title":1441,"description":1654},"blog\u002Fwhat-milesheet-does-when-you-force-quit",[242,1662,243],"reliability","kcid_X97u0OniHBp8bxYq3oqQVBUsb1GWC75f9R6MdM",{"id":1665,"title":1666,"author":6,"body":1667,"category":228,"date":1885,"description":1886,"draft":231,"extension":232,"image":1887,"imageAlt":1888,"imageCredit":235,"imageCreditUrl":235,"imageIsScreenshot":236,"meta":1889,"navigation":236,"path":1890,"readTime":580,"seo":1891,"stem":1892,"tags":1893,"__hash__":1896},"blog\u002Fblog\u002Fhow-gps-distance-is-measured.md","Why your app's mileage never quite matches your odometer",{"type":8,"value":1668,"toc":1875},[1669,1672,1676,1679,1685,1689,1692,1695,1699,1705,1711,1717,1721,1728,1731,1735,1827,1830,1834,1837,1844,1847,1851,1854,1856],[11,1670,1671],{},"Record a journey on a phone and compare it with the trip meter and the two will not agree. Usually the phone reads slightly low. Sometimes it reads high. Here is why, and which to trust.",[15,1673,1675],{"id":1674},"how-a-phone-measures-distance","How a phone measures distance",[11,1677,1678],{},"It does not measure distance. It measures a series of positions and adds up the straight lines between them.",[11,1680,1681,1682,1073],{},"If a fix arrives every few seconds, each segment is a chord across a slight curve rather than the curve itself. Over a straight motorway that is negligible. Over a twisting lane it accumulates, and the app reads ",[39,1683,1684],{},"short",[15,1686,1688],{"id":1687},"why-it-sometimes-reads-long","Why it sometimes reads long",[11,1690,1691],{},"The opposite problem: GPS positions have error, and a stationary or slow-moving phone can appear to wander. Add up enough small spurious movements and you have invented distance that never happened.",[11,1693,1694],{},"This is worst in cities — tall buildings reflect signals and produce positions that jump — and at the start of a journey before the fix has settled.",[15,1696,1698],{"id":1697},"what-a-good-app-does-about-it","What a good app does about it",[11,1700,1701,1704],{},[39,1702,1703],{},"Filters points."," Reject fixes with poor reported accuracy, and reject implied speeds that are impossible for a car. Milesheet drops anything implying more than about 55 m\u002Fs, because a position jump is far more likely than a genuine 120 mph.",[11,1706,1707,1710],{},[39,1708,1709],{},"Ignores movement below a threshold",", so a phone sitting in a cup holder at traffic lights does not accrue distance.",[11,1712,1713,1716],{},[39,1714,1715],{},"Samples often enough",", so the chords stay short. Recording every few seconds while driving is the compromise between accuracy and battery.",[15,1718,1720],{"id":1719},"why-the-odometer-is-not-perfect-either","Why the odometer is not perfect either",[11,1722,1723,1724,1727],{},"Car odometers are legally permitted a tolerance, and they typically read ",[39,1725,1726],{},"slightly high"," — a few per cent is normal. That comes from how they are calibrated and from tyre wear: a worn tyre has a smaller rolling radius, turns more times per mile, and reports more distance than you covered.",[11,1729,1730],{},"So the two numbers disagree partly because the phone reads low and partly because the car reads high.",[15,1732,1734],{"id":1733},"why-the-two-numbers-differ","Why the two numbers differ",[69,1736,1737,1750],{},[72,1738,1739],{},[75,1740,1741,1744,1747],{},[78,1742,1743],{},"Source of error",[78,1745,1746],{},"Direction",[78,1748,1749],{},"Typical size",[87,1751,1752,1766,1777,1790,1803,1815],{},[75,1753,1754,1757,1763],{},[92,1755,1756],{},"Straight lines between GPS fixes",[92,1758,1759,1760],{},"App reads ",[39,1761,1762],{},"low",[92,1764,1765],{},"0–2%, worse on twisty roads",[75,1767,1768,1771,1774],{},[92,1769,1770],{},"Poor fixes in cities, tunnels",[92,1772,1773],{},"Either way",[92,1775,1776],{},"Variable",[75,1778,1779,1782,1787],{},[92,1780,1781],{},"Drift while stationary",[92,1783,1759,1784],{},[39,1785,1786],{},"high",[92,1788,1789],{},"Small, if unfiltered",[75,1791,1792,1795,1800],{},[92,1793,1794],{},"Odometer calibration tolerance",[92,1796,1797,1798],{},"Car reads ",[39,1799,1786],{},[92,1801,1802],{},"Up to a few %",[75,1804,1805,1808,1812],{},[92,1806,1807],{},"Tyre wear reducing rolling radius",[92,1809,1797,1810],{},[39,1811,1786],{},[92,1813,1814],{},"~1–2% on worn tyres",[75,1816,1817,1820,1824],{},[92,1818,1819],{},"Larger aftermarket tyres",[92,1821,1797,1822],{},[39,1823,1762],{},[92,1825,1826],{},"Varies",[11,1828,1829],{},"The net effect for most drivers is the app reading 1–3% below the trip meter, which is\napproximately the trip meter's own optimism.",[15,1831,1833],{"id":1832},"which-one-to-use-for-a-claim","Which one to use for a claim",[11,1835,1836],{},"For journeys, the GPS record — because it comes with the date, the route and the times, which is what HMRC's expectation of a mileage record is about. A distance without a journey attached is not a record.",[11,1838,1839,1840,1843],{},"For ",[39,1841,1842],{},"fuel economy",", use the odometer, because it is measuring the same thing consistently between two fill-ups and small errors cancel out over a full tank.",[11,1845,1846],{},"That is why Milesheet uses GPS for trips and odometer readings for MPG. They are different jobs, and the right instrument differs.",[15,1848,1850],{"id":1849},"and-when-they-disagree-a-lot","And when they disagree a lot",[11,1852,1853],{},"A large gap between your odometer and your logged journeys usually is not measurement error — it is unrecorded driving. Milesheet compares the two and flags stretches where the odometer moved further than the log explains, which is a much more useful signal than a percentage discrepancy.",[15,1855,199],{"id":198},[33,1857,1858,1863,1868],{},[36,1859,1860],{},[205,1861,210],{"href":207,"rel":1862},[209],[36,1864,1865],{},[205,1866,563],{"href":561,"rel":1867},[209],[36,1869,1870],{},[205,1871,1874],{"href":1872,"rel":1873},"https:\u002F\u002Fwww.gov.uk\u002Fgetting-an-mot",[209],"GOV.UK — Getting an MOT",{"title":219,"searchDepth":220,"depth":220,"links":1876},[1877,1878,1879,1880,1881,1882,1883,1884],{"id":1674,"depth":220,"text":1675},{"id":1687,"depth":220,"text":1688},{"id":1697,"depth":220,"text":1698},{"id":1719,"depth":220,"text":1720},{"id":1733,"depth":220,"text":1734},{"id":1832,"depth":220,"text":1833},{"id":1849,"depth":220,"text":1850},{"id":198,"depth":220,"text":199},"2025-05-08","GPS drift, straight lines between points, and which of the two numbers is actually right.","\u002Fshots\u002Ffuel.png","Real-world economy and odometer readings in Milesheet",{},"\u002Fblog\u002Fhow-gps-distance-is-measured",{"title":1666,"description":1886},"blog\u002Fhow-gps-distance-is-measured",[242,1894,1895],"gps","accuracy","iEv801x-bwPaVBS5gdnQRTa1DQX9non2jozyw1DqoRo",1787360708115]