# 2023–24 Serie B

The 2023–24 Serie B (known as the Serie BKT for sponsorship reasons) was the 92nd season of the Serie B since its establishment in 1929.

## Changes

The following teams changed divisions since the 2022–23 season:
Feralpisalò played in Serie B for the first time in history this season, the 125th team entering this round robin league.
After 50 years of absence, Lecco returned to Serie B for the first time since 1973, Catanzaro returned to Serie B after a 17 year spell in lower divisions and Reggiana returned to Serie B after a 2 year spell in Serie C.
On 1 July 2023, the Co.Vi.So.C. rejected the applications of Lecco (due to the documentation involving their home venue of Padua for the season being presented late) and Reggina (due to financial irregularities). On appeal, the Federal Council readmitted Lecco, but confirmed Reggina's exclusion. The following level of appeal, the Collegio di Garanzia of the Italian Olympic Committee, withheld Reggina's exclusion while also ruling in favour of Perugia's demand to overrule FIGC's decision to accept Lecco.
On 3 August, the Administrative Court of Rome again reversed Lecco's exclusion, readmitting the Lombardian club into the Serie B league, while rejecting Reggina's request for readmission. Those decisions were appealed at the Council of State later on 29 August. In case of any vacancies, Brescia and Perugia (in that order) were expected to be readmitted to the league.
On 30 August, the Council of State rejected the demands of Perugia and Reggina and ruled in favour of Lecco and Brescia, consequently the two teams were allowed to take part in the league.

## Teams
### Stadiums and locations

| Team | Home city | Stadium | Capacity | 2022–23 season |
| Ascoli | Ascoli Piceno | Stadio Cino e Lillo Del Duca | 11,326 | 12th in Serie B |
| Bari | Bari | Stadio San Nicola | 58,270 | 3rd in Serie B |
| Brescia | Brescia | Stadio Mario Rigamonti | 19,500 | 16th in Serie B |
| Catanzaro | Catanzaro | Stadio Nicola Ceravolo | 14,650 | Serie C Group C champions |
| Cittadella | Cittadella | Stadio Pier Cesare Tombolato | 7,623 | 15th in Serie B |
| Como | Como | Stadio Giuseppe Sinigaglia | 13,602 | 13th in Serie B |
| Cosenza | Cosenza | Stadio San Vito-Gigi Marulla | 20,987 | 17th in Serie B |
| Cremonese | Cremona | Stadio Giovanni Zini | 15,191 | 19th in Serie A |
| Feralpisalò | Salò and Lonato del Garda | Stadio Leonardo Garilli | 21,668 | Serie C Group A champions |
| Lecco | Lecco | Stadio Rigamonti-Ceppi Stadio Euganeo | 4,995 18,060 | Serie C play-off winners |
| Modena | Modena | Stadio Alberto Braglia | 21,151 | 10th in Serie B |
| Palermo | Palermo | Stadio Renzo Barbera | 36,365 | 9th in Serie B |
| Parma | Parma | Stadio Ennio Tardini | 22,352 | 4th in Serie B |
| Pisa | Pisa | Arena Garibaldi – Stadio Romeo Anconetani | 14,000 | 11th in Serie B |
| Reggiana | Reggio Emilia | Mapei Stadium – Città del Tricolore | 21,525 | Serie C Group B champions |
| Sampdoria | Genoa | Stadio Luigi Ferraris | 33,205 | 20th in Serie A |
| Spezia | La Spezia | Stadio Alberto Picco | 11,968 | 18th in Serie A |
| Südtirol | Bolzano | Stadio Druso | 5,539 | 6th in Serie B |
| Ternana | Terni | Stadio Libero Liberati | 22,000 | 14th in Serie B |
| Venezia | Venice | Stadio Pier Luigi Penzo | 11,150 | 8th in Serie B |
* ↑ Feralpisalò temporarily relocated to Stadio Leonardo Garilli (home stadium of Piacenza) after Stadio Lino Turina did not meet Serie B requirements.
* ↑ Lecco played in Stadio Euganeo (home stadium of Padova) the first home game of the season because Stadio Rigamonti-Ceppi initially did not meet Serie B requirements.

### Number of teams by regions

| No. of teams | Region | Team(s) |
| 5 | Lombardy | Brescia, Como, Cremonese, Feralpisalò and Lecco |
| 3 | Emilia-Romagna | Modena, Parma and Reggiana |
| 2 | Calabria | Catanzaro and Cosenza |
| 2 | Liguria | Sampdoria and Spezia |
| 2 | Veneto | Cittadella and Venezia |
| 1 | Apulia | Bari |
| 1 | Marche | Ascoli |
| 1 | Sicily | Palermo |
| 1 | Trentino-Alto Adige/Südtirol | Südtirol |
| 1 | Tuscany | Pisa |
| 1 | Umbria | Ternana |

