Rail 21, met als ondertitel Sporen naar een nieuwe eeuw, was een ambitieus toekomstplan van de Nederlandse Spoorwegen dat gepresenteerd werd in juni 1988 en dat enkele jaren de basis van het spoorwegbeleid in Nederland vormde.

Visie Rail 21 koppelde een maatschappelijke analyse aan een nieuw dienstregelingsmodel en vervolgens aan uitbreiding van de infrastructuur. Daarmee was Rail 21 integraal van karakter en dat was een belangrijke reden voor haar succes. Opvallend was ook dat Rail 21 voornamelijk betrekking had op het bestaande spoorwegnet, over het algemeen spreken nieuwe spoorlijnen de politiek veel meer aan.

Maatschappelijke analyse Rail 21 werd gepresenteerd als alternatief voor de auto. Halverwege de jaren 80 leefde de economie op waardoor de groei van het autoverkeer versnelde terwijl in die periode ook grote aandacht voor het milieu bestond. NS presenteerde de trein als alternatief voor de auto. Door een combinatie van verbetering van het treinproduct en maatregelen om het autoverkeer af te remmen ("flankerend beleid") zou NS een belangrijke bijdrage leveren aan het accommoderen van de voorziene groei van de mobiliteit.

Een tweede punt was het wegvallen van de Europese binnengrenzen. Nederland was sterk voor Europese integratie. NS koppelde dit aan de opkomst van de Hogesnelheidstrein en stelde voor Nederland op te nemen in het hogesnelheidsnet.

Ook niet onbelangrijk was de voortgaande suburbanisatie. Het bebouwde oppervlak is, met name in de Randstad, sinds 1950 in een enorm tempo uitgebreid met als gevolg dat ruimtelijke vervoerspatronen sterk veranderden. Om de ruimtelijke ontwikkeling te kunnen volgen moest NS meer stations openen waardoor treindiensten langzamer werden. Tot dan toe had men een optimum gevonden door intercity's en stoptreinen te laten rijden maar de mogelijkheden om met twee treinsoorten een aantrekkelijke dienstregeling te bieden leken op te raken. NS stelde daarom voor op een drie-treinensysteem over te gaan.

Ten slotte was duidelijk dat de macht van de nationale overheden zou afnemen ten gunste van regionale en Europese overheid. NS was als nationaal spoorwegbedrijf natuurlijk sterk gekoppeld aan de nationale overheid maar door in haar netwerk meer aandacht te geven aan het Europese schaalniveau en het regionale schaalniveau zou ook op de wensen van andere overheden kunnen worden ingespeeld.

Dienstregelingsmodel Ontwerper van het dienstregelingsmodel van Rail 21 was ir. Maurits van Witsen, het toenmalig hoofd ontwikkeling en planning van de Nederlandse Spoorwegen, die ook het dienstregelingsmodel voor Spoorslag '70 ontworpen had. Van Witsen zelf stelde dat een dienstregelingsmodel een levensduur heeft van maar een jaar of 15, daarna raakt het achterhaald door maatschappelijke ontwikkelingen. Kern van het dienstregelingsmodel was het drie-treinensysteem. Het Nederlandse spoorwegsysteem zou uit drie elkaar aanvullende netwerken gaan bestaan:

Het Eurocity-/Intercitynet Dit netwerk zou Nederland aansluiten op het Europese hogesnelheidsnet, Het EC/IC-net zou drie functies gaan vervullen: het zeer snel verbinden van de 5 Randstadsteden onderling, het zeer snel verbinden van de Randstadcentra met Groningen, Twente, Zuidoost-Gelderland, de grote Brabantse steden en Zuid-Limburg. Om dit mogelijk te maken zou op bestaande spoorlijnen de maximumsnelheid verhoogd worden naar 160 tot 200 km/h waar dat kan over bestaand spoor. Ook werden twee nieuwe hogesnelheidslijnen voorgesteld: de Zuiderzeelijn van Lelystad naar Groningen en de HSL-Zuid van Schiphol naar de Belgische grens. het snel verbinden van de Europese grote steden onderling

Nederland zou 6 IC/EC-verbindingen krijgen: Groningen, Heerenveen, Lelystad-Centrum, Amsterdam CS, Schiphol, Den Haag HS, Rotterdam CS, Antwerpen, Brussel-Centraal, Brussel-Zuid. Na Brussel het ene uur naar Lille-Europe, Ashford, London Waterloo International en het andere uur naar Parijs. Amsterdam CS, Schiphol, Den Haag HS, Rotterdam CS, Breda, Tilburg, Eindhoven, Venlo, Mönchengladbach Hbf, Köln Hbf, met aansluiting op IC/EC-verbinding naar Frankfurt. Schiphol, Amsterdam CS, Utrecht CS, Eindhoven, Sittard, Maastricht, Liège Guillemins. Overstapmogelijkheden op IC/EC-verbinding A met Aachen Hbf, Brussel, Londen en Parijs. Schiphol, Amsterdam CS, Utrecht CS, Arnhem, Duisburg, Düsseldorf, Köln Hbf. Den Haag CS, Utrecht CS, Arnhem, Zutphen, Hengelo, Osnabrück, Hannover. Rotterdam CS, Utrecht CS, Zwolle, Assen, Groningen

