À l'origine, la route nationale 12 avait un tracé confondu avec la RN 10 depuis la Porte de Saint-Cloud à Paris et se dissociait d'elle à Trappes, vers l'ouest, en direction de Jouars-Pontchartrain, en passant à proximité de Plaisir. Cet ancien tronçon a été déclassé en route départementale 912.
Jusqu'en 2006, la route nationale commençait au niveau de la commune de Saint-Cyr-l'École, au lieu-dit de l'Épi d'or, dans le prolongement de la RN 286. Depuis 2006, cette dernière a été rebaptisée RN 12 et son commencement se situe désormais au lieu-dit Pont Colbert sur les territoires de Versailles et de Jouy-en-Josas, au niveau du futur échangeur de l'A 86.
Entre Saint-Cyr-l'École et Bois-d'Arcy, un échangeur, sur la commune de Montigny-le-Bretonneux, permet de prendre la direction du sud, vers Bordeaux et l'Espagne, par la RN 10 ou de rejoindre l'autoroute A 13 (en direction de Paris ou de Rouen), vers le nord, par l'autoroute A 12.
Elle est presque entièrement à 2×2 voies jusqu'à Verneuil-sur-Avre ; de ce fait, la vitesse autorisée est de 110 km/h.
De Versailles à Dreux
Sur cette section tous les villes et villages sont évités grâce à des déviations par une route à 2×2 voies.
Les communes importantes traversées ou côtoyées sont :
- Versailles (km 1)
- Saint-Cyr-l'École (km 6)
- Montigny-le-Bretonneux, échangeur avec l'autoroute A12 (km 8)
- Bois-d'Arcy (km 9)
- Plaisir (km 16)
- Jouars-Pontchartrain (km 19)
- Houdan (km 41)
- Chérisy (km 58)
- Dreux (km 61)
De Dreux à Verneuil-sur-Avre
Pour être vraiment à 2×2 voies, il manque pour cette section les portions suivantes : la déviation nord de Dreux, la déviation de Nonancourt et la déviation d'Acon.
Les communes traversées sont :
- Saint-Rémy-sur-Avre (km 70)
- Nonancourt (km 74)
- Tillières-sur-Avre (km 85)
- Verneuil-sur-Avre (km 95)
De Verneuil-sur-Avre à Alençon
La route subit des transformations pour être à 2×2 voies. À l'heure actuelle, il manque la connexion entre la future déviation de Verneuil jusqu'à la limite de l'Eure, la liaison entre Saint-Maurice-lès-Charencey et La Ventrouze, la liaison entre Autheuil et Mortagne-au-Perche
Les communes de Mortagne-au-Perche, Le Mêle-sur-Sarthe et Alençon sont évitées grâce à des déviations par une route à 2x2 voies.
Les communes traversées sont :
- Armentières-sur-Avre (km 106)
- Mortagne-au-Perche (km 133)
- Le Mêle-sur-Sarthe (km 148)
- Alençon (km 169)