
The Day a Line Hung Over Gwanghwamun — Computing a Course for a Downtown Bike Race
On October 1 I watched a man walk a line 120 m above Gwanghwamun, then came home thinking about events that borrow the city for a day: soapbox races, urban downhill, and the criterium, a bike race that circles a short loop dozens of times. I designed a web app that lays out such a course on a map, keeping as much traffic moving as possible while placing grandstands and ad boards with some logic, and ran a prototype on the real street network around Gwanghwamun.

At lunchtime on October 1, I was in Gwanghwamun. A single line was strung between the Koreana Hotel and the Dong-A Media Center, which face each other across Sejong-daero. It hung 120 m up and ran 160 m long. Jaan Roose, a slackliner from Estonia, walked across it and back. He wore one safety leash. There was no net.
According to a Seoul Metropolitan Government press release, the walk was the headline act of the "2026 Seoul Extreme Sports Festival." Red Bull Korea organized it, the city sponsored it, and it was billed as Korea's first urban highline. Roose told Red Bull he drew inspiration from jultagi, Korea's traditional tightrope walking. In 2024 he crossed 1,074 m over the Bosphorus, and this June he walked roughly 500 m between Warsaw's Palace of Culture and Science and Varso Tower in 30 minutes 7 seconds.
Craning my neck at the line, my eyes drifted down to Sejong-daero beneath it. Any other day that road is packed with cars. That day it was a grandstand. I found myself wishing Seoul held more events like this, events that borrow the city for a day, more often and in more places. Today I follow that thought all the way through. I look at the urban events Red Bull runs around the world, then at the criterium, the bike race format that fits a city best, and finally I design a web app that lays out a criterium course by computation. I also ran a prototype on the real street network around Gwanghwamun.
Events that borrow the city for a day
Red Bull events have one thing in common. They don't build a venue. They take terrain the city already has, a hill, a staircase, the gap between two towers, and turn it into a stage for a day.

The best known is the Red Bull Soapbox Race. Teams build carts with no engine, get a push, and roll down a hill on gravity alone. It started in Brussels in April 2000 and has been held more than 100 times since. Time isn't the only thing judged; creativity and showmanship count too, so a team that comes down funny gets louder applause than a team that comes down fast. The 2011 Los Angeles race drew 115,000 people. In London in 2024, 59 teams took on a 420 m descent. In Asia it has run in Hong Kong, Taipei, Tokyo (2017) and Kawasaki (2019). I couldn't find any record of one in Korea.

Urban downhill is rougher still. Chile's Valparaíso Cerro Abajo began in 2003 as a promotion for a bike magazine. Riders start at the top of a hill and drop about 2 km on mountain bikes through alleys, down stairs and over rooftops to a plaza in the city center. In 2019 Red Bull Monserrate Cerro Abajo in Bogotá, Colombia, set a Guinness World Record for the longest downhill bicycle stair race, 2.40 km with 1,060 steps. Lisbon once had a race that ran 760 m from São Jorge Castle down to the Tagus and drew 20,000 spectators. That one had a different sponsor, not Red Bull.
Red Bull has held fewer events in Korea than you might expect. Here is what I could confirm.
| Event | When | Where | Source |
|---|---|---|---|
| Red Bull BC One World Final (breaking) | 2013 | Seoul | Wikipedia |
| Red Bull 400 (running up a ski jump) | First held 2019, then 2024–2026 | Alpensia, Pyeongchang | Korea JoongAng Daily |
| Urban highline | 2026-10-01 | Gwanghwamun | Seoul Metropolitan Government |
| Soapbox, urban downhill | No record found | — | — |
Seoul and Busan have hills and stairs to spare. I like to imagine a soapbox race on the curving descent of Sowol-ro on Namsan, or an urban downhill through the stairway neighborhoods along Busan's hillside roads. But events like these shut a road completely for hours, and with only one course they're hard to hold often. Looking for a format you could run every week or every month, my thinking moved on to bike racing.
Why bike racing doesn't make money
Road cycling is an odd sport. The venue is a public road, so nobody can charge admission. The Hustle estimates that 55% of revenue at ASO, the company that owns the Tour de France, comes from broadcast rights and 40% from sponsors. ASO is privately held, so there are no official figures. The broadcast money goes to whoever owns the race, while the teams that race in it depend almost entirely on sponsors. Combined men's WorldTour team budgets grew from €473 million in 2023 to €663 million in 2026 (projected), and 87% of that comes from sponsors. When 11 WorldTour teams set up a company called Velon in 2014, its CEO summed up the situation: the current business model, which relies solely on sponsorship, is "precarious for all teams." More recently, Saudi money has put up €250 million for a proposed "One Cycling" league that would share broadcast revenue with the teams.
One thing needs correcting here. "Cycling is losing its audience" doesn't hold for the Tour de France. The 2025 Tour was watched by 45 million people in France alone, a record. At the finish in Paris, 8.7 million were watching. The problem isn't popularity; it's where the money flows. Attention and money pile onto a handful of big races, and the rest of the races and teams go hunting for sponsors.
Complaints that the races are too long keep coming, too. On a flat stage of nearly 200 km, the front group can stay more or less the same for five hours. Roadside fans wait hours to see a few dozen seconds of riders going by. In the US, streaming in May 2025 overtook broadcast and cable combined for the first time. The TV schedules that used to carry five-hour live broadcasts are shrinking. The road race has become a format that's hard to cut into short clips and hard to go watch in person.
The criterium: a race that passes the same spot thirty times