### Personnel and kits

| Team | Chairman | Manager | Captain | Kit maker | Shirt sponsor(s) | Shirt sponsor(s) |
| Team | Chairman | Manager | Captain | Kit maker | Main | Other(s)0 |
| Ascoli | Carlo Neri | Massimo Carrera | Eric Botteghin | Nike | Fainplast | List Front: Bricofer Back: Bricofer / Impresa Generale Costruzioni / Edilizia Casciaroli / ATTAL Group Sleeves: Impresa Turzo (Home) & Edil Style (Away) Shorts: Gruppo Boero |
| Bari | Luigi De Laurentiis | Federico Giampaolo (caretaker) | Valerio Di Cesare | Kappa | Molino Casillo | List Front: None Back: MV Line Sleeves: Decò Supermercati Shorts: Granoro |
| Brescia | Massimo Cellino | Rolando Maran | Dimitri Bisoli | Kappa | Gruppo DAC | List Front: None Back: Le Stagioni d'Italia Sleeves: Pardgroup Shorts: Eat Pink |
| Catanzaro | Floriano Noto | Vincenzo Vivarini | Pietro Iemmello | EYE Sport | Coop | List Front: Volkswagen Bencivenni Back: Principe Srl Sleeves: Main Solution Srl Shorts: Coop |
| Cittadella | Andrea Gabrielli | Edoardo Gorini | Simone Branca | Erreà | Sirmax | List Front: Gruppo Gabrielli Back: Stylplex (Home), Quartzforms (Away) & Marmo Arredo (Third) Sleeves: Pastificio Cecchin Shorts: Scilm (Home) & Stylplex (Away & Third) |
| Como | Dennis Wise | Osian Roberts (caretaker) | Alessandro Bellemo | Erreà | Mola (Home & Away) & Quelli che... con Luca (Third) | List Front: None Back: Acqua S.Bernardo Sleeves: None Shorts: None |
| Cosenza | Eugenio Guarascio | William Viali | Alessandro Micai | Nike | Patata della Sila | List Front: Volkswagen Chiappetta Back: Peperoncino Malizia Sleeves: None Shorts: 3F Falvo Group |
| Cremonese | Paolo Rossi | Giovanni Stroppa | Matteo Bianchetti | Acerbis | Ilta Inox (Home) & Arinox (Away & Third) | List Front: Arvedi Back: Gruppo Mauro Saviola Sleeves: Arvedi Tubo Acciaio Shorts: None |
| Feralpisalò | Giuseppe Pasini | Marco Zaffaroni | Davide Balestrero | WeArlequin | Feralpi Siderurgica | List Front: VI.BI. Elettrorecuperi (Home & Away) & Feralpi Presider (in cup matches) Back: Sae Flex (Home), Olimpia Splendid (Away & Third) & Recuperi Metalfer (in cup matches) Sleeves: Appia Antica (Home), Comelli Rottami Metallici (Away) & Caleotto (Third) Shorts: Gabogas (Home), Trailer SpA (Away) & Imbal Carton (Third) |
| Lecco | Cristian Di Nunno | Andrea Malgrati (caretaker) | Vedran Celjak | Legea | Cantine Pirovano | List Front: Casa Coller Back: Galperti Sleeves: Terre Bentivoglio Shorts: Fiocchi |
| Modena | Carlo Rivetti | Pierpaolo Bisoli | Antonio Pergreffi | New Balance | Kerakoll | List Front: None Back: SAU Group Sleeves: Reflexallen Shorts: Studio Appari |
| Palermo | Dario Mirri | Michele Mignani | Matteo Brunori | Puma | Old Wild West | List Front: Bisaten Back: A29 Energy Service Company Sleeves: L.T. Costruzioni Shorts: Nuova Sicilauto |
| Parma | Kyle J. Krause | Fabio Pecchia | Enrico Del Prato | Puma | Prometeon | List Front: Classic Football Shirts Back: inX.aero Sleeves: None Shorts: CAD Euro Pool |
| Pisa | Giuseppe Corrado | Alberto Aquilani | Marius Marin | Adidas | Cetilar | List Front: SEAC-ESCO Back: Hi-turf Solution Sleeves: Gruppo Paim Shorts: Toni Luigi Scavi e Demolizioni |
| Reggiana | Carmelo Salerno | Alessandro Nesta | Paolo Rozzio | Macron | Immergas | List Front: Righi Food Back: FIAT Autostile Sleeves: CAI Consulenze Aste Immobiliari Shorts: Fortlan-Dibi |
| Sampdoria | Marco Lanna | Andrea Pirlo | Fabio Depaoli | Macron | Banca Ifis / Rendimax | List Front: None Back: LaMiaLiguria Sleeves: None Shorts: None |
| Spezia | Philip Raymond Platek Jr. | Luca D'Angelo | Dimitris Nikolaou | Kappa | Spigas Clienti | List Front: None Back: LaMiaLiguria Sleeves: Iozzelli Magazzini Edili Shorts: None |
| Südtirol | Gerhard Comper | Federico Valente | Fabian Tait | Mizuno | Südtirol | List Front: Duka Back: TopHaus Sleeves: Alperia Shorts: Ci Gusta |
| Ternana | Nicola Guida | Roberto Breda | Marco Capuano | Macron | Pharmaguida | List Front: Lenergia Back: Telematica Italia Sleeves: Orsolini Amedeo Shorts: Autoservizi Troiani |
| Venezia | Duncan L. Niederauer | Paolo Vanoli | Marco Modolo | Kappa | Bechèr | List Front: None Back: Gruppo Geromin Sleeves: CharityStars Shorts: inX.aero |

