Organizing Your Tracks with Smart Folders
A September morning in Vancouver. More than a thousand riders roll out of Stanley Park for the RBC GranFondo Whistler: 122 kilometres of the Sea to Sky Highway, closed to traffic, with Howe Sound on one side and the mountains on the other. Past Squamish, the road starts to climb and keeps climbing all the way to Whistler.
You cross the line near the top of the results, and everyone says the same thing: you were lucky. With the weather, the wind, the group.
You know better. That result is made of dark February mornings on the seawall, Sunday climbs up Cypress, and long rides to Squamish and back, all recorded in OsmAnd one track at a time. Let’s see what a season of training looks like once Smart Folders put it in order.

Photo by Ben Guernsey on Unsplash
A Folder That Fills Itself
A training season doesn’t arrive neatly packed. Between the rides sit a few hikes and a drive to Whistler, and the Tracks tab lists everything by date, with no idea which recordings mattered.
A Smart Folder works the other way round: you describe the tracks you want, and OsmAnd collects them. The description is a filter that can check almost anything a track knows about itself, including length, duration, speed, elevation, date, location, activity type, and even heart rate. Set the activity to road cycling, limit the dates from February to race day, save the result as “Road to Whistler”, and the whole season lands in one place while the hikes stay out.
New rides join the folder on their own. The tracks themselves stay where they were, so deleting the folder never deletes a ride.
One catch: activity type is stored in each track, and older recordings may not have one. If some rides are missing, set their activity and refresh the folder.
![]() | ![]() |
One Collection, Many Views
Sixty-seven rides in one folder is tidier than a few hundred, but it’s still a list. Organize by turns that list into groups, sorting the folder by a single parameter: activity, date, location, speed, altitude and elevation, or sensor data such as heart rate. The tracks don’t move anywhere; only the way you look at them changes.
Group the season by nearest city, and you see where the rides began: most of them in Vancouver, a handful from West Vancouver, where the long runs to Squamish set off from Horseshoe Bay, and four from Whistler, once summer made it worth driving up for the climbs. Switch to month and year, and the same folder turns into a calendar, from a cautious February to a crowded August.
Each group shows how many tracks it holds, and empty groups don’t appear at all. Below the list, OsmAnd adds everything up: tracks, distance, climbing, descent, and time in the saddle. It does this for the whole folder and for every group you open. That’s where the season starts answering questions.
![]() | ![]() |
Drawing the Lines Yourself
Months and cities come with natural borders. Distance doesn’t. Is a 55 km ride a long one or just a solid Tuesday? For length, duration, speed, and altitude, OsmAnd lets you decide where one group ends and the next begins.
Pick one of these parameters, and a slider asks for a step size. Drag it, and the groups rearrange behind it as you go. With a 50 km step, most of the season piles into the first group, which is honest but not very revealing. Bring it down to 20 km, and the season sorts itself out: short morning laps along the seawall, a big block of loops around UBC, the climbs on Cypress and Seymour further up, the long runs to Squamish, and, at the very end, two tracks of almost exactly the same length: the course recon in August and the race itself.
Some of this is free for everyone: grouping by activity, year of creation, and nearest city. The rest, including the monthly calendar from the previous section and every parameter with a step size, comes with OsmAnd Pro. Without a subscription, you can still open these options and preview how the tracks would split before deciding. If a subscription ends, the grouping you’ve already applied stays in place, and only changing it requires Pro again.
![]() | ![]() |





