EEPROM (Electrically Erasable Programmable Read-Only Memory, wörtlich: elektrisch löschbarer, programmierbarer Nur-Lese-Speicher, auch E2PROM genannt) ist ein nichtflüchtiger, elektronischer Speicherbaustein, der unter anderem in der Computertechnik und dort hauptsächlich in eingebetteten Systemen eingesetzt wird. Früher wurde dieser Bausteintyp mittels eines Programmiergerätes mit beliebigen Daten gefüllt, inzwischen kann dies auch von der angeschlossenen CPU im System bewerkstelligt werden.
Ein EEPROM besteht aus einer Feldeffekt-Transistorenmatrix mit isoliertem Floating Gate, in welcher jeder Transistor ein Bit repräsentiert. Beim Programmiervorgang wird auf dem Gate eine Ladung gespeichert (der Transistor sperrt). Beim Löschen wird diese Ladung wieder entfernt, indem durch einen hohen Spannungspuls die Ladung der Sperrschicht in den Ursprungszustand versetzt wird. Dieser Löschvorgang kann entweder durch ein Programmiergerät oder auch direkt im System erfolgen. Bei EPROMs ist hingegen zum Löschen eine UV-Lampe nötig. Um den gesamten Inhalt eines EEPROMs zu löschen werden deshalb nur einige Sekunden benötigt - verglichen mit 10 bis 30 Minuten beim EPROM.
Nach dem „Brennvorgang“ des EEPROMs werden die geschriebenen Daten durch ein Bitmuster geladener/ungeladener Transistoren repräsentiert. Diese Daten lassen sich nun beliebig oft auslesen. Die Lesespannung liegt dabei unterhalb der Programmierspannung. Die Anzahl der möglichen Schreibvorgänge ist allerdings begrenzt. Die Hersteller garantieren typischerweise mindestens 1.000.000 Schreibzyklen (Stand 2006). Früher war zum Programmieren eine höhere Spannung erforderlich, diese wird inzwischen bausteinintern erzeugt.
EEPROMs können wie Flash-Speicher byteweise beschrieben werden. Ein Nachteil von Flash-Speicher ist allerdings, dass er vor dem Schreiben nur blockweise gelöscht werden kann (wobei die Blockgröße variiert). EEPROMs können hingegen auch byteweise gelöscht werden. Andererseits kann Flash-Speicher deutlich schneller beschrieben werden: Ein Schreibzyklus benötigt hier nur zwischen 1 µs und 1 ms, im Gegensatz zu 1 ms bis 10 ms bei EEPROMs. EEPROMs verwendet man deshalb bevorzugt, wenn einzelne Datenbytes in größeren Zeitabständen verändert und netzausfallsicher gespeichert werden müssen (zum Beispiel Konfigurationsdaten oder Betriebsstundenzähler).