matchupgrid

← Football

Bundesliga schedule grid 2026-27

All 18 clubs, the whole season, one screen. Rows are clubs; every column is a date, so a row reads left to right in the order the matches are played. An @ means an away match.

Teams as rows, one column per day. Each cell names that day's opponent; an "@" marks an away match.
Team August 2026 September 2026 October 2026 November 2026 December 2026 January 2027 February 2027 March 2027 April 2027 May 2027 P
28 2026-08-28 29 2026-08-29 30 2026-08-30 31 2026-08-31 1 2026-09-01 2 2026-09-02 3 2026-09-03 4 2026-09-04 5 2026-09-05 6 2026-09-06 7 2026-09-07 8 2026-09-08 9 2026-09-09 10 2026-09-10 11 2026-09-11 12 2026-09-12 13 2026-09-13 14 2026-09-14 15 2026-09-15 16 2026-09-16 17 2026-09-17 18 2026-09-18 19 2026-09-19 20 2026-09-20 21 2026-09-21 22 2026-09-22 23 2026-09-23 24 2026-09-24 25 2026-09-25 26 2026-09-26 27 2026-09-27 28 2026-09-28 29 2026-09-29 30 2026-09-30 1 2026-10-01 2 2026-10-02 3 2026-10-03 4 2026-10-04 5 2026-10-05 6 2026-10-06 7 2026-10-07 8 2026-10-08 9 2026-10-09 10 2026-10-10 11 2026-10-11 12 2026-10-12 13 2026-10-13 14 2026-10-14 15 2026-10-15 16 2026-10-16 17 2026-10-17 18 2026-10-18 19 2026-10-19 20 2026-10-20 21 2026-10-21 22 2026-10-22 23 2026-10-23 24 2026-10-24 25 2026-10-25 26 2026-10-26 27 2026-10-27 28 2026-10-28 29 2026-10-29 30 2026-10-30 31 2026-10-31 1 2026-11-01 2 2026-11-02 3 2026-11-03 4 2026-11-04 5 2026-11-05 6 2026-11-06 7 2026-11-07 8 2026-11-08 9 2026-11-09 10 2026-11-10 11 2026-11-11 12 2026-11-12 13 2026-11-13 14 2026-11-14 15 2026-11-15 16 2026-11-16 17 2026-11-17 18 2026-11-18 19 2026-11-19 20 2026-11-20 21 2026-11-21 22 2026-11-22 23 2026-11-23 24 2026-11-24 25 2026-11-25 26 2026-11-26 27 2026-11-27 28 2026-11-28 29 2026-11-29 30 2026-11-30 1 2026-12-01 2 2026-12-02 3 2026-12-03 4 2026-12-04 5 2026-12-05 6 2026-12-06 7 2026-12-07 8 2026-12-08 9 2026-12-09 10 2026-12-10 11 2026-12-11 12 2026-12-12 13 2026-12-13 14 2026-12-14 15 2026-12-15 16 2026-12-16 17 2026-12-17 18 2026-12-18 19 2026-12-19 20 2026-12-20 21 2026-12-21 22 2026-12-22 23 2026-12-23 24 2026-12-24 25 2026-12-25 26 2026-12-26 27 2026-12-27 28 2026-12-28 29 2026-12-29 30 2026-12-30 31 2026-12-31 1 2027-01-01 2 2027-01-02 3 2027-01-03 4 2027-01-04 5 2027-01-05 6 2027-01-06 7 2027-01-07 8 2027-01-08 9 2027-01-09 10 2027-01-10 11 2027-01-11 12 2027-01-12 13 2027-01-13 14 2027-01-14 15 2027-01-15 16 2027-01-16 17 2027-01-17 18 2027-01-18 19 2027-01-19 20 2027-01-20 21 2027-01-21 22 2027-01-22 23 2027-01-23 24 2027-01-24 25 2027-01-25 26 2027-01-26 27 2027-01-27 28 2027-01-28 29 2027-01-29 30 2027-01-30 31 2027-01-31 1 2027-02-01 2 2027-02-02 3 2027-02-03 4 2027-02-04 5 2027-02-05 6 2027-02-06 7 2027-02-07 8 2027-02-08 9 2027-02-09 10 2027-02-10 11 2027-02-11 12 2027-02-12 13 2027-02-13 14 2027-02-14 15 2027-02-15 16 2027-02-16 17 2027-02-17 18 2027-02-18 19 2027-02-19 20 2027-02-20 21 2027-02-21 22 2027-02-22 23 2027-02-23 24 2027-02-24 25 2027-02-25 26 2027-02-26 27 2027-02-27 28 2027-02-28 1 2027-03-01 2 2027-03-02 3 2027-03-03 4 2027-03-04 5 2027-03-05 6 2027-03-06 7 2027-03-07 8 2027-03-08 9 2027-03-09 10 2027-03-10 11 2027-03-11 12 2027-03-12 13 2027-03-13 14 2027-03-14 15 2027-03-15 16 2027-03-16 17 2027-03-17 18 2027-03-18 19 2027-03-19 20 2027-03-20 21 2027-03-21 22 2027-03-22 23 2027-03-23 24 2027-03-24 25 2027-03-25 26 2027-03-26 27 2027-03-27 28 2027-03-28 29 2027-03-29 30 2027-03-30 31 2027-03-31 1 2027-04-01 2 2027-04-02 3 2027-04-03 4 2027-04-04 5 2027-04-05 6 2027-04-06 7 2027-04-07 8 2027-04-08 9 2027-04-09 10 2027-04-10 11 2027-04-11 12 2027-04-12 13 2027-04-13 14 2027-04-14 15 2027-04-15 16 2027-04-16 17 2027-04-17 18 2027-04-18 19 2027-04-19 20 2027-04-20 21 2027-04-21 22 2027-04-22 23 2027-04-23 24 2027-04-24 25 2027-04-25 26 2027-04-26 27 2027-04-27 28 2027-04-28 29 2027-04-29 30 2027-04-30 1 2027-05-01 2 2027-05-02 3 2027-05-03 4 2027-05-04 5 2027-05-05 6 2027-05-06 7 2027-05-07 8 2027-05-08 9 2027-05-09 10 2027-05-10 11 2027-05-11 12 2027-05-12 13 2027-05-13 14 2027-05-14 15 2027-05-15 16 2027-05-16 17 2027-05-17 18 2027-05-18 19 2027-05-19 20 2027-05-20 21 2027-05-21 22 2027-05-22
FCA Augsburg S04 3-0 @SGE 4-1 B04 2-2 @SVW 2-3 FCB @ELV UNB SCF @RBL M05 @TSG KOE ? @BVB ? SCP ? @VFB ? BMG ? @HSV ? @S04 ? SGE ? @B04 ? SVW ? @FCB ? ELV ? @UNB ? @SCF ? RBL ? @M05 ? TSG ? @KOE ? BVB ? @SCP ? VFB ? @BMG ? HSV 34
B04 Bayer 04 Leverkusen @ELV 2-3 UNB 4-0 @FCA 2-2 RBL 2-0 @M05 SCF @TSG VFB @KOE SCP @BVB BMG ? @SVW ? SGE ? @HSV ? @FCB ? S04 ? ELV ? @UNB ? FCA ? @RBL ? M05 ? @SCF ? TSG ? @VFB ? KOE ? @SCP ? BVB ? @BMG ? SVW ? @SGE ? HSV ? FCB ? @S04 34
FCB Bayern München VFB 5-1 @S04 0-0 @ELV 2-1 UNB 7-0 @FCA RBL @SCF BVB @M05 KOE @HSV SCP ? @TSG ? SVW ? @BMG ? B04 ? @SGE ? @VFB ? S04 ? ELV ? @UNB ? FCA ? @RBL ? SCF ? @BVB ? M05 ? @KOE ? HSV ? @SCP ? TSG ? @SVW ? BMG ? @B04 ? SGE 34
BVB Borussia Dortmund HSV 2-0 @TSG 3-2 SCP 3-0 @VFB 1-0 SVW @UNB SGE @FCB ELV @BMG B04 @S04 ? FCA ? @RBL ? M05 ? @KOE ? SCF ? @HSV ? TSG ? @SCP ? VFB ? @SVW ? UNB ? @SGE ? FCB ? @ELV ? BMG ? @B04 ? S04 ? @FCA ? RBL ? @M05 ? KOE ? @SCF 34
BMG Borussia Mönchengladbach @RBL 0-3 ELV 3-4 @SCF 0-5 M05 3-4 @KOE TSG @VFB SCP @HSV BVB @SVW @B04 ? SGE ? @S04 ? FCB ? @FCA ? UNB ? RBL ? @ELV ? SCF ? @M05 ? KOE ? @TSG ? VFB ? @SCP ? HSV ? @BVB ? SVW ? B04 ? @SGE ? S04 ? @FCB ? FCA ? @UNB 34
SGE Eintracht Frankfurt @UNB 3-3 FCA 1-4 @M05 3-1 SCF 2-2 @RBL KOE @BVB HSV @SCP TSG @VFB SVW ? @BMG ? @B04 ? S04 ? @ELV ? FCB ? UNB ? @FCA ? M05 ? @SCF ? RBL ? @KOE ? BVB ? @HSV ? SCP ? @TSG ? VFB ? @SVW ? BMG ? B04 ? @S04 ? ELV ? @FCB 34
ELV Elversberg B04 3-2 @BMG 4-3 FCB 1-2 @S04 0-0 @UNB FCA @RBL M05 @BVB SCF @KOE VFB ? @SCP ? HSV ? @TSG ? SGE ? @SVW ? @B04 ? BMG ? @FCB ? S04 ? UNB ? @FCA ? RBL ? @M05 ? BVB ? @SCF ? KOE ? @VFB ? SCP ? @HSV ? TSG ? @SGE ? SVW 34
SCF Freiburg SVW 4-1 @SCP 1-0 BMG 5-0 @SGE 2-2 S04 @B04 FCB @FCA UNB @ELV RBL TSG ? @M05 ? VFB ? @KOE ? HSV ? @BVB ? @SVW ? SCP ? @BMG ? SGE ? @S04 ? B04 ? @FCB ? FCA ? @UNB ? ELV ? @RBL ? @TSG ? M05 ? @VFB ? KOE ? @HSV ? BVB 34
HSV Hamburger SV @BVB 0-2 M05 0-5 @RBL 0-5 KOE 2-1 @TSG VFB @SCP @SGE BMG @SVW FCB @UNB ? S04 ? @ELV ? B04 ? @SCF ? FCA ? BVB ? @M05 ? RBL ? @KOE ? TSG ? @VFB ? SCP ? SGE ? @BMG ? SVW ? @FCB ? UNB ? @S04 ? ELV ? @B04 ? SCF ? @FCA 34
TSG Hoffenheim @KOE 2-3 BVB 2-3 VFB 2-1 @SCP 1-3 HSV @BMG B04 @SVW S04 @SGE FCA @SCF ? FCB ? @UNB ? ELV ? @M05 ? RBL ? KOE ? @BVB ? @VFB ? SCP ? @HSV ? BMG ? @B04 ? SVW ? @S04 ? SGE ? @FCA ? SCF ? @FCB ? UNB ? @ELV ? M05 ? @RBL 34
KOE Köln TSG 3-2 @VFB 1-4 SVW 1-1 @HSV 1-2 BMG @SGE S04 @UNB B04 @FCB ELV @FCA ? RBL ? @M05 ? SCF ? BVB ? @SCP ? @TSG ? VFB ? @SVW ? HSV ? @BMG ? SGE ? @S04 ? UNB ? @B04 ? FCB ? @ELV ? FCA ? @RBL ? M05 ? @SCF ? @BVB ? SCP 34
M05 Mainz SCP 0-0 @HSV 5-0 SGE 1-3 @BMG 4-3 B04 @S04 SVW @ELV FCB @FCA UNB @RBL ? SCF ? KOE ? @BVB ? TSG ? @VFB ? @SCP ? HSV ? @SGE ? BMG ? @B04 ? S04 ? @SVW ? ELV ? @FCB ? FCA ? @UNB ? RBL ? @SCF ? @KOE ? BVB ? @TSG ? VFB 34
SCP Paderborn @M05 0-0 SCF 0-1 @BVB 0-3 TSG 3-1 VFB @SVW HSV @BMG SGE @B04 S04 @FCB ? ELV ? @FCA ? RBL ? @UNB ? KOE ? M05 ? @SCF ? BVB ? @TSG ? @VFB ? SVW ? @HSV ? BMG ? @SGE ? B04 ? @S04 ? FCB ? @ELV ? FCA ? @RBL ? UNB ? @KOE 34
RBL RB Leipzig BMG 3-0 @SVW 1-3 HSV 5-0 @B04 0-2 SGE @FCB ELV @S04 FCA @UNB @SCF M05 ? @KOE ? BVB ? @SCP ? VFB ? @TSG ? @BMG ? SVW ? @HSV ? B04 ? @SGE ? FCB ? @ELV ? S04 ? @FCA ? UNB ? SCF ? @M05 ? KOE ? @BVB ? SCP ? @VFB ? TSG 34
S04 Schalke @FCA 0-3 FCB 0-0 @UNB 3-1 ELV 0-0 @SCF M05 @KOE RBL @TSG VFB @SCP BVB ? @HSV ? BMG ? @SGE ? SVW ? @B04 ? FCA ? @FCB ? UNB ? @ELV ? SCF ? @M05 ? KOE ? @RBL ? TSG ? @VFB ? SCP ? @BVB ? HSV ? @BMG ? SGE ? @SVW ? B04 34
VFB Stuttgart @FCB 1-5 KOE 4-1 @TSG 1-2 BVB 0-1 @SCP @HSV BMG @B04 SVW @S04 SGE @ELV ? UNB ? @SCF ? FCA ? @RBL ? M05 ? FCB ? @KOE ? TSG ? @BVB ? SCP ? HSV ? @BMG ? B04 ? @SVW ? S04 ? @SGE ? ELV ? @UNB ? SCF ? @FCA ? RBL ? @M05 34
UNB Union Berlin SGE 3-3 @B04 0-4 S04 1-3 @FCB 0-7 ELV BVB @FCA KOE @SCF RBL @M05 HSV ? @VFB ? TSG ? @SVW ? SCP ? @BMG ? @SGE ? B04 ? @S04 ? FCB ? @ELV ? @BVB ? FCA ? @KOE ? SCF ? @RBL ? M05 ? @HSV ? VFB ? @TSG ? SVW ? @SCP ? BMG 34
SVW Werder Bremen @SCF 1-4 RBL 3-1 @KOE 1-1 FCA 3-2 @BVB SCP @M05 TSG @VFB HSV BMG @SGE ? B04 ? @FCB ? UNB ? @S04 ? ELV ? SCF ? @RBL ? KOE ? @FCA ? BVB ? @SCP ? M05 ? @TSG ? VFB ? @HSV ? @BMG ? SGE ? @B04 ? FCB ? @UNB ? S04 ? @ELV 34

