A constraint-driven bike route and loop planner
Pick a rider profile (with kids, relaxed, or anything), set your surface and separation constraints, and Trazo plans an A to B route or a distance-targeted loop on a stress-aware map. It runs entirely in the browser, with turn-by-turn directions and GPX export. Live today in Fort Collins, Colorado.
Most bike directions optimize for fastest. Almost none optimize for how safe or pleasant the ride actually feels. Trazo plans around traffic stress, surface, and separation, so the route fits the rider, not the other way around.
Open any mapping app, ask for cycling directions, and you get the fastest line from A to B. That answer is fine if you are a confident commuter on a road bike. It is the wrong answer for a parent towing a kid trailer, a relaxed weekend rider, or anyone who would rather add a mile than share a lane with 45 mph traffic.
The information that actually decides whether a ride is comfortable is mostly invisible in those apps. Is this a protected path or a painted line next to moving cars? Is the surface paved or loose gravel? Does this trail actually connect, or does it dump you onto a busy arterial halfway through? And sometimes the goal is not a destination at all. It is a loop: "give me a pleasant 10 miles that brings me back home."
The real question for many riders is not what is the fastest way there. It is what is the calmest way there, on the surface I want, and can you bring me back if I just want to ride.
Trazo started from that gap. The first city was Fort Collins, Colorado: a flat valley with an unusually connected web of trails, which made it the perfect place to prove that a comfort-first route planner could be genuinely useful.
Trazo turns those invisible factors into the inputs you plan with. You tell it who is riding and what you will tolerate, and it does the rest.
One tap picks the comfort level: With kids (only the calmest, separated paths), Relaxed (low-stress streets and trails), or Anything (the network is yours). The profile reshapes every route Trazo returns.
Choose how far you want to stay from cars (off-street only, quiet streets, or busy roads OK) and which surfaces you will ride (paved only, or paved plus gravel and dirt). A "prefer flat" toggle favors a gentler climb.
Plan point-to-point with optional waypoints and a there-and-back option, or switch to Loop mode, set a target distance, and Trazo generates a ride that comes back to where you started. Loops are the answer to "I just want to ride for a while," not "get me somewhere."
Every route comes with turn-by-turn directions, an elevation profile, and busy-crossing alerts. Export the route as GPX to take it onto a head unit or another app, or follow it in-app with voice cues.
The whole map is colored by stress, surface, and separation, so you can read the city at a glance. Filter it down to "show me only the paths I would actually ride," and the noise disappears. Pit stops (water, restrooms, bike shops, cafes) and featured local spots ride along.
Each market is its own bundle. Fort Collins is live; Hilton Head and the Triangle exist in the same architecture. New cities slot in without forking the app.
The hard part of Trazo is not drawing lines on a map. It is encoding what "comfortable" means into data, then routing on it fast enough to feel instant. A few decisions shaped the product:
A routing graph that knows how a road feels. A build pipeline takes OpenStreetMap data and classifies every edge by surface (paved or soft), facility type, separation (off-street, roadside, or on-road), and a Level of Traffic Stress rating. That classification is the product. It is what lets a "with kids" route differ from an "anything" route over the exact same streets.
Comfort-first routing, owned end to end. Routing uses a custom Dijkstra engine weighted by that stress and surface data, plus loop generation for distance-targeted rides. Trazo does not lean on a third-party routing service, because the comfort weighting is the whole point. Owning the engine means tuning our own knobs, not someone else's.
A colored overlay from open city data. The stress-and-surface map you read at a glance is rendered from the routing graph, enriched with city GIS open data for bike facilities and trails. The result is a map that explains itself before you have planned anything.
Static hosting, one app per city by path. Trazo is a MapLibre GL web app served as static files on Cloudflare Pages, with a path-based per-city structure so a new market is a new bundle, not a new codebase. No app store, no install, no signup to plan a ride.
One deliberate piece of honesty: the stress and separation ratings are inferred from open data, not field-verified. Trazo says so, plainly. It is guidance, and you verify safety yourself. A route planner that quietly implied "this is guaranteed safe" would be making a promise it cannot keep, especially to the parent it is trying to serve.
Plenty of apps will draw a bike route. The difference is what they optimize for.
They will happily route a kid trailer down a four-lane arterial because it shaves two minutes. They do not know, or care, whether a segment is a protected path or a painted line beside moving traffic. Trazo treats that difference as the whole point.
Heatmaps and segments are great for athletes chasing times. They do not answer "what is the calmest way to get my family across town," and they assume you already know where you are going.
Pick who is riding, and every route is filtered by traffic stress, surface, and separation. Ask for a distance-targeted loop and it brings you back home. No account, no subscription, no app to install. Just a map that already speaks the language of how a ride actually feels.
A comfort-first take on bike routing: pick who is riding, set your constraints, and get a route that actually fits the day. Live on the web, no install required.