Updated · 2026-06-05 snapshot of 2026-06-05

Ticino–Italy border wait times — live today (cross-border guide)

Live status of 24 Ticino–Italy crossings, refreshed every 15 minutes during peak hours.

Crossings tracked
24
Free-flowing
21
Moderate queue
1
Long queue
2
Fastest crossing right now: Chiasso Centro · 1 min

All crossings

CrossingWait minutesSource
Chiasso Centro 1 min Historical averages — live data unavailable
Chiasso Brogeda 16 min Historical averages — live data unavailable
Chiasso Strada 18 min Historical averages — live data unavailable
Maslianico Pizzamiglio 2 min Historical averages — live data unavailable
Maslianico Roggiana Historical averages — live data unavailable
Bizzarone Novazzano 0 min Historical averages — live data unavailable
Ronago Novazzano 0 min Historical averages — live data unavailable
Crociale dei Mulini 0 min Historical averages — live data unavailable
Drezzo Pedrinate 0 min Historical averages — live data unavailable
Lanzo d'Intelvi Arogno 0 min Historical averages — live data unavailable
Campione d'Italia Bissone 2 min Historical averages — live data unavailable
Oria Gandria 1 min Historical averages — live data unavailable
Gaggiolo (Cantello-Stabio) 0 min Historical averages — live data unavailable
San Pietro (Clivio-Stabio) 0 min Historical averages — live data unavailable
Clivio Ligornetto 1 min Historical averages — live data unavailable
Rodero Stabio Historical averages — live data unavailable
Saltrio Arzo 1 min Historical averages — live data unavailable
Ponte Tresa 1 min Historical averages — live data unavailable
Porto Ceresio Brusino 6 min Historical averages — live data unavailable
Cremenaga Ponte Cremenaga 1 min Historical averages — live data unavailable
Luino Fornasette 1 min Historical averages — live data unavailable
Zenna Dirinella 0 min Historical averages — live data unavailable
Biegno Indemini 1 min Historical averages — live data unavailable
Dumenza Cassinone 0 min Historical averages — live data unavailable

This page in other languages

Complete overview of the 24 Ticino–Italy border crossings monitored in real time by our pipeline. Picking the right crossing can save you 20–30 minutes per trip. On weekdays Chiasso-Brogeda and Gaggiolo are the most congested during the commuter peaks 06:30–08:30 (IT→CH direction) and 17:00–19:00 (CH→IT direction). Smaller crossings like Crociale dei Mulini, Drezzo-Pedrinate or Clivio-Ligornetto have lower capacity but queues almost always under 5 minutes — ideal if you want to avoid the motorway backlog.

This page is regenerated automatically on every deploy (typically 4–8 per day). Live readings come from the same pipeline that powers the site's interactive map and the Guide → Border traffic section in our SPA. For each crossing you get a dedicated page with current data, hourly pattern for today, 30-day weekly pattern, live webcam when available (Brogeda, Stabio, Mendrisio, Chiasso) and FAQs focused on commuter traffic behaviour between Ticino and Italy.

Where the numbers come from and how to use them. The "live" reading in the table is the most recent wait-minutes figure, usually refreshed every 15 minutes during peak windows (06:00–10:00 northbound into Ticino and 16:00–20:00 in the reverse direction). The three sources, in priority order, are: the official BAZG (Swiss Federal Customs) page for camera-monitored crossings, the TomTom Traffic API for the road segments approaching the crossing (~5-minute latency), and a static estimate from historical patterns when the other two are silent. The difference between "live" and "static" is explicit on every crossing page: a yellow banner flags whenever the figure is a fallback estimate rather than a real measurement.

What a wait at the crossing actually costs. For a cross-border worker who clears customs five days a week, every additional 10 minutes of queue is worth on average 35–55 EUR/month of opportunity cost (average net hourly wage in Ticino of CHF 28–34 plus fuel burned at idle). A morning with a 30-minute queue instead of the typical 5 minutes at Brogeda at 06:30 therefore costs about 1.80 EUR of extra fuel plus ~12 EUR of lost time. Choosing the right crossing makes a measurable difference: residents of southern Como gain about 8 minutes by picking Bizzarone–Stabio over Chiasso-Brogeda after 07:00 heading to Lugano; those returning in the evening from Mendrisiotto towards Varese often find Gaggiolo smoother than Stabio after 17:30. Combine these wait times with the day's fuel price and the salary simulator to see next week's net commute cost.

How to choose the right crossing for your trip

The numbers in the all 24 Ticino–Italy crossings table (24 crossings) are a Firestore snapshot fed by the TomTom cron (GitHub Actions workflow traffic-scheduler.yml), refreshed every 10–15 minutes during peak windows. When you open the page, a small hydration script requests the freshest reading via REST and swaps every "wait minutes" cell — the pill next to the date flips from "snapshot" to "live (Firestore, upd. HH:MM)". If hydration fails (browser offline, aggressive privacy extensions, corporate networks with strict CSP), you keep seeing the build-time snapshot: reload the page or check the console if you suspect a block.

To pick a crossing, weigh three factors in order: (1) travel time from your origin to the exit (Lugano–Brogeda is ~12 minutes via A2; Mendrisio–Stabio is ~6 minutes via E35); (2) live queue time in the table; (3) crossing type — motorway, main road or local. A motorway crossing with a 12-minute queue is almost always faster than a local one with a 4-minute queue, because the main-road exit has lower capacity and the urban segments add another 5–10 minutes. Commuter rule of thumb: use the motorway on weekdays between 06:00 and 09:30 and after 16:00 only if the live queue is below 8 minutes; above 15 minutes, switching to a local crossing like Bizzarone, Stabio or Crociale dei Mulini is almost always worth it.

Table FAQ

What does "snapshot" vs "live" mean in the pill?

The "snapshot of YYYY-MM-DD" pill is the value at the time of the last deploy (4–8 deploys per day). When hydration completes the Firestore read, the pill flips to "live (Firestore, upd. HH:MM)" and the table numbers refresh to the latest measurements (~5-minute latency from the TomTom poll).

Why do some rows stay at "—" after hydration?

Minor crossings without TomTom or BAZG coverage show "—" until enough statistical data accumulates. In that case the value is a historical average over the last 30 days of observations: the crossing detail page shows the yellow "Historical averages" banner to flag that it is an estimate, not a live measurement.

Discover more