home @ away no matches league-wide

306 matches, Aug 28 – May 22. 198 still without a confirmed kick-off time. Football data provided by the Football-Data.org API, updated nightly.

The 2026-27 Bundesliga season at a glance

The 2026-27 season runs from Aug 28 to May 22: 306 matches across 34 match rounds, 34 for each of the 18 clubs, split evenly between home and away. Every club plays every other club twice, once at each ground.

The grid is the point of this page. One club's next three matches tell you nothing about whether they are about to face three of last season's top four while a rival plays three of the bottom — reading the whole column down 18 rows tells you at once. The P column counts matches in the range you are looking at, which is the quickest way to spot who has a game in hand.

Why a column is a day

Every column here is a calendar date, the same as on every other grid on this site. A club plays about once a week, so most columns are empty: this season runs across 268 of them and 212 carry no match in the whole competition — and that is the honest picture. A row reads left to right in the order the matches are actually played, the gap between two matches is drawn to scale, and a Wednesday night in a congested week sits where it belongs instead of inside a block with the weekend.

This page grouped its columns by match round until 2026-08-22. Rounds are tidier, but a round is an ordering rather than a stretch of the calendar: a match moved for a cup tie keeps its round while taking a new date, so a club's row could show round one after round two — and a schedule that has to be read in an order other than left to right is not a schedule. Dates cannot do that.