### Managerial changes

| Team | Outgoing manager | Manner of departure | Date of vacancy | Position in table | Replaced by | Date of appointment |
| Modena | Attilio Tesser | Sacked | 23 May 2023 | Pre-season | Paolo Bianco | 1 July 2023 |
| Pisa | Luca D'Angelo | Sacked | 2 June 2023 | Pre-season | Alberto Aquilani | 1 July 2023 |
| Ternana | Cristiano Lucarelli | Sacked | 21 June 2023 | Pre-season | Aurelio Andreazzoli | 1 July 2023 |
| Reggiana | Aimo Diana | End of contract | 30 June 2023 | Pre-season | Alessandro Nesta | 1 July 2023 |
| Sampdoria | Dejan Stanković | End of contract | 30 June 2023 | Pre-season | Andrea Pirlo | 1 July 2023 |
| Ascoli | Roberto Breda | End of contract | 30 June 2023 | Pre-season | William Viali | 1 July 2023 |
| Cosenza | William Viali | Signed by Ascoli | 30 June 2023 | Pre-season | Fabio Caserta | 1 July 2023 |
| Spezia | Leonardo Semplici | End of contract | 30 June 2023 | Pre-season | Massimiliano Alvini | 6 July 2023 |
| Ternana | Aurelio Andreazzoli | Mutual consent | 11 July 2023 | Pre-season | Cristiano Lucarelli | 14 July 2023 |
| Cremonese | Davide Ballardini | Sacked | 18 September 2023 | 9th | Giovanni Stroppa | 19 September 2023 |
| Bari | Michele Mignani | Sacked | 9 October 2023 | 12th | Pasquale Marino | 10 October 2023 |
| Lecco | Luciano Foschi | Sacked | 9 October 2023 | 20th | Emiliano Bonazzoli | 12 October 2023 |
| Feralpisalò | Stefano Vecchi | Sacked | 23 October 2023 | 19th | Marco Zaffaroni | 23 October 2023 |
| Ternana | Cristiano Lucarelli | Sacked | 6 November 2023 | 19th | Roberto Breda | 6 November 2023 |
| Brescia | Daniele Gastaldello | Sacked | 10 November 2023 | 13th | Luca Belingheri (caretaker) | 10 November 2023 |
| Como | Moreno Longo | Sacked | 13 November 2023 | 7th | Cesc Fàbregas (caretaker) | 13 November 2023 |
| Ascoli | William Viali | Sacked | 13 November 2023 | 16th | Fabrizio Castori | 13 November 2023 |
| Brescia | Luca Belingheri | End of caretaker spell | 14 November 2023 | 15th | Rolando Maran | 14 November 2023 |
| Spezia | Massimiliano Alvini | Sacked | 15 November 2023 | 18th | Luca D'Angelo | 15 November 2023 |
| Südtirol | Pierpaolo Bisoli | Sacked | 4 December 2023 | 13th | Federico Valente | 4 December 2023 |
| Como | Cesc Fàbregas | End of caretaker spell | 23 December 2023 | 3rd | Osian Roberts (caretaker) | 24 December 2023 |
| Bari | Pasquale Marino | Sacked | 5 February 2024 | 13th | Giuseppe Iachini | 6 February 2024 |
| Lecco | Emiliano Bonazzoli | Sacked | 12 February 2024 | 20th | Alfredo Aglietti | 12 February 2024 |
| Cosenza | Fabio Caserta | Sacked | 11 March 2024 | 14th | William Viali | 11 March 2024 |
| Ascoli | Fabrizio Castori | Sacked | 12 March 2024 | 18th | Massimo Carrera | 12 March 2024 |
| Lecco | Alfredo Aglietti | Sacked | 3 April 2024 | 20th | Andrea Malgrati (caretaker) | 3 April 2024 |
| Palermo | Eugenio Corini | Sacked | 3 April 2024 | 6th | Michele Mignani | 3 April 2024 |
| Modena | Paolo Bianco | Sacked | 13 April 2024 | 13th | Pierpaolo Bisoli | 14 April 2024 |
| Bari | Giuseppe Iachini | Sacked | 15 April 2024 | 16th | Federico Giampaolo (caretaker) | 15 April 2024 |

