# 2023–24 Swiss Promotion League

The 2023–24 Swiss Promotion League season (known as the Hoval Promotion League for sponsorship reasons) was the 12th edition (10th under its current name) of the 3rd tier of the Swiss football league system under its current format.

## Overview

The eighteen teams of the previous season are joined by Servette FC II, SR Delémont, FC Paradiso and FC Lugano II, who were promoted from the 1. Liga Classic and no team relegated from the Challenge League, replaced last season's runner-up and third place Stade Nyonnais and FC Baden. Furthermore, the number of under-21 teams allowed in the Promotion League is no longer restricted to four, starting with this season. This season features seven U21 teams.
The season started on 5 August 2023 and the final matchday was on 25 May 2024.

### Teams

| Club | Canton | Stadium | Capacity |
| Basel U-21 | Basel-City | Stadion Rankhof or Youth Campus Basel | 7,000 1,000 |
| FC Bavois | Vaud | Terrain des Peupliers | 659 |
| FC Biel-Bienne | Bern | Gurzelen Stadion | 5,500 |
| FC Breitenrain Bern | Bern | Spitalacker | 1,450 |
| SC Brühl | St. Gallen | Paul-Grüninger-Stadion | 4,200 |
| FC Bulle | Fribourg | Stade de Bouleyres | 7,000 |
| SC Cham | Zug | Stadion Eizmoos | 1,800 |
| SR Delémont | Jura | La Blancherie | 5,263 |
| Étoile Carouge FC | Geneva | Stade de la Fontenette | 3,690 |
| SC Kriens | Lucerne | Stadion Kleinfeld | 5,360 |
| Lugano U-21 | Ticino | Cornaredo Stadium | 6,330 |
| Luzern U-21 | Lucerne | Swissporarena or Allmend Süd | 16,800 2,000 |
| FC Paradiso | Ticino | Campo Pian Scairolo | 1,000 |
| FC Rapperswil-Jona | St. Gallen | Stadion Grünfeld | 2,500 |
| Servette U-21 | Geneva | Stade de Genève or Stade de la Fontenette | 30,000 3,690 |
| St. Gallen U-21 | St. Gallen | Espenmoos or Kybunpark | 3,000 19,264 |
| Young Boys U-21 | Bern | Stadion Wankdorf | 32,000 |
| Zürich U-21 | Zürich | Sportplatz Heerenschürli | 1,120 |

## League table

| Pos | Team | Pld | W | D | L | GF | GA | GD | Pts | Promotion, qualification or relegation |
| 1 | Étoile Carouge FC (C, P) | 34 | 24 | 4 | 6 | 72 | 38 | +34 | 76 | Promotion to Swiss Challenge League and qualification for Swiss Cup |
| 2 | FC Rapperswil-Jona | 34 | 22 | 5 | 7 | 74 | 44 | +30 | 71 | Qualification for Swiss Cup |
| 3 | FC Biel-Bienne | 34 | 18 | 5 | 11 | 61 | 35 | +26 | 59 | Qualification for Swiss Cup |
| 4 | FC Paradiso | 34 | 16 | 8 | 10 | 38 | 32 | +6 | 56 | Qualification for Swiss Cup |
| 5 | SR Delémont | 34 | 16 | 5 | 13 | 56 | 62 | −6 | 53 | Qualification for Swiss Cup |
| 6 | SC Kriens | 34 | 13 | 10 | 11 | 50 | 58 | −8 | 49 | Qualification for Swiss Cup |
| 7 | SC Brühl | 34 | 15 | 5 | 14 | 53 | 60 | −7 | 50 | Qualification for Swiss Cup |
| 8 | SC Cham | 34 | 12 | 8 | 14 | 69 | 62 | +7 | 44 | |
| 9 | FC Zürich II | 34 | 13 | 6 | 15 | 58 | 56 | +2 | 45 | |
| 10 | FC Bavois | 34 | 12 | 7 | 15 | 66 | 58 | +8 | 43 | |
| 11 | FC Breitenrain | 34 | 10 | 9 | 15 | 48 | 61 | −13 | 39 | |
| 12 | BSC Young Boys II | 34 | 12 | 8 | 14 | 51 | 63 | −12 | 44 | |
| 13 | FC Luzern II | 34 | 11 | 10 | 13 | 61 | 68 | −7 | 43 | |
| 14 | FC Bulle | 34 | 10 | 9 | 15 | 47 | 58 | −11 | 39 | |
| 15 | FC Basel II | 34 | 10 | 8 | 16 | 54 | 63 | −9 | 38 | |
| 16 | FC Lugano II | 34 | 12 | 4 | 18 | 51 | 65 | −14 | 40 | |
| 17 | FC St. Gallen II (R) | 34 | 10 | 7 | 17 | 56 | 61 | −5 | 37 | Relegation to the 1. Liga Classic |
| 18 | Servette FC II (R) | 34 | 6 | 10 | 18 | 47 | 68 | −21 | 28 | Relegation to the 1. Liga Classic |

## Results