A criterium is a bike race of dozens of laps around a short circuit in town. Article 2.7.016 of the Union Cycliste Internationale (UCI) rules sets the lap at 800 m to 10 km, and article 2.7.017 caps total distance according to lap length: under 1.6 km a lap, the limit is 80 km. I could check this because the Norwegian Cycling Federation's rulebook reproduces the UCI article numbers as they are. Races usually last a little over an hour.
A bit of arithmetic shows why spectators love this format.

At an average of 45 km/h, a 1.4 km lap takes about 1 minute 52 seconds. That's 32 passes in an hour. From one spot you see the lead change, a dropped rider get caught, and the bell ring for the last lap. Put a grandstand in front of the finish line and that spot becomes a stadium. The sponsor arch and the barrier ads land in the broadcast shot more than thirty times.
Japan is where this arithmetic turned into real numbers.
| Race | Course | Spectators | Source |
|---|---|---|---|
| Tour de France Saitama Criterium 2025 | About 3.5 km × 17 laps around Saitama-Shintoshin Station | 94,000; economic impact ¥3.92 billion | Saitama City |
| Same race, 11 editions combined | — | 1,202,000; ¥33.2 billion | 〃 |
| Japan Cup Criterium 2025 (Utsunomiya) | 2.25 km × 15 laps, Odori avenue | 54,000 | Utsunomiya City |
| Japan Cup Road Race 2025 (next day) | 10.3 km × 14 laps, Shinrin Park | 76,000 | 〃 |
The Saitama race is co-organized by ASO, and road closures run from 9 a.m. to 6:30 p.m. but stay within a single zone around Shintoshin Station. Most people watch for free, but since 2025 the organizers have sold seats along the course and at the start/finish separately. Utsunomiya also runs a paid "Exciting Zone" grandstand, which 765 people used. Watching from the roadside stays free; only the good seats in front of the finish are sold. That's how a race on a public road earns gate money.
Europe has an even more blatant model. After the Tour ends, criteriums run one after another in small towns in the Netherlands and Belgium. Tour stars race for appearance fees of €45,000–50,000, and organizers cover that with circuit admission and local sponsors. It's an open secret that the results are settled in advance. These are shows first and contests second.
And Korea? The Tour de Korea, launched by the Korea Sports Promotion Foundation in 2007, hasn't been held since its 13th edition in 2019. The Tour de Gyeongnam, held by South Gyeongsang Province in 2025, was the first international road race in Korea in six years. For downtown criteriums, about the only one that stands out is KING OF TRACK, held at Ilsan Culture Plaza in August 2025. The Seoul Bike Parade, which starts at Gwanghwamun, put 10,000 citizens on a 21 km route in 2025, but that's a parade, not a race.
Marathons already paid the cost of closing roads
The biggest enemy of any downtown event is traffic complaints, and marathons are hitting that wall first. Seoul hosted 142 marathons in 2025, and marathon-related complaints to the city jumped from 15 in 2021 to 498 in 2023. The 2025 Seoul Marathon closed roads in stages from Gwanghwamun to Jamsil from 5:30 a.m. to 1:30 p.m., with some 1,600 traffic police on duty. From 2026, the city moved start times to before 7:30 a.m. and capped the number of runners at each venue.
A marathon is a linear course tens of kilometers long, so closures inevitably stretch out. A criterium only needs one loop of 1–3 km closed. But closing a loop turns the blocks inside it into an island. Cars inside can't get out, and every street that crossed the loop is cut. So a criterium course has to answer two questions together: where it runs, and how much it costs the city.
The law looks at the same point. Article 6 of Korea's Road Traffic Act lets a provincial police chief prohibit or restrict traffic on a section of road "to prevent danger and ensure safe and smooth traffic flow." It's not a clause for permitting events; it's a clause for keeping traffic moving. A November 2025 Money Today report pointed out that marathon road closures in Korea are approved on local-government paperwork alone, without systematic criteria, and relayed a proposal to adopt standards like Japan's, covering resident consent, road conditions, time of day and safety measures. If you can put a number on the traffic cost when you choose a course, you have evidence to bring to that negotiating table.
This is an optimization problem
At this point the vague idea took the shape of a problem. Pick an area, and the machine returns:
- which streets to follow for one lap (a closed loop of 1.0–2.5 km)
- how many lanes to close on each segment (all of them, or one side only while traffic keeps flowing on the rest)
- where to put the finish line and stage, the grandstands and the ad boards

