I det 19. århundrede var det svært at komme til Skagen, da havnen først blev anlagt i 1907 og den første brugbare landevej mellem Ålbæk og Skagen først var færdig i 1933. Landtransport foregik med hestevogn i strandkanten. Sidst i 1880'erne blev det besluttet at anlægge jernbane gennem klitterne.  Anlægsarbejdet startede 26. juli 1889, og banen blev åbnet 24. juli 1890. Pga. den svage økonomi var banen anlagt som smalsporet med en sporvidde på 1.000 mm. Skinnevægten var kun 12,5 kg/m, og togene måtte højest køre 30 km/t. Skagensbanen fik adgang til Frederikshavn Havnebane, idet sporet til havnen var trestrenget indtil 1924. Der var kun én regulær mellemstation (Ålbæk). De øvrige standsningssteder var 4 vogterhuse med ventesale, beliggende ved holdepladser med læssespor (Rimmen, Jerup, Hulsig og Højen), og 3 stoppesteder med ventesale (Elling, Napstjert og Bunken). De første bygninger var tegnet af Thomas Arboe. I 1916 blev der oprettet trinbræt ved Sandmilen. Elling og Napstjert fik med tiden også læssespor.  Normalspor og ny linjeføring Med flere turister og fisketransporter blev banen en stor succes, og den smalsporede bane måtte ombygges for at klare transporterne. 6. juni 1924 blev banen genåbnet med normalspor (1.435 mm). Samtidig havde man benyttet lejligheden til at ændre dens linjeføring to steder. Den 13 km lange strækning Frederikshavn-Jerup blev forlagt længere mod øst, så der kunne bygges station i den opvoksende fiskerihavneby Strandby. Elling mistede dermed sin holdeplads på Skagensbanen, men fik i stedet et trinbræt på Vendsysselbanen 2 km mod sydvest 1929-55. Under opførelsen af den ny jernbanebro over Elling Å fandt man i 1922 Ellingåskibet, som dog først blev udgravet i 1968. I Skagen by blev banen forlagt mod nord for at give plads til et større stationsområde. Holdepladsen i Rimmen måtte flyttes lidt mod øst, hvor der blev opført en rigtig stationsbygning i stedet for vogterhuset. Den blev tegnet af Ulrik Plesner, som også tegnede udvidelser af stationsbygningerne i Skagen (1914-19), Hulsig (1921) og Napstjert (1922) samt en ny station i Ålbæk (1933).  Spor Sporet fra 1924 havde en skinnevægt på 24,39 kg/m, men var meget slidt sidst i 1950'erne, så i 1960-73 blev sporet fornyet med en skinnevægt på 37 kg/m. I 2003-04 blev sporet igen fornyet til et 60 kg/m langskinnespor på betonsveller. I modsætning til tidligere blev skinnerne svejset sammen for at nedbringe støjen inde i vognene. Samtidig kunne hastigheden på banen øges til 100 km/t, mellem Hulsig og Frederikshavnsvej i Skagen 120 km/t.  Rullende materiel Fra starten benyttede Skagensbanen damplokomotiver. Først i 1930'erne erkendte banen, at brugen af damp ikke kunne betale sig. I 1935 blev diesellokomotivet SB M 4 købt. Under 2. verdenskrig stod damplokomotiverne dog for 75 % af transporterne. Da skinnebusser ikke passede til Skagensbanen, fordi de ikke kunne medtage fiskevogne, blev de gamle damplokomotiver renoveret efter krigen. Desuden blev der indkøbt et brugt damplokomotiv. I 1950, 1952 og 1960 blev der købt dieselmotorvogne. I 1952 blev der også købt et nyt diesellokomotiv, SB M 6. Med denne brogede vognpark var damplokomotiverne overflødige, og i 1968-71 blev de taget ud af drift. Sidst i 1960'erne var lokomotiverne og vognene så nedslidte, at der blev købt moderne Y-tog. 1. marts 1968 ankom det første til Skagen, og i de følgende år blev der købt i alt 4 motorvogne, 2 mellemvogne og 2 styrevogne. Yderligere en motorvogn og to mellemvogne blev købt i 1983-84. I 1969 blev et Frichs-diesellokomotiv ("Marcipanbrødet") købt til de store skoletog og som trækkræft til godstogene. Endnu et "Marcipanbrød" blev købt i 1991, da godstransporterne var på 72.000 tons. Der blev også købt to Mx-lokomotiver fra DSB i hhv. 1992 og 1994. I 1993 blev en Frichs-rangertraktor købt fra Mariager-Handest Veteranjernbane, og året efter blev en nyere Köf III-rangertraktor anskaffet.  6 august 2017 skal Nordjyske Jernbaner overtage strækningen mellem Frederikshavn og Aalborg samt nærbanen mellem Aalborg og Skørping. Hertil er der indkøbt 13 stk Lint 41, hvoraf de første 3 ankom 21 december 2016 og de resterende togsæt primo 2017.  De senere årtier I 1991 blev der anlagt et nyt standsningssted i udkanten af Skagen, Frederikshavnsvej Trinbræt, som i dag er banens næstmest benyttede efter Skagen Station. Der blev desuden anlagt nye krydsningsstationer i Hulsig og Strandby, og der blev opsat nye signal- og sikringsanlæg med linjeblokanlæg mellem stationerne. Pga. den store godsmængde blev havnesporet i Skagen forlænget med 420 meter, så det kom tættere på fiskemelsfabrikken. DSB havde i 1990'erne en fast InterCity-forbindelse mellem København og Skagen. I samme årti fik Skagensbanen nyt logo, og togene blev malet blå og hvide. I januar 2001 overtog Nordjyllands Amt statens aktier og ansvaret for driften og infrastrukturen på Hirtshals- og Skagensbanerne. Herefter fusionerede Skagensbanen A/S, selskabet bag banen, og A/S Hjørring Privatbaner, som stod for Hirtshalsbanen, i Nordjyske Jernbaner A/S med hovedsæde i Hjørring. Efter fusionen har ejeren investeret 260 mio. kr. i en stor modernisering og rationalisering af virksomheden med nye skinner, tekniske anlæg og tog. 9. januar 2005 blev 4 nye Desiro-togsæt fra Siemens med en maksimumfart på 120 km/t indsat på Skagensbanen, og de gamle Y-tog blev solgt. Samtidig ophørte buskørslen, som Skagensbanen havde startet i 1933 for at erstatte de togafgange, der kun havde få passagerer. Banens passagertal steg fra 520.000 i 2004 til 580.000 i 2006.