Bicycle Traffic Patterns on Seattle’s Fremont Bridge
How usage changes over time and between weekdays and weekends
Author
Maximiliano Bange
Overview
This analysis explores how bicycle traffic across Seattle’s Fremont Bridge has changed over time, with a focus on differences between weekday and weekend usage. Using publicly available city data, I examined long-term trends and daily patterns to understand how commuting behavior compares to recreational cycling.
Data & Tools
The analysis was conducted in R using tidyverse for data manipulation and visualization, and lubridate for working with dates and time-based patterns.
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.1 ✔ stringr 1.5.2
✔ ggplot2 4.0.0 ✔ tibble 3.3.0
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.1.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lubridate)
Load Data
Load 2012-2025 bicycle data from the Fremont Bridge:
bikes <-read_csv("fremont-bridge-counter.csv")
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
dat <- vroom(...)
problems(dat)
Rows: 112440 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): Date
dbl (3): Fremont Bridge Sidewalks, south of N 34th St Total, Fremont Bridge ...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
bikes |>glimpse()
Rows: 112,440
Columns: 4
$ Date <chr> "…
$ `Fremont Bridge Sidewalks, south of N 34th St Total` <dbl> 2…
$ `Fremont Bridge Sidewalks, south of N 34th St Cyclist West Sidewalk` <dbl> 1…
$ `Fremont Bridge Sidewalks, south of N 34th St Cyclist East Sidewalk` <dbl> 8…
This dataset is available from the Seattle Open Data Portal. Each record represents an hourly count of bicycles crossing the Fremont Bridge since 2012.
Limitations of this data:
Only one bridge is represented, so it doesn’t reflect city-wide cycling.
Direction of travel is inferred by sidewalk (north/south not exact).
Weather, maintenance, and sensor outages may influence counts.
Data Prep
Before analyzing trends, the data was cleaned and transformed to extract useful time variables such as year, month, and day of week. I also added a weekend indicator to distinguish commuting patterns from recreational use.
This graph shows a clear increase in bicycle traffic from 2012 to 2019, reflecting the growth of cycling as a mode of transportation in Seattle. In 2020, counts drop sharply, likely due to the COVID-19 pandemic and changes in commuting behavior. In the years following, traffic begins to recover as activity trends back toward pre-pandemic levels.
bikes |>group_by(year, month) |>summarize(monthly_total =sum(`Fremont Bridge Sidewalks, south of N 34th St Total`, na.rm =TRUE),.groups ="drop" ) |>mutate(ym =make_date(year, as.integer(month), 1)) |>ggplot(aes(x = ym, y = monthly_total)) +geom_line() +scale_x_date(date_breaks ="1 year", date_labels ="%Y") +scale_y_continuous(labels = scales::comma) +labs(title ="Monthly Bicycle Crossings on the Fremont Bridge",subtitle ="Hourly counts aggregated by month, 2012–present",caption ="Data available at https://data.seattle.gov/Transportation/Fremont-Bridge-Bicycle-Counter/65db-xm6k/about_data",x ="Year",y ="Total Bicycle Crossings" )
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_line()`).
This graph shows clear indication of an increase in riders from 2012-2019. This coincides with the large bike riding culture in Seattle and how it continues to grow. In 2020 and subsequent years you can see it hit an all-time low. This is likely linked to the pandemic and its impact on travel habits and pastimes however, you can see it start to increase trying to hit those pre-pandemic numbers.
Analysis of Weekdays vs. Weekends
To explore how cycling behavior differs between weekdays and weekends, I categorized each day by using wday() from lubridate and summed the total crossings.
bikes |>mutate(day_type =if_else(wday(date, label =TRUE) %in%c("Sat", "Sun"),"Weekend", "Weekday")) |>group_by(day_type, year) |>summarize(total_crossings =sum(`Fremont Bridge Sidewalks, south of N 34th St Total`, na.rm =TRUE),.groups ="drop") |>ggplot(aes(x = year, y = total_crossings, fill = day_type)) +geom_col(position ="dodge") +scale_y_continuous(labels = scales::comma) +labs(title ="Weekday vs. Weekend Bicycle Crossings on the Fremont Bridge",subtitle ="Comparing total crossings by year from 2012 to 2025",caption ="Data available at https://data.seattle.gov/Transportation/Fremont-Bridge-Bicycle-Counter/65db-xm6k/about_data",x ="Year",y ="Total Bicycle Crossings",fill ="Day Type") +theme_minimal()
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_col()`).
This comparison highlights a clear divide between weekday and weekend cycling behavior. Weekdays are dominated by commuter traffic, while weekends reflect more recreational use. Notably, weekend traffic shows a smaller decline during the COVID period compared to weekdays, suggesting that while commuting decreased due to remote work, recreational cycling remained relatively stable. This indicates that the overall dip in bicycle traffic was driven more by changes in work patterns than by a loss of interest in cycling.
Conclusions
We can see that this data unveils the patterns in Seattle’s biking culture. Weekdays are primarily overtaken by commuter traffic, while weekends are more casual and represent a “want over need” crowd. Even though overall biking slowed down around COVID, we can see that was largely due to people being put in positions where they had to work from home. Weekend riders still remained consistent and even spiked a bit, potentially due to people trying out new hobbies with their new found free time.
This highlights Seattle’s rich biking culture and shows that to more accurately gain insight into the number of people biking as a hobby in Seattle, it’s best to check out the weekend numbers to filter out the commuters. This doesn’t mean the commuters are fully out of the picture, because they do actually choose biking as a form of commuting. This analysis also shows how the Fremont Bridge serves as a very important path for commuters and how it’s a staple part of the biking culture in Seattle.