## League table

| Pos | Teamvte | Pld | W | D | L | GF | GA | GD | Pts | Promotion, qualification or relegation |
| 1 | Parma (C, P) | 38 | 21 | 13 | 4 | 66 | 35 | +31 | 76 | Promotion to Serie A |
| 2 | Como (P) | 38 | 21 | 10 | 7 | 58 | 40 | +18 | 73 | Promotion to Serie A |
| 3 | Venezia (O, P) | 38 | 21 | 7 | 10 | 69 | 46 | +23 | 70 | 0Qualification for promotion play-offs semi-finals |
| 4 | Cremonese | 38 | 19 | 10 | 9 | 50 | 32 | +18 | 67 | 0Qualification for promotion play-offs semi-finals |
| 5 | Catanzaro | 38 | 17 | 9 | 12 | 59 | 50 | +9 | 60 | 0Qualification for promotion play-offs preliminary round |
| 6 | Palermo | 38 | 15 | 11 | 12 | 62 | 53 | +9 | 56 | 0Qualification for promotion play-offs preliminary round |
| 7 | Sampdoria | 38 | 16 | 9 | 13 | 53 | 50 | +3 | 55 | 0Qualification for promotion play-offs preliminary round |
| 8 | Brescia | 38 | 12 | 15 | 11 | 44 | 40 | +4 | 51 | 0Qualification for promotion play-offs preliminary round |
| 9 | Cosenza | 38 | 11 | 14 | 13 | 47 | 42 | +5 | 47 | |
| 10 | Modena | 38 | 10 | 17 | 11 | 41 | 47 | −6 | 47 | |
| 11 | Reggiana | 38 | 10 | 17 | 11 | 38 | 45 | −7 | 47 | |
| 12 | Südtirol | 38 | 12 | 11 | 15 | 46 | 48 | −2 | 47 | |
| 13 | Pisa | 38 | 11 | 13 | 14 | 51 | 54 | −3 | 46 | |
| 14 | Cittadella | 38 | 11 | 13 | 14 | 40 | 47 | −7 | 46 | |
| 15 | Spezia | 38 | 9 | 17 | 12 | 36 | 49 | −13 | 44 | |
| 16 | Ternana (R) | 38 | 11 | 10 | 17 | 43 | 50 | −7 | 43 | 0Qualification for relegation play-out |
| 17 | Bari (O) | 38 | 8 | 17 | 13 | 38 | 49 | −11 | 41 | 0Qualification for relegation play-out |
| 18 | Ascoli (R) | 38 | 9 | 14 | 15 | 38 | 42 | −4 | 41 | Relegation to Serie C |
| 19 | Feralpisalò (R) | 38 | 8 | 9 | 21 | 44 | 65 | −21 | 33 | Relegation to Serie C |
| 20 | Lecco (R) | 38 | 6 | 8 | 24 | 35 | 74 | −39 | 26 | Relegation to Serie C |
* ↑ Sampdoria were deducted 2 points due to failure in paying taxes between January and March 2023.
* 1 2 3 4 Head-to-head points: Cosenza 11, Modena 11, Reggiana 7, Südtirol 3. Head-to-head goal difference: Cosenza +6, Modena +2.
* 1 2 Pisa finished ahead of Cittadella on head-to-head points: Pisa 2–1 Cittadella, Cittadella 0–1 Pisa.
* 1 2 Bari finished ahead of Ascoli on head-to-head points: Bari 1–0 Ascoli, Ascoli 2–2 Bari.

### Positions by round