Deutsche Bahn zou voor de IC/EC-verbinding A zorgen: Hamburg, Bremen, Osnabrück, Münster, Dortmund, Essen, Duisburg, Düsseldorf, Köln, Aachen, Liège Guillemins, Brussel, en aansluitend het ene uur door naar London en het andere uur door naar Parijs in combinatie met verbinding B uit Nederland.

Het Interregio-Snelnet Het Intercitynet van Spoorslag '70 was in de loop van de jaren steeds langzamer geworden door toevoeging van nieuwe stations. De snelheid op de langere afstand moest terugkomen door het nieuwe Eurocity-/Intercitynet. Op de middellange afstand zou een Interregio-Snelnet de opvolger van het oude Intercitynet zijn. Dit netwerk zou ook op stations stoppen als Hilversum, Gouda en Rotterdam Alexander, die door de nieuwe Intercity voorbij gereden zou worden. Net als de oude Intercity zou de nieuwe Interregio een goed onderling verknoopt netwerk worden. Er zou met snelheden tussen de 140 en 160 km/h gereden gaan worden. De Interregio-treinen zouden tweemaal per uur gaan rijden, waarbij gestreefd werd naar rechtstreekse verbindingen op uurbasis. Het eerste half uur zouden de verbindingen van de InterRegio's er dan als volgt uitzien: Den Helder, Schagen, Alkmaar, Heiloo, Castricum, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS, Almere CS, Lelystad-Centrum, Emmeloord, Heerenveen, Drachten, Groningen Schagen, Alkmaar, Heiloo, Castricum, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS, Amsterdam-Amstel, Duivendrecht, Amsterdam-Bijlmer, Woerden, Gouda, Rotterdam-Alexander, Rotterdam CS Hoorn, Alkmaar, Heiloo, Castricum, Beverwijk, Haarlem, Heemstede-Aerdenhout, Leiden, Den Haag Laan van NOI, Den Haag CS Enkhuizen, Hoorn, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS Zandvoort, Overveen, Haarlem, Amsterdam-Sloterdijk, Amsterdam CS, Amsterdam-Amstel, Duivendrecht, Amsterdam-Bijlmer, Utrecht CS, Driebergen-Zeist, Maarn, Veenendaal-De Klomp, Ede-Wageningen, Arnhem, Nijmegen Den Haag CS, Den Haag Laan van NOI, Leiden, Hoofddorp, Schiphol, Amsterdam-Lelylaan, Amsterdam-Sloterdijk, Amsterdam CS, Hilversum, Amersfoort, Apeldoorn, Deventer, Almelo, Hengelo, Enschede. Den Haag CS, Voorburg, Zoetermeer, Gouda, Woerden, Utrecht CS, Amersfoort, Harderwijk, Zwolle, deel door naar Meppel, Steenwijk, Heerenveen, Leeuwarden en een andere deel door naar Meppel, Hoogeveen, Assen, Groningen. Den Haag CS, Den Haag HS, Delft, Rotterdam CS, Rotterdam-Blaak, Dordrecht, Breda, Tilburg, Eindhoven, Weert, Roermond, Sittard, Geleen-Oost, Heerlen. Rotterdam CS, Rotterdam-Alexander, Gouda, Utrecht CS, Vlissingen, Vlissingen-Souburg, Middelburg, Goes, Kruiningen-Yerseke, Bergen op Zoom, Roosendaal, Breda, Tilburg, 's-Hertogenbosch, Utrecht CS. Eindhoven, 's-Hertogenbosch, Oss, Nijmegen, Arnhem, Dieren, Zutphen, Deventer, Zwolle. Leeuwarden, Hurdegaryp, Zwaagwesteinde, Zuidhorn, Groningen.