| Home \ Away | BAS | BAV | BIE | BRE | BRÜ | BUL | CHA | DEL | ETC | KRI | LUG | LUZ | PAR | RAP | SER | STG | BYB | ZÜR |
| FC Basel II | — | 0–2 | 0–0 | 1–2 | 3–2 | 1–1 | 3–2 | 4–1 | 2–0 | 0–1 | 3–0 | 5–1 | 1–3 | 3–2 | 1–1 | 2–2 | 2–0 | 1–3 |
| FC Bavois | 1–0 | — | 2–3 | 4–2 | 5–1 | 1–1 | 2–1 | 2–3 | 0–3 | 1–1 | 3–1 | 5–2 | 1–2 | 0–2 | 3–0 | 1–2 | 7–2 | 4–1 |
| FC Biel-Bienne | 5–1 | 4–0 | — | 2–0 | 0–1 | 2–0 | 2–2 | 2–0 | 0–1 | 1–2 | 1–3 | 2–1 | 1–1 | 0–1 | 2–0 | 1–1 | 1–2 | 3–1 |
| FC Breitenrain | 2–2 | 4–2 | 3–2 | — | 1–1 | 3–1 | 2–1 | 1–1 | 0–1 | 2–2 | 1–2 | 0–2 | 1–1 | 2–0 | 2–2 | 1–2 | 1–1 | 2–2 |
| SC Brühl | 1–0 | 0–2 | 1–6 | 3–2 | — | 0–1 | 4–1 | 4–1 | 0–5 | 4–1 | 1–0 | 0–0 | 2–1 | 2–4 | 3–0 | 2–2 | 3–1 | 3–0 |
| FC Bulle | 5–4 | 2–2 | 1–0 | 3–1 | 1–3 | — | 3–2 | 2–2 | 1–2 | 3–1 | 3–2 | 4–4 | 1–2 | 0–1 | 0–0 | 2–2 | 3–3 | 1–0 |
| SC Cham | 2–0 | 2–2 | 0–1 | 3–2 | 4–0 | 3–1 | — | 1–2 | 2–4 | 1–1 | 5–1 | 3–2 | 1–1 | 1–2 | 4–3 | 2–1 | 6–2 | 2–2 |
| SR Delémont | 3–0 | 2–0 | 1–0 | 2–1 | 1–0 | 1–0 | 2–3 | — | 3–2 | 2–2 | 5–2 | 3–2 | 1–1 | 2–4 | 1–3 | 2–1 | 2–2 | 1–2 |
| Étoile Carouge FC | 2–2 | 2–1 | 1–0 | 3–1 | 3–1 | 2–0 | 3–3 | 0–1 | — | 4–0 | 3–2 | 2–2 | 0–1 | 1–0 | 3–2 | 5–1 | 2–1 | 3–2 |
| SC Kriens | 3–2 | 2–1 | 0–2 | 1–0 | 1–1 | 1–1 | 0–4 | 6–2 | 1–3 | — | 0–1 | 1–1 | 3–1 | 2–5 | 0–1 | 3–2 | 0–0 | 0–0 |
| FC Lugano II | 2–4 | 2–1 | 0–3 | 2–1 | 4–0 | 2–1 | 3–2 | 3–0 | 1–2 | 1–2 | — | 1–2 | 2–1 | 0–1 | 2–1 | 1–3 | 2–3 | 1–0 |
| FC Luzern II | 4–1 | 4–3 | 0–2 | 0–2 | 1–1 | 0–1 | 3–2 | 0–3 | 2–2 | 1–1 | 4–4 | — | 0–1 | 1–2 | 4–2 | 3–1 | 4–1 | 2–2 |
| FC Paradiso | 1–1 | 2–0 | 1–2 | 0–1 | 1–0 | 2–0 | 1–0 | 1–0 | 1–0 | 1–2 | 1–0 | 1–0 | — | 1–2 | 1–1 | 0–2 | 0–0 | 2–1 |
| FC Rapperswil-Jona | 3–0 | 1–1 | 3–3 | 1–1 | 0–3 | 1–0 | 3–0 | 3–0 | 3–1 | 4–1 | 3–0 | 2–3 | 2–0 | — | 2–1 | 4–1 | 1–1 | 2–4 |
| Servette FC II | 2–1 | 1–1 | 1–2 | 0–2 | 1–2 | 4–1 | 1–1 | 1–3 | 1–3 | 2–3 | 2–2 | 1–1 | 2–3 | 1–1 | — | 1–5 | 3–2 | 2–3 |
| FC St. Gallen II | 1–2 | 1–1 | 1–2 | 4–0 | 1–2 | 3–2 | 1–1 | 0–2 | 0–2 | 3–0 | 1–1 | 0–1 | 1–2 | 3–4 | 4–2 | — | 0–1 | 0–1 |
| BSC Young Boys II | 2–2 | 2–1 | 1–3 | 1–2 | 3–0 | 2–0 | 1–0 | 3–1 | 0–1 | 0–4 | 1–0 | 3–4 | 0–0 | 2–1 | 0–2 | 3–1 | — | 2–0 |
| FC Zürich II | 1–0 | 0–4 | 2–1 | 6–0 | 3–2 | 0–1 | 1–2 | 4–0 | 1–2 | 1–2 | 1–1 | 4–0 | 1–0 | 3–4 | 0–0 | 2–3 | 4–3 | — |
* ↑ Original result 0–4. Delémont were awarded a 3–0 forfeit win, because Basel II fielded an ineligible player.
* ↑ Original result 2–0. Brühl were awarded a 3–0 forfeit win, as Rapperswil-Jona had fielded an unregistered player.