The table lists the positions of teams after each week of matches. In order to preserve chronological evolvements, any postponed matches are not included in the round at which they were originally scheduled but added to the full round that was played immediately afterwards.
| Team ╲ Round | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
| Ascoli | 19 | 19 | 12 | 14 | 15 | 15 | 14 | 14 | 14 | 12 | 14 | 15 | 16 | 16 | 17 | 18 | 17 | 18 | 18 | 17 | 18 | 16 | 16 | 17 | 18 | 17 | 17 | 17 | 18 | 17 | 18 | 18 | 18 | 18 | 16 | 17 | 18 | 18 |
| Bari | 8 | 6 | 5 | 7 | 9 | 9 | 12 | 12 | 12 | 14 | 10 | 8 | 10 | 10 | 10 | 9 | 11 | 11 | 11 | 10 | 10 | 12 | 15 | 12 | 10 | 10 | 11 | 13 | 15 | 15 | 14 | 15 | 17 | 17 | 18 | 16 | 17 | 17 |
| Brescia | 12 | 16 | 17 | 12 | 10 | 11 | 10 | 11 | 10 | 7 | 12 | 13 | 15 | 15 | 11 | 12 | 9 | 9 | 9 | 8 | 8 | 9 | 8 | 9 | 9 | 9 | 9 | 7 | 7 | 8 | 8 | 7 | 7 | 7 | 7 | 8 | 8 | 8 |
| Catanzaro | 9 | 5 | 3 | 1 | 5 | 4 | 6 | 4 | 4 | 2 | 3 | 4 | 6 | 5 | 4 | 4 | 4 | 6 | 7 | 6 | 7 | 7 | 7 | 6 | 6 | 6 | 6 | 5 | 6 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
| Cittadella | 4 | 9 | 10 | 9 | 7 | 10 | 9 | 7 | 8 | 11 | 13 | 11 | 9 | 8 | 7 | 6 | 6 | 4 | 4 | 4 | 5 | 5 | 6 | 7 | 7 | 7 | 8 | 9 | 10 | 10 | 11 | 9 | 10 | 10 | 10 | 13 | 11 | 14 |
| Como | 20 | 15 | 16 | 11 | 8 | 6 | 3 | 5 | 6 | 6 | 6 | 7 | 7 | 6 | 3 | 3 | 3 | 5 | 3 | 3 | 2 | 4 | 3 | 3 | 5 | 5 | 4 | 3 | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| Cosenza | 1 | 2 | 6 | 10 | 12 | 8 | 11 | 8 | 5 | 5 | 9 | 10 | 8 | 9 | 9 | 11 | 13 | 12 | 14 | 15 | 14 | 11 | 11 | 13 | 11 | 11 | 10 | 14 | 14 | 14 | 15 | 14 | 15 | 14 | 14 | 12 | 10 | 9 |
| Cremonese | 10 | 14 | 9 | 8 | 11 | 12 | 8 | 10 | 7 | 9 | 8 | 6 | 4 | 3 | 5 | 5 | 5 | 3 | 5 | 5 | 3 | 2 | 2 | 2 | 2 | 3 | 3 | 2 | 2 | 3 | 4 | 3 | 4 | 4 | 4 | 4 | 4 | 4 |
| Feralpisalò | 18 | 20 | 20 | 20 | 19 | 20 | 16 | 18 | 18 | 19 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 19 | 18 | 18 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 |
| Lecco | 13 | 17 | 18 | 19 | 20 | 18 | 20 | 20 | 20 | 20 | 18 | 17 | 17 | 17 | 16 | 16 | 19 | 17 | 16 | 16 | 17 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 |
| Modena | 14 | 8 | 4 | 3 | 4 | 3 | 4 | 6 | 9 | 10 | 5 | 3 | 5 | 7 | 6 | 7 | 8 | 8 | 8 | 9 | 9 | 8 | 9 | 8 | 8 | 8 | 7 | 8 | 12 | 13 | 13 | 13 | 13 | 12 | 12 | 14 | 14 | 10 |
| Palermo | 11 | 11 | 8 | 5 | 3 | 5 | 2 | 2 | 2 | 3 | 4 | 5 | 3 | 4 | 8 | 8 | 7 | 7 | 6 | 7 | 6 | 6 | 5 | 5 | 3 | 4 | 5 | 6 | 5 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
| Parma | 3 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| Pisa | 15 | 7 | 11 | 13 | 13 | 13 | 13 | 13 | 13 | 13 | 15 | 14 | 12 | 11 | 12 | 13 | 14 | 13 | 13 | 13 | 11 | 13 | 13 | 10 | 12 | 15 | 14 | 11 | 8 | 11 | 9 | 10 | 9 | 9 | 9 | 11 | 12 | 13 |
| Reggiana | 17 | 12 | 14 | 16 | 14 | 14 | 15 | 15 | 15 | 15 | 11 | 12 | 13 | 14 | 15 | 15 | 16 | 15 | 12 | 11 | 12 | 10 | 10 | 11 | 13 | 13 | 12 | 15 | 11 | 12 | 10 | 11 | 12 | 13 | 13 | 9 | 13 | 11 |
| Sampdoria | 5 | 13 | 13 | 15 | 16 | 16 | 17 | 19 | 19 | 16 | 17 | 16 | 14 | 13 | 14 | 10 | 10 | 10 | 10 | 14 | 15 | 14 | 14 | 15 | 15 | 14 | 15 | 12 | 9 | 7 | 7 | 8 | 8 | 8 | 8 | 7 | 7 | 7 |
| Spezia | 6 | 10 | 15 | 18 | 17 | 19 | 18 | 17 | 17 | 17 | 16 | 18 | 18 | 18 | 19 | 19 | 18 | 19 | 19 | 19 | 20 | 19 | 19 | 18 | 17 | 18 | 18 | 18 | 16 | 18 | 16 | 16 | 16 | 16 | 15 | 15 | 15 | 15 |
| Südtirol | 7 | 4 | 7 | 6 | 6 | 7 | 7 | 9 | 11 | 8 | 7 | 9 | 11 | 12 | 13 | 14 | 12 | 14 | 15 | 12 | 13 | 15 | 12 | 14 | 14 | 12 | 13 | 10 | 13 | 9 | 12 | 12 | 11 | 11 | 11 | 10 | 9 | 12 |
| Ternana | 16 | 18 | 19 | 17 | 18 | 17 | 19 | 16 | 16 | 18 | 19 | 19 | 19 | 19 | 18 | 17 | 15 | 16 | 17 | 18 | 16 | 17 | 17 | 16 | 16 | 16 | 16 | 16 | 17 | 16 | 17 | 17 | 14 | 15 | 17 | 18 | 16 | 16 |
| Venezia | 2 | 3 | 2 | 4 | 2 | 2 | 5 | 3 | 3 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 3 | 4 | 4 | 4 | 2 | 2 | 4 | 3 | 2 | 3 | 4 | 3 | 3 | 3 | 3 | 3 | 3 |
* Leader and promotion to Serie A
* Promotion to Serie A
* Play-off semifinals
* Play-off preliminary round
* Play-out
* Relegation to Serie C