Each piece already has research behind it. Surprisingly, however many times I searched, I couldn't find a paper that optimizes a marathon or criterium course. But once the problem is broken up, each part belongs to a long-established field.
| Step | Research and tools it leans on | What the app does |
|---|---|---|
| Get the road network | OSMnx (Boeing, 2017) | Turn the selected area's roads and lane/width tags into a graph |
| Build loops | Fixed-length cycle routing (Lewis & Corcoran, 2024), orienteering problem (Vansteenwegen et al., 2011) | Find high-value loops within the length limits |
| Cost of taking lanes | Road diet network design (Sohn, 2011), lane closure scheduling0733-947X(2004)130:3(322)) (Ma et al., 2004) | Give lanes to bikes while minimizing driver delay |
| Simulate the closure | UXsim (Seo, 2025), SUMO (Lopez et al., 2018) | Re-run traffic for each candidate after closure |
| Event traffic management | FHWA Planned Special Events traffic management handbook (2003) | Full and partial closures, detours, traffic management plan templates |
| Grandstand placement | Maximal covering location problem (Church & ReVelle, 1974), PySAL spopt | With a fixed number of stands, the spots that see the most course |
| Ad board placement | Trajectory-driven billboard placement (Zhang et al., KDD 2018) | Maximize exposure along the paths people and cameras follow |
| Crowd safety | Analysis of the Itaewon crowd crush (Liang et al., PLOS ONE 2024) | Check crowd density in advance with floating-population data |
The closest precedent is the Super Bowl. Researchers at Arizona State University jointly optimized road closures, contraflow lanes, parking lots and drop-off points around the 2015 Super Bowl stadium and cut vehicle travel time by 39.6% compared with the baseline plan (extended conference abstract). There's counterintuitive work too. Hyejin Youn, Michael Gastner and Hawoong Jeong closed 246 Boston roads one at a time in a computation and reported that for six of them, closing the road actually reduced total travel time (Braess's paradox). Some roads can be closed at almost no cost to the city. Finding those roads and drawing the course along them is the heart of this app.
Korea already has the data.
| Data | Where | Used for |
|---|---|---|
| Hourly traffic counts by location | Seoul TOPIS Open API, traffic volume history | Closure cost per segment, choosing the race time slot |
| Lane counts and road class per link | National standard node-link data | Filling gaps where OSM lane tags are empty |
| Floating population by hour | Seoul floating population | Spectator demand, crowd checks |
| Real-time congestion and 12-hour forecasts | Seoul real-time city data | Safety monitoring on race day |
| Bus route paths | Seoul bus route information | Number of routes crossing the course, detour targets |
The exports need a real use, too. Waze offers a closure data feed that lets cities push planned closures into navigation. It only accepts segments with every lane closed, though. Partial closures that take one side of the road can't be announced in the current format. Flagging gaps like this in the closure table is part of the app's job as well.
Among existing tools, there are route planners like Plotaroute that draw a loop to a given distance, and separate traffic-management-plan drafting tools that draw closure signs and cones. I didn't find a tool that delivers the course, the closure plan and the spectator and ad layout all at once.
A prototype run in Gwanghwamun
Design alone felt hollow, so I ran it straight on the neighborhood where I'd watched the highline. I pulled the OpenStreetMap road network for a rectangle of about 2.3 km × 1.8 km from Gwanghwamun to City Hall and Jongno. It came to 532 intersections and 1,210 road segments. The rules were these:
- The race needs three lanes (9–10 m). On roads with six or more lanes, close three lanes on one side and let traffic keep flowing on the rest (partial closure). Under six lanes, close the whole road (full closure).
- Traffic cost adds up four things: share of lanes closed × road class × length, the detour distance around fully closed segments, the number of streets cut where they cross the loop, and the number of intersections trapped inside the loop.
- Event value also adds up four things: number of corners (more is better up to eight, with a penalty for sharp turns like hairpins), length of the finishing straight, number of subway exits within 120 m of the course, and the area of plazas next to the course.
- I haven't connected traffic volume data yet, so road class stands in for traffic volume. In the real app, that slot gets TOPIS hourly counts.
After merging divided roads into single lines and finding every closed loop of 1.0–2.4 km, I got 29. Counting near-identical loops that differ only in how intersections were merged as one, that's 10 distinct routes. On the map below, push the slider toward "Spectacle" to weight value more, or toward "Protect traffic" to weight cost more. You can watch the ranking change.