Op de knooppuntstations zouden de Interregio's zo veel mogelijk aansluiting op elkaar geven. In het tweede halfuurpatroon zouden de treindiensten een andere uitloop hebben, maar op de hoofdassen zou dan een 30-minutendienst zijn ontstaan. In het tweede half uur zouden dan de volgende treindiensten gaan rijden: Den Helder, Schagen, Alkmaar, Heiloo, Castricum, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS, Almere CS, Lelystad-Centrum met mogelijke aansluiting op IC naar Groningen Schagen, Alkmaar, Heiloo, Castricum, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS, Amsterdam-Amstel, Duivendrecht, Amsterdam-Bijlmer, Woerden, Gouda, Zoetermeer, Voorburg, Den Haag CS Hoorn, Alkmaar, Heiloo, Castricum, Beverwijk, Haarlem, Heemstede-Aerdenhout, Leiden, Den Haag Laan van NOI, Den Haag CS Enkhuizen, Hoorn, Zaandam, Amsterdam-Sloterdijk, Amsterdam CS Zandvoort, Overveen, Haarlem, Amsterdam-Sloterdijk, Amsterdam CS, Amsterdam-Amstel, Duivendrecht, Amsterdam-Bijlmer, Utrecht CS, 's-Hertogenbosch, Eindhoven, Weert, Roermond, Sittard, Geleen-Oost, Heerlen Den Haag CS, Den Haag Laan van NOI, Leiden, Hoofddorp, Schiphol, Amsterdam-Lelylaan, Amsterdam, Sloterdijk, Amsterdam CS, Hilversum, Amersfoort, Harderwijk, Zwolle, Ommen, Hardenberg, Coevorden, Emmen. Den Haag CS, Voorburg, Zoetermeer, Gouda, Woerden, Utrecht CS. Den Haag CS, Den Haag HS, Delft, Rotterdam CS, Rotterdam-Blaak, Dordrecht, Roosendaal, Bergen op Zoom, Kruiningen-Yerseke, Goes, Middelburg, Vlissingen-Souburg, Vlissingen. Rotterdam CS, Rotterdam-Alexander, Gouda, Utrecht CS, Amersfoort, Apeldoorn, Deventer, Almelo, Hengelo, Enschede Oostende, Brugge, Gent-Sint Pieter, Sint Niklaas, Antwerpen-Berchem, Antwerpen-Centraal, Roosendaal, Breda, Tilburg, 's-Hertogenbosch, Oss, Nijmegen, Arnhem. Maastricht, Sittard, Roermond, Venlo, Venray, Cuijk, Nijmegen, Arnhem, Dieren, Zutphen, Deventer, Zwolle. Vervolgens een deel voor Meppel, Steenwijk, Heerenveen, Leeuwarden en een deel voor Meppel, Hoogeveen, Assen, Groningen Leiden, Bodegraven, Woerden, Utrecht CS, Driebergen-Zeist, Maarn, Veenendaal-De Klomp, Ede-Wageningen, Arnhem.

Het Agglo/Regionet Ten slotte moest er een opvolger voor de stoptrein komen. Belangrijk was een goed aanbod te hebben voor het drukke stadsgewestelijk vervoer in de Randstad. Van Witsen onderzocht verschillende modellen voor vervoer op de korte afstand. Zijn ideaal was een versmelting van tram- metro- en spoorwegtechnieken om de optimale verbindingen te kunnen bieden. Al ten tijde van Spoorslag '70 stelde hij een "RandstadRail" voor. Maar binnen NS kon een dergelijke versmelting van techniek op minder sympathie rekenen. In Rail 21 werd het relatief spoorse "Agglo/Regiomodel" opgenomen. De Agglo/Regiotreinen zouden met snelheden tussen de 120 en 140 km/h op de meeste trajecten minstens 2× per uur gaan rijden. Daarbij zouden ze op alle stations langs de route stoppen en op de knooppunten zo veel mogelijk aansluiting geven op de IC- en IR-treinen. In grote en belangrijke middelgrote plaatsen waar spoorlijnen ontbreken wilde de NS regionale busdiensten opzetten in samenwerking met de andere overheidsdochter VSN (Vereenigd Streekvervoer Nederland) die al gauw aan de slag ging met het Interlinerproject. Naast dat NS zelf met Agglo/Regiotreinen wilde gaan rijden wilde NS ook de stads- en streekvervoerbedrijven de lokale verbindingen laten rijden. Treinen zouden beginnen en eindigen in voorstadstations.

Enkele rechtstreekse verbindingen vanuit Amsterdam zijn: 2× per uur naar Utrecht, Veenendaal, Rhenen. 2× per uur naar Hilversum, Amersfoort 2× per uur naar Almere-Buiten. 2× per uur naar Hoorn. 2× per uur naar Alkmaar. 2× per uur naar Haarlem. 2× per uur naar Haarlem, Leiden, Den Haag, Rotterdam, Breda.

Enkele rechtstreekse verbindingen vanuit Utrecht zijn: 2× per uur naar Amsterdam, Alkmaar. 2× per uur naar Hilversum, Duivendrecht, Schiphol, Hoofddorp. 2× per uur naar Hilversum, Almere, Lelystad. 2× per uur naar Baarn. 2× per uur naar Amersfoort, Harderwijk, Zwolle. 2× per uur naar Veenendaal, Rhenen. 1× per uur naar Geldermalsen, Tiel, Arnhem, Arnhem-Velperpoort. 1× per uur naar Geldermalsen, Tiel, Nijmegen, Cuijk. 2× per uur naar Woerden, Alphen aan den Rijn, Leiden 2× per uur naar Woerden, Gouda, Den Haag. 2× per uur naar Woerden, Gouda, Rotterdam. 2× per uur naar Geldermalsen, 's-Hertogenbosch, Eindhoven, Venlo.

Enkele rechtstreekse verbindingen vanuit Arnhem zijn: 2× per uur naar Dieren, Zutphen, Apeldoorn. 2× per uur naar Doetinchem, Winterswijk. 2× per uur naar Ede-Wageningen, Barneveld, Amersfoort. 1× per uur naar Elst, Tiel, Geldermalsen, Utrecht CS, Woerden, Alphen aan den Rijn, Leiden. 2× per uur naar Elst, Nijmegen, Oss, 's-Hertogenbosch.