Kick-off times, and why some are missing

The schedule is published for the whole season up front, but kick-off times are not. Broadcasters select matches about five or six weeks ahead, and only then is a match pinned to a particular slot — it can move day as well as time. Of the 306 matches here, 108 have a confirmed kick-off — everything through match round 11. The rest show a date and a ?, because showing a placeholder time that is going to change would be worse than showing none.

Confirmed times are converted to your own timezone — detected automatically, overridable in the “Times in” control. Tapping a match shows the full local date, the ground, and the kick-off in the stadium's own time.

Frequently asked questions

How many matches are in the 2026-27 Bundesliga season?

306 matches: 34 match rounds, so 34 for each of the 18 clubs — 17 at home and 17 away. Every club plays every other club twice.

When does the 2026-27 Bundesliga season start and end?

The season runs from Aug 28 to May 22. Cup competitions are not shown on this grid.

Why do some matches show no kick-off time?

Because it has not been decided yet. The schedule is published for the whole season up front, but kick-off times are confirmed only about five or six weeks ahead, once the broadcasters have chosen which matches to televise — and a match can move day as well as time when that happens. A match whose time is still open is marked with a ? on this grid. Right now 108 of the 306 have a confirmed kick-off, through match round 11.

How do I see Bundesliga kick-off times in my own timezone?

They are already converted. The page detects your timezone and shows every confirmed kick-off in it, and the "Times in" control lets you pick another. Matches whose time is not yet confirmed show a date only, rather than a placeholder that would move.

How do I read the grid?

Rows are clubs, alphabetical. Every column is a calendar date, so a club's row runs left to right in the order it actually plays, and a column is one day's matches across the whole division. Most columns are empty, because a club plays about once a week — that emptiness is the shape of a football season. An @ and a separate colour mark an away match, a ? marks a kick-off time the broadcasters have not fixed yet, and the final score replaces the opponent once a match has been played.

Clubs

Augsburg Bayer 04 Leverkusen Bayern München Borussia Dortmund Borussia Mönchengladbach Eintracht Frankfurt Elversberg Freiburg Hamburger SV Hoffenheim Köln Mainz Paderborn RB Leipzig Schalke Stuttgart Union Berlin Werder Bremen