The winner, unexpectedly, wasn't Gwanghwamun Square but a 1,394 m loop around City Hall. It runs north up Sejong-daero from City Hall, turns back, and wraps around Seoul Plaza by way of Mugyo-ro and Eulji-ro. Just before the northern turnaround, the course passes between the Koreana Hotel and the Dong-A Media Center, where the highline was strung. Right under that line, six days earlier.
| Segment | Lanes (OSM) | Lanes closed | Length | Notes |
|---|---|---|---|---|
| Sejong-daero (City Hall → north turnaround → City Hall) | 16 | 3 (partial) | 847 m | Cars keep the other 13 lanes |
| Sogong-ro | 6 (est.) | 3 (partial) | 134 m | |
| Eulji-ro | 3 | 3 (full) | 119 m | Detour +487 m |
| Mugyo-ro | 4 | 4 (full) | 116 m | Detour +91 m |
| Sejong-daero 20-gil | 4 (est.) | 4 (full) | 178 m | Detour +258–303 m |
Of the 1,394 m lap, only 413 m is fully closed; the other 70% borrows lanes on one side only. Zero intersections are trapped inside the loop. The longest straight is 450 m on Sejong-daero, so the finish went at the end of the straight in front of City Hall. The four grandstands landed at the southern Sogong-ro corner, where City Hall Station's exits cluster, at the northern turnaround, at the Mugyo-ro corner and at the corner in front of the Press Center. The ad boards went where riders exit the big corners, because corner exits are where broadcast cameras hold on the riders longest. Second and third place went to 2.1–2.4 km loops around Jong-ro, Ujeongguk-ro, Yulgok-ro and Samil-daero. They have more subway exits, but more intersections get blocked too, which pulled their scores down.
Where it goes wrong
There are several reasons not to take the prototype's answer at face value.
- The 16 lanes on Sejong-daero are a number from OSM tags. Each side of the divided road is tagged "8 lanes," which may count bus and turn lanes and may not match what's on the ground. More importantly, Sejong-daero has a median bus-only lane. The prototype doesn't know what closing the three outer lanes does to bus stop access. That's why bus route data needs to be connected.
- The winning course has two hairpin turnarounds. They come from riding up one side of a divided road and back down the other. Pro criteriums do have turnarounds, but the crash risk is high. Whether a 1.5-point penalty is right is a question for riders and race organizers.
- Road class stood in for traffic volume. Sejong-daero on a Sunday morning and Sejong-daero on a Friday evening are different roads. Add TOPIS hourly counts and a simulation like UXsim, and the app could answer "what time should we start to cause the least congestion?"
- Seoul Plaza almost always hosts some other event. Plaza area counted as value, but there's no way to know whether the plaza will be free that day.
- Crowd density hasn't been computed yet. Placing grandstands near subway exits funnels people to one spot. Liang et al. (2024), who analyzed the 2022 Itaewon crowd crush, used exactly the same Seoul floating-population data. Checking density for the race time slot with that data in advance is a step that can't be skipped.
The city is already a stadium
To sum up, the web app has three jobs. Build loops within the length limits, put a price on what each loop costs the city, and place people and ads in the space that remains. All three are old optimization problems. What's new is that most of the data needed to run these calculations in Seoul is already public.
The line over Gwanghwamun came down within half a day. The next day, Sejong-daero beneath it was full of cars again. For events that borrow the city for a day to become more common, someone has to be able to show, before the event, a number that says "close this road this much and the city pays this much in inconvenience." The 1,394 m loop around City Hall is the first time I've pulled that number out. Next, I'd like to connect traffic volume and work out "Sunday, 9 a.m., this loop: this many cars detoured."