## Results

| Home \ Away | ASC | BAR | BRE | CAT | CIT | COM | COS | CRE | FER | LEC | MOD | PAL | PAR | PIS | REG | SAM | SPE | SUD | TER | VEN |
| Ascoli | — | 2–2 | 1–1 | 1–0 | 0–0 | 0–1 | 0–1 | 0–0 | 3–0 | 4–1 | 0–0 | 0–1 | 1–3 | 2–1 | 0–0 | 1–1 | 1–2 | 1–2 | 2–0 | 0–0 |
| Bari | 1–0 | — | 2–0 | 2–2 | 1–1 | 1–1 | 0–0 | 1–2 | 1–0 | 3–1 | 1–1 | 0–0 | 1–1 | 1–1 | 0–2 | 0–1 | 1–1 | 2–1 | 3–1 | 0–3 |
| Brescia | 1–1 | 1–2 | — | 1–1 | 2–0 | 2–0 | 1–0 | 0–3 | 1–1 | 4–1 | 0–1 | 4–2 | 0–2 | 3–1 | 0–0 | 3–1 | 0–0 | 1–1 | 0–0 | 0–0 |
| Catanzaro | 3–2 | 2–0 | 2–3 | — | 1–1 | 1–2 | 2–0 | 0–0 | 3–0 | 5–3 | 1–2 | 1–1 | 0–5 | 2–0 | 0–1 | 1–3 | 3–0 | 2–2 | 2–1 | 3–2 |
| Cittadella | 0–0 | 1–1 | 3–2 | 1–2 | — | 0–3 | 2–0 | 1–2 | 1–1 | 2–1 | 1–1 | 2–0 | 1–2 | 0–1 | 1–0 | 1–2 | 4–1 | 2–1 | 2–2 | 0–0 |
| Como | 0–2 | 2–1 | 1–0 | 1–0 | 2–1 | — | 1–1 | 1–3 | 2–1 | 0–0 | 2–1 | 3–3 | 1–1 | 3–1 | 2–2 | 1–0 | 4–0 | 2–0 | 2–1 | 2–1 |
| Cosenza | 3–0 | 4–1 | 1–2 | 0–2 | 0–0 | 1–2 | — | 1–2 | 1–1 | 3–0 | 1–2 | 1–1 | 0–0 | 1–1 | 2–0 | 1–2 | 2–2 | 2–2 | 1–3 | 4–2 |
| Cremonese | 2–2 | 0–1 | 1–0 | 0–0 | 3–0 | 2–1 | 1–0 | — | 0–1 | 1–0 | 4–0 | 2–2 | 1–2 | 2–1 | 1–1 | 1–1 | 3–0 | 0–1 | 1–2 | 1–0 |
| Feralpisalò | 0–1 | 3–3 | 2–2 | 3–0 | 0–1 | 2–5 | 2–2 | 1–0 | — | 5–1 | 1–1 | 1–2 | 1–2 | 0–1 | 0–3 | 1–3 | 1–2 | 0–2 | 0–1 | 2–2 |
| Lecco | 0–2 | 1–0 | 0–2 | 3–4 | 1–1 | 0–3 | 1–3 | 0–1 | 1–2 | — | 2–3 | 0–1 | 3–2 | 1–3 | 1–0 | 0–1 | 0–0 | 2–1 | 2–3 | 1–2 |
| Modena | 1–0 | 1–1 | 1–2 | 1–3 | 1–1 | 0–0 | 1–1 | 0–1 | 2–3 | 0–0 | — | 0–2 | 3–0 | 2–0 | 2–1 | 0–2 | 0–0 | 1–0 | 2–1 | 1–3 |
| Palermo | 2–2 | 3–0 | 1–0 | 1–2 | 0–1 | 3–0 | 0–1 | 3–2 | 3–0 | 1–2 | 4–2 | — | 0–0 | 3–2 | 1–2 | 2–2 | 2–2 | 2–1 | 2–3 | 0–3 |
| Parma | 1–1 | 2–1 | 2–1 | 0–2 | 2–0 | 2–1 | 1–1 | 1–1 | 2–0 | 4–0 | 1–1 | 3–3 | — | 3–2 | 0–0 | 1–1 | 2–0 | 2–0 | 3–1 | 2–1 |
| Pisa | 1–0 | 1–1 | 1–1 | 2–2 | 2–1 | 1–1 | 1–2 | 0–0 | 3–1 | 1–2 | 2–2 | 4–3 | 1–2 | — | 2–2 | 2–0 | 2–3 | 2–2 | 1–0 | 1–2 |
| Reggiana | 1–1 | 1–1 | 1–1 | 1–0 | 0–2 | 2–2 | 0–4 | 2–2 | 1–1 | 1–1 | 1–0 | 1–3 | 1–1 | 0–0 | — | 1–2 | 0–0 | 1–1 | 0–2 | 1–0 |
| Sampdoria | 2–1 | 1–1 | 1–1 | 1–2 | 1–2 | 1–1 | 2–0 | 1–2 | 2–3 | 2–0 | 2–2 | 1–0 | 0–3 | 0–2 | 1–0 | — | 2–1 | 0–1 | 4–1 | 1–2 |
| Spezia | 2–1 | 1–0 | 0–0 | 1–1 | 4–2 | 0–1 | 0–0 | 0–1 | 0–2 | 1–1 | 1–1 | 1–0 | 0–1 | 0–0 | 1–2 | 0–0 | — | 2–1 | 2–2 | 2–1 |
| Südtirol | 3–1 | 1–0 | 1–1 | 0–1 | 0–0 | 0–1 | 0–1 | 3–0 | 1–0 | 1–0 | 0–0 | 0–1 | 0–0 | 1–2 | 2–3 | 3–1 | 3–3 | — | 4–3 | 0–3 |
| Ternana | 0–1 | 0–0 | 0–1 | 1–0 | 3–1 | 0–1 | 1–0 | 0–1 | 2–1 | 0–0 | 0–0 | 1–1 | 1–3 | 1–1 | 3–0 | 1–2 | 1–1 | 1–1 | — | 0–1 |
| Venezia | 3–1 | 3–1 | 2–0 | 2–1 | 2–0 | 3–0 | 1–1 | 2–1 | 2–1 | 2–2 | 2–2 | 1–3 | 3–2 | 2–1 | 2–3 | 5–3 | 1–0 | 2–3 | 1–0 | — |

