Germany never built one great hub the way Britain built Heathrow or France built Charles de Gaulle. The traffic is spread across a dozen airports instead, which sounds untidy and turns out to be a gift: whatever corner of the country you are heading for, something usually lands near it.
The trick is knowing which one to pick, and that is not always the airport named after the city you want.
German Airports Map
Tap or click any airport on the map to go straight to its page, or read on and pick from there.
The Two Airports for Long-Haul
If you are flying in from North America, Asia, or Australia, you will almost certainly land at Frankfurt (FRA) or Munich (MUC). Everything else in this country is a short-haul airport with a handful of exceptions.
Frankfurt is the bigger one and the busier one, with its own long-distance railway station under the terminal, which means you can land and be in Cologne or Stuttgart without ever seeing Frankfurt itself. It is also a place where connections go wrong, because the walk between some gates is long enough to need its own budget of time.
Munich is calmer, easier to move through, and the better choice if Bavaria or the Alps are your destination. It also has a brewery in the middle of it, which is not something I can say about any other airport on this list.
Given the choice and roughly equal fares, I take Munich.
The Other Big Airports
In the west, Düsseldorf (DUS) is the busiest of the Rhine-Ruhr airports and fast in both directions—twelve minutes into Düsseldorf itself by S-Bahn, and a separate long-distance station at the edge of the field for the Ruhr cities beyond. Cologne Bonn (CGN) sits half an hour away and runs around the clock, which is why the cargo people love it and why it picks up flights nobody else will take at three in the morning. Dortmund (DTM) is the budget option for the eastern Ruhr.
In the north, Hamburg (HAM) opened in 1911 and never moved, which by its own reckoning makes it the oldest commercial airport in the world still doing the job. Bremen (BRE) is small, eleven minutes from its center, and keeps the original Junkers that first crossed the Atlantic westward parked on its terminal roof. Hanover (HAJ) is a TUI fly and Eurowings base and useful if the trade fair is your reason for coming.
In the east, Berlin Brandenburg (BER) is the capital’s only airport since 2020. Leipzig/Halle (LEJ) handles more freight than most and has its own long-distance station. Dresden (DRS) is modest but sits close enough to the city that the transfer barely registers.
In the south, Stuttgart (STR) gets by on a single runway and still moves the traffic of an entire state. Nuremberg (NUE) is the second Bavarian option and the sensible one for Franconia.
What the Booking Page Says and Where the Airport Really Is
Now the part that costs people money.
Frankfurt-Hahn (HHN) carries the name of a city it is nowhere near. It sits in the Hunsrück hills, and the connection into Frankfurt is a dedicated coach that takes long enough to count as a separate leg of your trip. Budget for it in hours, not minutes. The airport is honest about the distance these days, but the name on the ticket does the damage before anyone reads the small print.
Weeze (NRN) is the one you should really watch. The airport itself is named correctly: it is in Weeze, on the Lower Rhine, some 80 km / 50 mi from Düsseldorf and closer to the Dutch border than to any German city of size. Ryanair, however, has sold it for two decades as “Düsseldorf-Weeze.” A Cologne court banned exactly that wording back in 2004 as misleading, on the grounds that it leads people to expect a suburb. A second ruling in 2016 said the same thing again. Result? Flights out of Weeze are still filed under Dusseldorf on booking sites. So much for that.
Memmingen (FMM) is the third one to check. Also correctly named, also in the Allgäu rather than anywhere near a big city, but marketed with Munich attached to it. It is a fine airport for the Alps and for Lake Constance. It is, however, not a Munich airport.
So before you book, look up where the airport code actually is. FRA, HHN, NRN, and FMM are four different places, and only one of them is in Frankfurt.
Regional Airports Worth Knowing
Münster Osnabrück (FMO) and Paderborn/Lippstadt (PAD) cover the country between the Ruhr and Lower Saxony. Karlsruhe/Baden-Baden (FKB) serves the northern Black Forest and the Rhine valley, and unlike the three above, it really is within an easy drive of the city in its name.
Friedrichshafen (FDH) puts you on Lake Constance with the Alps in view, Saarbrücken (SCN) covers the Saarland and the French border, and Erfurt (ERF) is the way into Thuringia.
Along the coast the airports get smaller and more seasonal. Lübeck (LBC) runs a short holiday program. Rostock-Laage (RLG) is charter only now, a few flights a week in season. Heringsdorf (HDF) serves Usedom, and Sylt (GWT) fills up every summer with people who could have taken the train and did not want to.
The Island Airfields
This is the part of German aviation almost no visitor knows about, and it is the best part.
Small operators fly eight-seat aircraft from the mainland out to the North Sea islands, and both of the main ones belong to ferry companies, which means the ferry operators compete with themselves. FLN Frisia flies from Norddeich near Norden, and OFD from Emden. There are airfields on Norderney (NRD), Borkum (BMK), Juist (JUI), Baltrum (BMR), Langeoog (LGO), and Wangerooge (AGE), plus Helgoland (HGL) out in the open sea and a mainland field at Büsum (HEI).
Which islands actually get scheduled flights changes from year to year, and the reason is worth knowing before you plan around one: the new express ferries have been taking the passengers. Juist lost its regular service in 2025 for exactly that reason, and it has been on and off ever since. Norderney and Wangerooge are the steady ones.
Fog is what stops these flights, not wind. When the coast goes white, nobody flies and everybody takes the boat.
Every German Airport at a Glance
Airports where you can book a flight, with their codes and the federal state each one sits in.
| Airport | Code | State |
|---|---|---|
| Berlin Brandenburg | BER | Brandenburg |
| Bremen | BRE | Bremen |
| Cologne Bonn | CGN | North Rhine-Westphalia |
| Dortmund | DTM | North Rhine-Westphalia |
| Dresden | DRS | Saxony |
| Düsseldorf | DUS | North Rhine-Westphalia |
| Erfurt | ERF | Thuringia |
| Frankfurt | FRA | Hesse |
| Frankfurt-Hahn | HHN | Rhineland-Palatinate |
| Friedrichshafen | FDH | Baden-Württemberg |
| Hamburg | HAM | Hamburg |
| Hanover | HAJ | Lower Saxony |
| Heringsdorf | HDF | Mecklenburg-Western Pomerania |
| Karlsruhe/Baden-Baden | FKB | Baden-Württemberg |
| Leipzig/Halle | LEJ | Saxony |
| Lübeck | LBC | Schleswig-Holstein |
| Memmingen | FMM | Bavaria |
| Munich | MUC | Bavaria |
| Münster Osnabrück | FMO | North Rhine-Westphalia |
| Nuremberg | NUE | Bavaria |
| Paderborn/Lippstadt | PAD | North Rhine-Westphalia |
| Rostock-Laage | RLG | Mecklenburg-Western Pomerania |
| Saarbrücken | SCN | Saarland |
| Stuttgart | STR | Baden-Württemberg |
| Sylt | GWT | Schleswig-Holstein |
| Weeze | NRN | North Rhine-Westphalia |
Special-Use Airfields
A number of German airfields no longer sell tickets to anybody. They handle business aviation, cargo, flight training, research, or military traffic instead, and several have interesting histories behind them: Lahr, Oberpfaffenhofen, Ingolstadt-Manching, Brunswick, Siegerland, Cuxhaven/Nordholz, Stralsund-Barth, Neubrandenburg, Leipzig-Altenburg, Magdeburg/Cochstedt, Essen/Mülheim, and Schwerin-Parchim. Berlin’s two old airports, Tegel and Schönefeld, closed when BER opened.
Magdeburg/Cochstedt is the odd one out and the one I would keep an eye on. It belongs to the German Aerospace Center now and serves as the national test range for unmanned aircraft, which means the next thing to take off there routinely may not have a pilot in it at all.