Any event, any country. Drop your route GPX, drop or paste the organiser’s control table, and get an honest cutoff check, a day-by-day plan built around a consistent wake-up time, a climb allowance in your own numbers, an hours-in-darkness breakdown, and Garmin course files split by day. Everything runs in your browser — your route file is never uploaded.
works something out — press these會計算 — 這些要按writes a file產生檔案optional可選,不按也可以Every i hides a note — hover the small ones, click the ones on headings.每個 i 都藏著說明 — 小的滑過即見,標題上的按一下展開。
1Route GPX路線 GPX
Drop your route .gpx here, or tap to choose a file把路線 .gpx 拖到這裡,或點擊選擇檔案
Nothing loaded yet. The file stays on your device.尚未載入。檔案只留在你的裝置上。
2Official control card官方打卡點時間表drop a sheet, or paste拖入檔案或貼上
Drop a .xlsx, .csv or .tsv control card here, or tap to choose — or just paste into the box below把 .xlsx、.csv 或 .tsv 時間表拖到這裡,或點擊選擇 — 也可以直接貼進下面的框
Paste it however it comes out — Excel, a web table, a PDF, or typed off a photo — or drop the spreadsheet straight onto the box above. Columns can be in any order and separated by anything. Specifically, it copes with:
• Two distance columns. Cards quote the leg distance next to the running total. It works out which one climbs in order and uses that; the Leg column in the preview lets you check the gaps look right.
• Rows split over several lines. PDF and image tables wrap the venue name and the closing time onto their own lines; those get glued back onto the control above.
• Labelled times. If the card writes open / close (or 開門 / 關門), that beats column order — so a row quoting only an opening time is not mistaken for a cutoff.
• Wall-clock times with no dates, including cards that run past midnight on an evening start, plus thousands separators (1,010), partial-in-brackets ((223KM) 223KM), running control numbers, and rows with no times at all such as 24-hour controls.
• Real Excel time cells. A dropped .xlsx has its date and time cells converted back to HH:MM rather than arriving as decimal serial numbers, and the file is decoded properly whether it was saved as UTF-8, UTF-16 or a Chinese codepage.
First row should be the start (km 0), last row the finish. Anything that is not a control — a heading, a distance lifted off the poster — can be struck out with the × button in the preview. Paste nothing and the tool falls back to a flat total ÷ limit cutoff line, which is close enough to sketch a plan and nowhere near close enough to bet a 1200 on.
These fill themselves in where the card allows it: distance and limit come from the last row, and the start comes from the card too if it quotes full dates. Type over anything and the tool stops overwriting that field. Prefer the card distance to the GPX distance — they usually differ by a few hundred metres, and every control kilometre is measured against the card.
This is elapsed hours including food, photos, faff and mechanicals — not rolling speed. 6.0 h/100 km is roughly 18–19 km/h rolling with normal control stops. Fatigue drift compounds by day: set 1.5 and day 5 runs 6% slower than day 1. Quote the pace you ride on flat ground and let the climb allowance below carry the hills — the per-day ascent column in the day splits tells you which days the allowance is actually landing on.
Climb allowance爬升時間補償your legs, your numbers你的腿,你的數字
The tool measures the route, chops it into 10 km blocks, works out how much each block climbs per 100 km, and applies your extra minutes to the blocks that qualify. Only the bands this route actually reaches get a box — a flat 400 offers you none, a mountain 1200 offers you all four. The allowance is charged to the kilometres that earn it, so one hard day absorbs its own cost instead of the whole event being slowed evenly.
The threshold is per 100 km, so a 10 km block needs 100 m of ascent — not 1,000 m — to reach the 1,000 m/100 km band. A day can total 2,000 m and be charged nothing if it is spread thinly enough, and a day totalling 800 m can be charged if it is packed into a few steep blocks.
The defaults are a rule of thumb, not a calculation: 20 minutes per 100 km for every extra 500 m of ascent per 100 km, counting from 1,000 m. The first 1,000 m per 100 km is free because a normal flat pace already absorbs it — roughly the 11 m/km at which ACP and LRM themselves start granting extra time.
Change them. Two riders on the same col differ by an hour, and these are the single biggest lever on the whole plan. Ride a hilly 200 with a computer, compare it against your flat pace, and put your own figure in. Default puts the rule of thumb back.
One per line: km, hours [, what it is]. Hours take a decimal — 0.75 is 45 minutes.
A delay is treated as happening immediately after you reach that kilometre, so the ETA shown for a control sitting on the ferry slip is your arrival at the slip, and every control after it is pushed back by the crossing. Everything downstream follows automatically: the cutoff check, the day splits, the course-point times written into the FIT files, and the sleep-stop suggestions.
Put the scheduled sailing in here rather than in your pace. A ferry does not get slower because you are tired, and burying it in the pace figure spreads a fixed 90 minutes across the whole route where it does nothing useful. If a delay lands exactly on a day boundary it is charged to the following morning, which is the honest reading: you sleep first, then queue for the boat.
每行一項:公里, 小時 [, 說明]。小時可用小數 — 0.75 即 45 分鐘。
延誤會被視為在你 到達該公里之後 立即發生,所以碼頭上那個打卡點顯示的仍是你到達碼頭的時間,而之後每一個打卡點都會順延。下游全部自動跟著改:關門時間核算、每日行程、寫進 FIT 檔的路線點時間,以及住宿點建議。
How the days are split, in priority order. The three things you might want are in conflict on any tight event, so they are ranked and the lower one gives way.
1. The same wake-up time every morning. This wins over everything else. A rider who gets up at 05:00 four days running is a different animal from one who gets up at 05:00, then 03:40, then 02:20. So the hotel stop is set to whatever makes the riding-plus-sleeping cycle come to exactly 24 hours, and every roll-out is pinned to your Daily roll-out time. Time the limit does not need is banked as finish margin, not spent on longer sleeps — spending it would push the cycle past 24 h and start moving the alarm. The suggested number of riding days is chosen to land on a 24 h cycle wherever one exists, even when the clock would allow an extra day.
2. Climb-adjusted riding time spread evenly. Every day gets the same number of hours on the bike, measured after the climb allowance and any transfers are added. Where a fixed wake-up is impossible — a 1200 in 90 hours cannot be ridden on a 24 h cycle, and no arithmetic will make it so — the cycle is held constant instead, so the roll-out moves by the same amount every morning rather than lurching about.
3. Distance per day is whatever falls out, and is deliberately not levelled. Equal hours mean unequal kilometres, and that is the point: a day carrying 2,000 m of climbing or a ferry crossing buys fewer kilometres with its hours than a flat day does. Levelling the distance instead is what produces the classic broken schedule — a gentle first day and a mountain stage on day three that quietly runs six hours long.
Two consequences worth knowing. Snapping a stop onto a control shifts the hours slightly; when the wake-up is pinned, that difference is absorbed by the hotel stop rather than the alarm. And every suggested stop is written out with its roll-out timestamp, so nothing here is hidden.
Riding straight through? A 200, 300, 400 or 600 is normally ridden in one go, and many events forbid sleeping outright. Leave the box below empty, or press Ride straight through, and everything downstream still works: the cutoff check, the ETAs, the course points and the FIT files. On an overnight ride the section that then matters most is Darkness — it tells you when the sun goes down, where you will be, and how high you will be when it is coldest.打算一口氣騎完?200、300、400 或 600 通常都是不睡覺一次過完成,而且不少賽事根本禁止住宿。把下面的框留空,或按 一口氣騎完,其餘功能照樣運作:關門核算、預計到達時間、路線點和 FIT 檔案。通宵騎行時最重要的一段是 黑夜分析 — 它會告訴你太陽何時下山、那時你在哪裡,以及最冷的時候你身處多高。
Sleep stops住宿點— one per line: km, short name [, notes] [, YYYY-MM-DDTHH:MM roll-out]— 每行一個:公里, 簡稱 [, 備註] [, YYYY-MM-DDTHH:MM 出發時間]
Sleep stops are your hotels — they need not sit on a control, though it is worth a lot when they do: you eat, get the card stamped and sleep in one stop, and sleeping after checking in turns a thin margin into a fat one.
Riding days is filled in for you with the count that best satisfies the priority order above — that is what the auto badge means. Type your own number and the badge goes out and the tool stops touching the field; press Use suggested to hand both it and the finish buffer back.
Every suggested stop is written out with an explicit roll-out timestamp, so nothing is hidden. Edit any of them by hand and press Recalculate schedule; delete the timestamp and that stop falls back to your Daily roll-out time.
Timeline時間軸— every control, sleep stop and transfer, in the order you meet them— 所有打卡點、住宿點與接駁,按你遇到的次序排列
One row per thing that happens, in kilometre order.
• Control rows compare your arrival against the card. The margin is arrival against closing.
• Sleep rows show when you arrive, how long you are off the bike, and when you roll out. Their margin is the roll-out margin — how far ahead of the closing line you are at that kilometre at the moment you get back on the bike, which is a different and far more dangerous number than the one you arrived with. This is where brevets are actually lost. The cutoff clock does not sleep.
• Transfer rows show a fixed delay being spent. Everything below one is pushed back by it.
Some organisers record only arrival, so leaving after a control shuts is harmless; under strict ACP practice it is fatal. Ask, do not assume.
Sunrise and sunset are computed for your actual position and date at every point of the plan, so these are the hours you will ride in the dark on this route — not a generic figure. On a 400 or a 600 ridden straight through, this is usually the single most useful number on the page. The coldest moment of any brevet is high ground in the small hours, so that crossing is called out separately.
Smoothing (m) — the elevation trace is resampled onto a 25 m grid and then averaged over a window this wide. Barometric and SRTM data is noisy, and without smoothing every metre of GPS wobble is counted as ascent. 300 m is a sane default for road routes; drop to 100–150 m if you want short sharp ramps to survive, raise it to 500 m if the total looks absurd.
Min gain (m) — how much a rise has to gain before it is listed as a climb at all.
Drop tolerance (m) — how much height a climb may give back part-way up while still counting as one climb.
Total ascent is very sensitive to smoothing — at 100 m it may read 40% higher than at 500 m. Neither figure is wrong, so always quote the window alongside the number. Changing it also moves the band boundaries your climb allowance is measured against, so set it once and leave it. ACP and LRM grant extra time only above roughly 11 m of ascent per km.
Garmin shows roughly 10 characters / 15 UTF-8 bytes of a course-point name — the byte column flags anything over budget. Names are hhmm then the place, so the device tells you the time you ought to be there. Controls carry their card number (1922 C1Barfl) so you can match the head unit against the brevet card without thinking. If your names use a non-Latin script, set the device display language to match, or they render as tofu boxes. Edit any name in the table — your edits survive a rebuild, and a save file carries them too. Climb summits come from the section above, which is why it now sits first.
Garmin riders: use the .FIT files. A GPX <wpt> is not a course point — copied to the device it becomes a saved Location, a map pin that never appears in the Course Points list and never counts down distance to the next control. And do not route any of these through Garmin Connect: Connect strips course points out of everything you import, FIT included.用 Garmin 的車友請用 .FIT 檔。GPX 的 <wpt>不是 路線點 — 複製到錶上只會變成一個「位置」書籤,不會出現在 Course Points 清單,也不會倒數到下一個打卡點的距離。另外 千萬不要經 Garmin Connect 匯入:Connect 會把所有匯入檔案(連 FIT 在內)的路線點全部刪掉。
Loading a FIT: USB → copy into GARMIN\NewFiles\ → eject → restart the head unit → Navigation → Courses → Course Points. Test one day file on a short ride before you trust the set.
Everyone else — Wahoo, Hammerhead, Bryton, phone apps, or you just want the route on a map — take the GPX. It carries the full track plus every course point as a named waypoint, which is as good as those platforms get.
Max track points. Course points are never thinned — every control, sleep stop and summit goes in whatever this is set to. This only governs how finely the line itself is drawn. Head units filter or truncate over-long courses rather than telling you; on an Edge 530 that starts somewhere above roughly 8,000 points. But thin it too far and the device cuts corners, beeps off-course at every hairpin, and distance-to-next drifts short. Aim for a point every 25–50 m on anything you will navigate by; the readout beside the box tells you what your setting works out at.
The full-route file carries your real ETAs, which means it also carries the overnight gaps — the head unit reads it as one enormous ride and any Virtual Partner becomes meaningless. Ride from the per-day files. Each is re-based to 0 km so “distance remaining” counts down to tonight’s bed, and each keeps the previous night’s stop as its first course point so you can check the clock before rolling out.
11Save & restore儲存與還原so you never type this twice同樣的東西不用輸入兩次
Drop a saved .json plan here to put everything back, or tap to choose把已儲存的 .json 規劃檔拖到這裡即可全部還原,或點擊選擇
What goes in. Every box on this page: the event, the pasted control card and the three parsing options, your pace, fatigue drift, roll-out time and minimum stop, all four climb-allowance bands, your transfers, the sleep stops with their roll-out timestamps, the riding days and finish buffer including whether you set them or the tool did, the climb-detection settings, the course-point options and the track-point budget. Your hand edits come too — renamed course points, renamed control short names, and any row you struck out of the card with the × button.
The route. With the box ticked the GPX text is embedded, so restoring is a single drop and the file is self-contained — expect a few megabytes. Untick it and the file is a few kilobytes, but you will have to drop the GPX again yourself afterwards.
What does not go in. Nothing that can be recomputed: the schedule, the timeline, the climb analysis, the course points and the FIT files are all rebuilt from the inputs the moment you restore.
It is a plain JSON file on your own device. Nothing is uploaded and nothing is kept on this site — close the tab, clear your browser, come back on another computer, and the file still restores. Keep it next to the GPX.
Check everything against the organiser’s own control card before you ride. This planner is a calculator, not an authority: it works from the numbers you type in, and a single mistyped closing time changes every result on the page without looking wrong. Cutoff rules, whether departure as well as arrival is recorded, and any bonus time for ascent all vary by organiser — confirm them directly. The climb allowance is your own estimate, not a measurement; set it from your own riding.