## Promotion play-offs

Rules:
* Preliminary round: the higher-placed team plays at home. If teams are tied after regular time, extra-time is played. If scores are still level, the higher-placed team advances;
* Semi-finals: the higher-placed team plays at home for the second leg. If teams are tied on aggregate, the higher-placed team advances;
* Final: the higher-placed team plays at home for the second leg. If teams are tied on aggregate, the higher-placed team is promoted to Serie A, unless the teams finished tied on points after regular season, in which case winner is decided by extra time and a penalty shoot-out if necessary.
| Preliminary round | Preliminary round | Preliminary round | Semi-finals | Semi-finals | Semi-finals | Semi-finals | Semi-finals | Final | Final | Final | Final | Final |
| | | | 5 | Catanzaro | 2 | 1 | 3 | | | | | |
| 5 | Catanzaro | 4 | 4 | Cremonese | 2 | 4 | 6 | | | | | |
| 8 | Brescia | 2 | | | | | | 4 | Cremonese | 0 | 0 | 0 |
| | | | | | | | | 3 | Venezia | 0 | 1 | 1 |
| | | | 6 | Palermo | 0 | 1 | 1 | | | | | |
| 6 | Palermo | 2 | 3 | Venezia | 1 | 2 | 3 | | | | | |
| 7 | Sampdoria | 0 | | | | | | | | | | |

### Final
#### First leg
#### Second leg
## Relegation play-out

The higher-placed team played at home for the second leg. If the teams were tied on aggregate, the lower-placed team was relegated to Serie C, unless the teams finished tied on points after the regular season, in which case the winner would be decided by extra time and a penalty shoot-out if necessary.
| Team 1 | Agg.Tooltip Aggregate score | Team 2 | 1st leg | 2nd leg |
| Bari | 4–1 | Ternana | 1–1 | 3–0 |

### Second leg
## Season statistics
### Top goalscorers

