EPROM er en elektronisk komponent som bruges til at opbevare "faste" (uforanderlige) data (typisk programkode) i computersystemer. Navnet er et akronym for Erasable Programmable Read-Only Memory – frit oversat til dansk: "Slet- og programmerbar hukommelse der kun kan læses fra".
Det lidt selvmodsigende navn skyldes, at kredsen under "normale" driftsbetingelser fungerer som et uforanderligt ROM-lager, som ikke kan ændres af det computersystem den sidder i. Men EPROM-kredse er forsynet med et gennemsigtigt vindue (vist på billedet til højre), og ved at bestråle selve silicium-chippen inden i komponenten med ultraviolet lys kan man "tømme" hukommelsen for indhold, og derefter under brug af spændinger et godt stykke over normal driftspænding "skrive" nyt indhold ind i den. Til at skrive det nye indhold ind i komponenten bruges et apparat som på dansk populært kaldes for en EPROM-brænder – "brænder" fordi (især ældre) EPROM'er gerne bliver temmelig varme under skrive-processen.
EPROM'en blev opfundet af den israelske ingeniør og chef for Intel i Israel, Dov Frohman.
En EPROM består af et stort antal felteffekttransistorer (FET), hvis styreterminal (den såkaldte gate) er fuldstændig omgivet af siliciumoxid, som er en ekstremt god elektrisk isolator: Kan man anbringe en elektrisk ladning på denne gate, vil ladningen blive "siddende" (som statisk elektricitet) i årevis. Er gate-terminalen "ladet op" på denne måde, virker transistoren som en "afbrudt kontakt", og ved læsning fra EPROM'en tolkes denne afbrudte "kontakt" som binært "0". Uden ladning på gate-terminalen vil transistoren virke som en sluttet kontakt, og følgelig blive læst som binært "1".
Når man belyser chippen med ultraviolet lys, bliver siliciumoxid-isoleringen omkring transistorernes gate-terminaler ganske svagt ledende, hvorved en eventuel ladning "siver væk", og transistoren stilles tilbage til "1"-tilstanden.
Til brug ved skrivning har man en ekstra terminal nær den isolerede gate, og hos de transistorer der skal figurere som binære "0'er" sætter man en "høj" spænding (typisk 12-24 volt; på ældre typer endnu højere) på denne programmeringsterminal: Denne spænding "slår igennem" isoleringen, og påfører derved den isolerede gate den fornødne ladning til at transistoren vil blive aflæst som "0"