| Rank | Player | Club | Goals |
| 1 | Joel Pohjanpalo | Venezia | 22 |
| 2 | Gennaro Tutino | Cosenza | 20 |
| 3 | Matteo Brunori | Palermo | 17 |
| 3 | Massimo Coda$^1$ | Cremonese | 17 |
| 3 | Pietro Iemmello$^2$ | Catanzaro | 17 |
| 6 | Daniele Casiraghi | Südtirol | 16 |
| 7 | Patrick Cutrone | Como | 14 |
| 8 | Christian Gytkjær$^1$ | Venezia | 12 |
| 9 | Tommaso Biasci$^1$ | Catanzaro | 11 |
| 9 | Dennis Man | Parma | 11 |
| 9 | Pedro Mendes | Ascoli | 11 |
| 9 | Gabriele Moncini$^1$ | Brescia | 11 |
| 9 | Giuseppe Sibilli | Bari | 11 |

#### Note

$^1$ Player scored 1 goals in the play-offs. $^2$ Player scored 2 goals in the play-offs.

### Hat-tricks

| Player | Club | Against | Result | Date |
| Matteo Brunori | Palermo | Venezia | 3–1 (A) | 26 September 2023 |
| Joel Pohjanpalo | Venezia | Sampdoria | 5–3 (H) | 14 January 2024 |
| Gennaro Tutino | Cosenza | Venezia | 4–2 (H) | 20 January 2024 |
| Manuel De Luca | Sampdoria | Ternana | 4–1 (H) | 1 April 2024 |
| Fabio Borini | Sampdoria | Catanzaro | 3–1 (A) | 10 May 2024 |

#### Note

(H) – Home (A) – Away

### Clean sheets

| Rank | Player | Club | Clean sheets | Game weeks |
| 1 | Leandro Chichizola | Parma | 14 | 1–2, 4–5, 12, 15, 17, 19, 21, 32–35, 37 |
| 2 | Jesse Joronen$^3$ | Venezia | 13 | 1, 4–6, 22, 24, 27, 30, 32–33 |
| 2 | Adrian Šemper | Como | 13 | 4, 6–7, 11, 13, 3, 15, 20, 23–24, 27, 31, 37 |
| 4 | Alessandro Micai | Cosenza | 11 | 1, 6, 9, 11, 13, 17–18, 22, 29, 34, 38 |
| 5 | Andrea Fulignati | Catanzaro | 10 | 1, 3, 9–10, 14, 16, 27–28, 31, 34 |
| 5 | Andreas Jungdal | Cremonese | 10 | 13–16, 18, 20–22, 25, 28 |
| 5 | Elhan Kastrati | Cittadella | 10 | 1, 4, 13, 15–16, 19–20, 32–34 |
| 5 | Giacomo Poluzzi | Südtirol | 10 | 2, 7, 10, 20, 26, 28, 30, 32–34 |
| 9 | Francesco Bardi | Reggiana | 9 | 4, 7, 10–11, 19, 22, 26, 28, 36 |
| 9 | Riccardo Gagno | Modena | 9 | 2, 4, 6–8, 1, 34–35, 37 |
| 9 | Mirko Pigliacelli | Palermo | 9 | 1, 4–5, 9, 2, 23, 25, 29, 34 |
| 9 | Emiliano Viviano | Ascoli | 9 | 3, 7, 10, 17, 19, 22, 25–26, 28 |
* ↑ Played between rounds 14 and 15.
* ↑ Played between rounds 10 and 11.
* ↑ Played between rounds 12 and 13.
$^3$ Player kept 3 clean-sheets in the play-offs.

## Attendances

Palermo FC drew the highest average home attendance in the 2023-24 edition of the Serie B.
| # | Football club | Home games | Average attendance |
| 1 | Palermo FC | 19 | 22,717 |
| 2 | Sampdoria | 19 | 22,536 |
| 3 | SSC Bari | 19 | 17,366 |
| 4 | Parma Calcio 1913 | 19 | 13,477 |
| 5 | Modena FC | 19 | 10,067 |
| 6 | US Catanzaro | 19 | 9,800 |
| 7 | Reggiana | 19 | 9,784 |
| 8 | Cremonese | 19 | 9,300 |
| 9 | Ascoli Calcio | 19 | 7,075 |
| 10 | Pisa SC | 19 | 7,036 |
| 11 | Cosenza Calcio | 19 | 6,908 |
| 12 | Venezia FC | 19 | 6,712 |
| 13 | Como 1907 | 19 | 6,012 |
| 14 | Spezia Calcio | 19 | 5,949 |
| 15 | Brescia Calcio | 19 | 5,370 |
| 16 | Ternana Calcio | 19 | 5,142 |
| 17 | Calcio Lecco 1912 | 19 | 4,021 |
| 18 | AS Cittadella | 19 | 3,874 |
| 19 | FC Südtirol | 19 | 3,867 |
| 20 | Feralpisalò | 19 | 2,057 |