Empfang Telefon, Chat, Termine, Rückruf
Dokumentation Angebote, Protokolle, Rechnungen
Betrieb Mail, Touren, Projekte, Recruiting
Branchen-Fachwissen SHK, Elektro, Maler
Sichtbarkeit Blog, Google-Profil, Audit
Für Ihre Branche KI-Lösungen für 8 Branchen
Open Source & KI Eigene Plattformen statt SaaS-Inseln
Verkündigung digital Werkzeuge für Gemeinden
Beispiele aus dem Haus KI-Anwendungen, die wir selbst betreiben
Übersicht Alle 56 Produkte auf einer Seite
Alle KI-Lösungen →
Beispiele aus dem Haus
Computer & Laptops PC, Mac, Kaufberatung
Mobilgeräte Smartphone, TV, Fotos
Peripherie & Netzwerk Drucker, WLAN, NAS
Smart Home & IoT Automation, PV, Homeoffice
Alle Hardware-Leistungen →
IT-Infrastruktur VPN, Netzwerk, DSGVO
Business-Software Buchhaltung, Kasse, Zeiterfassung
Web & Marketing Webseite, SEO, WordPress, Newsletter
Entwicklung & Beratung KI-Tools, Automation, Wartung, Beratung
Krypto & Web3 Steuern, Wallets, Mining, DePIN
Monitoring & IoT Sensoren, Dashboards, Alarmierung
Branchen-IT Spezialisierte IT für kleine Betriebe
Service & Recht Termin, Verträge, Karriere
Alle Unternehmens-Leistungen →
spuerwerk© Mess-Module Temperatur, CO₂, Strom, …
spuerwerk© Branchen I Apotheke, Praxis, Hotel, …
spuerwerk© Branchen II Lager, Logistik, Werkstatt, …
linkx© Hub + Module Schlauer QR-Code mit Funktion
linkx© Module II Karte, Wache, Wahl, …
naturwerk© Bürger-Tech gegen Umweltgift
Weitere Submarken bildwache, fermentwerk, kurierwerk, spaehwerk
diffus© Modi I Privat, Erbe, B2B, Versicherung
diffus© Modi II Pflege, Miete, Reise, Sammler, Logistik
Alle Submarken →
Web-Entwicklung 27.05.2026 · Lesezeit: ca. 8 Min.

Schlüssel-Wert-Storage in Browsern: localStorage, sessionStorage, IndexedDB und OPFS im Vergleich

Wer im Browser Daten zwischenspeichern will, hat heute vier ernstzunehmende Optionen: localStorage, sessionStorage, IndexedDB und das relativ junge Origin Private File System (OPFS). Die vier sehen auf den ersten Blick wie Varianten desselben Themas aus, sind aber technisch ziemlich verschieden. Eine falsche Wahl rächt sich entweder mit eingefrorenen UIs oder mit Daten, die nach jedem Refresh wieder weg sind. Dieser Artikel sortiert die Optionen und nennt klare Kriterien für die Auswahl.

Entwicklerarbeitsplatz mit aufgeklapptem Notebook, sichtbar sind die Browser-DevTools im Application-Tab mit Local Storage, Session Storage und IndexedDB, daneben ein Notizbuch mit handgezeichneten Storage-Diagrammen
Vier Speicher, vier Profile — und nur eines davon passt zu jeder Aufgabe.

Die schnelle Übersicht

Bevor wir in die Details gehen, vier Profile als mentale Landkarte. localStorage und sessionStorage sind synchrone Schlüssel-Wert-Speicher, die nur Strings ablegen und auf 5 bis 10 Megabyte begrenzt sind — mit dem Unterschied, dass localStorage den Tab überlebt und sessionStorage nicht. IndexedDB ist eine vollwertige asynchrone Datenbank mit strukturierten Objekten, Indizes und Transaktionen und bietet typischerweise hunderte Megabyte bis Gigabyte Speicher. OPFS ist ein privates virtuelles Dateisystem pro Origin, das echte Dateien mit Random Access erlaubt und besonders dann seine Stärken ausspielt, wenn große Binärdaten oder eine SQLite-Datenbank im Browser landen sollen. Die spannende Frage ist nicht, welcher Speicher der beste ist — sondern für welche Aufgabe welcher Speicher passt.

localStorage: das Karteikästchen für Konfiguration

localStorage ist die einfachste und älteste Schlüssel-Wert-Schnittstelle im Browser. Sie speichert Strings unter String-Schlüsseln, lebt pro Origin, überlebt das Schließen des Tabs und ist synchron. Genau dieser letzte Punkt ist Stärke und Schwäche zugleich: Aufrufe wie localStorage.setItem('theme', 'dark') sind sofort wirksam, blockieren aber den Haupt-Thread, solange die Festplatte braucht. Bei kleinen Werten ist das egal — bei vielen oder großen Operationen wird daraus eine UI-Bremse. Wir haben mehrfach gesehen, wie Teams JSON-Blobs mit mehreren hundert Kilobyte in localStorage serialisieren und dann nicht verstehen, warum die Seite beim Tab-Wechsel kurz hakt. Für solche Mengen ist localStorage einfach nicht gedacht.

Klassische Einsatzfälle, in denen localStorage hervorragend passt: UI-Präferenzen wie Theme, Sprache oder Spaltenanordnung in einer Tabelle, Feature-Flags und A/B-Test-Bucket-Zuweisungen, kleine Tokens, die ohnehin schon im Browser landen würden (mit den üblichen XSS-Vorbehalten), Cache-Marker wie „ich habe diesen Hinweis schon geschlossen“. Was nicht hineingehört: alles, was strukturierter ist als ein Schlüssel-Wert-Paar, alles, was über ein paar Kilobyte hinausgeht, und alles, was schnell wieder weg sein sollte.

sessionStorage: derselbe Mechanismus, andere Lebenszeit

sessionStorage ist API-identisch zu localStorage, hat aber eine andere Persistenz-Regel: Die Daten leben nur, solange der Tab offen ist. Schließt der Nutzer den Tab, ist alles weg. Öffnet er die Seite in einem zweiten Tab, sieht er einen leeren Speicher — die Tabs teilen den Inhalt nicht. Das macht sessionStorage ungeeignet für Konfiguration, aber sehr nützlich für Zustand, der explizit nicht überleben soll: Mehr-Schritt-Formulare, Wizard-Fortschritte, kurzlebige Zwischenstände beim Bezahlvorgang. Wer hier localStorage verwendet, riskiert, dass alte Eingaben aus der letzten Session den Nutzer in einer neuen Sitzung verwirren.

IndexedDB: die richtige Datenbank im Browser

IndexedDB ist die Antwort auf alles, was nicht mehr in ein Schlüssel-Wert-Paar passt. Es ist eine vollwertige, transaktionale Datenbank im Browser, die strukturierte Objekte speichert, Indizes über Felder unterstützt und asynchron arbeitet. Statt localStorage.getItem öffnen Sie eine Datenbank, beginnen eine Transaktion, lesen aus einem Object-Store. Der Aufwand ist deutlich höher, aber dafür bekommen Sie Speichervolumen im Bereich hunderter Megabyte bis Gigabyte, strukturierte Objekte ohne JSON.stringify-Umwege, Indizes für Suche und sortierte Iteration, Transaktionen für konsistente Updates auf mehreren Stores sowie eine asynchrone API, die den Haupt-Thread nicht blockiert.

Der historische Ruf von IndexedDB war „mächtig, aber unangenehm“ — die rohe API ist tatsächlich umständlich, mit Events statt Promises und vielen kleinen Stolpersteinen. Heute löst praktisch jedes Projekt das mit einer dünnen Bibliothek wie idb oder Dexie, die die API auf moderne Promise-Patterns hebt. Damit ist IndexedDB für die meisten Anwendungen handhabbar geworden. Wir setzen es ein für Offline-fähige Anwendungen mit synchronisierten Datensätzen (zum Beispiel CRMs mit lokaler Kundenliste), für Browser-basierte Editoren, die ein Dokumentenmodell halten müssen, und für Caches, die schneller lokal aus IndexedDB als per Netzwerk gefüllt werden können.

OPFS: ein virtuelles Dateisystem pro Origin

Das Origin Private File System ist die jüngste der vier Optionen. Es ist Teil der File System Access API und gibt jeder Origin einen privaten Speicherbereich, in dem sie sich verhalten kann wie auf einem klassischen Dateisystem: Dateien öffnen, schreiben, seeken, schließen. Die Dateien sind für die Origin privat — weder andere Webseiten noch der Nutzer selbst können direkt in dem Bereich blättern.

OPFS spielt seine Stärken aus, wenn Sie große, binäre Daten persistent halten wollen (etwa eine SQLite-Datenbank, ein Video, eine kompilierte WASM-Datei), wenn Sie partiellen Zugriff brauchen — OPFS unterstützt Random Access auf einzelne Bytes, anders als IndexedDB mit seinen Blobs — oder wenn Sie einen Web Worker für hochfrequente Schreiboperationen einsetzen können. Genau diese letzte Eigenschaft ist der eigentliche Treiber: OPFS ist die Grundlage, auf der SQLite im Browser läuft. Die offizielle SQLite-WASM-Distribution verwendet OPFS als Backing-Store. Wer also „SQLite im Browser“ sagt, meint heute meist „OPFS unter SQLite“. Das hat eine spürbare praktische Wirkung: Komplexe lokale Anwendungen, die früher entweder LocalStorage-Hacks oder einen Server brauchten, laufen jetzt vollständig im Browser mit echter SQL-Datenbank.

Was OPFS nicht ist: ein universeller Datei-Picker. Der Browser exponiert OPFS nicht im normalen Dateisystem. Wer dem Nutzer Dateien direkt anbieten will, etwa zum Speichern auf seinem Schreibtisch, braucht weiterhin die normale File System Access API oder einen Download-Trigger.

Entscheidungsleitfaden in vier Fragen

Wenn Sie an einem Punkt sind, an dem Sie sich entscheiden müssen, helfen vier Fragen. Wie groß sind die Daten? Unter 100 KB und nur String — localStorage. Darüber — IndexedDB oder OPFS. Sollen die Daten den Tab überleben? Nein — sessionStorage. Ja — alle anderen. Ist die Struktur ein Schlüssel-Wert-Paar oder ein Objektgraph? Schlüssel-Wert — localStorage. Objektgraph — IndexedDB. Brauchen Sie Random Access auf große Binärdaten? Ja — OPFS. Nein — IndexedDB.

Ein häufiger Anti-Pattern: alles in localStorage, weil die API am angenehmsten ist. Das funktioniert, bis die App auf einem schwächeren Gerät zum ersten Mal merklich hängt — und dann ist die Refaktorierung deutlich aufwändiger, als es eine saubere Auswahl von Anfang an gewesen wäre.

Was uns in der Praxis aufgefallen ist

Aus den letzten zwölf Monaten Projekt-Arbeit drei Beobachtungen, die in keiner offiziellen Dokumentation so deutlich stehen. Erstens: Die Browser-Quoten für IndexedDB und OPFS sind nicht garantiert. Wer ernsthaft offline-fähige Anwendungen baut, ruft navigator.storage.persist() auf und zeigt dem Nutzer einen Berechtigungs-Prompt. Ohne diesen Schritt kann der Browser bei Speicherknappheit aufräumen, ohne zu fragen.

Zweitens: Safari implementiert die Quoten enger als Chrome oder Firefox. Eine Anwendung, die in Chrome mit 200 MB in IndexedDB problemlos läuft, kann in Safari nach wenigen Tagen Inaktivität ihre Daten verlieren. Wir testen IndexedDB-Anwendungen daher immer explizit in Safari und mit aktiviertem „Prevent Cross-Site Tracking“.

Drittens: OPFS hat im Web Worker eine andere API als im Main-Thread — nämlich die deutlich performantere FileSystemSyncAccessHandle. Wer hochfrequent schreibt, kommt um einen Web Worker nicht herum. SQLite im Browser läuft genau aus diesem Grund im Worker.

Sie planen eine offline-fähige oder datenintensive Web-Anwendung?

Wir helfen bei der Auswahl der passenden Speicher-Strategie und bei der Implementierung — von kleinem localStorage bis zu SQLite-im-OPFS.

Termin anfragen

Quellen: MDN Web Docs (Web Storage API, IndexedDB API, File System Access API), WHATWG (File System Standard, OPFS), web.dev (The origin private file system), SQLite-Dokumentation (WebAssembly & JavaScript), WebKit-Blog (Storage Quotas in Safari).

Weiterlesen — verwandte Artikel

Webseite & Server

500 Internal Server Error: Was die Fehlermeldung bedeutet und was Sie tun können

Ihre Website zeigt einen 500-Fehler? Hier erfahren Sie die häufigsten Ursachen und wie Sie ihn Schritt für Schritt beheben.

Webseite & Server

Homepage-Baukasten oder KI – was heute wirklich die bessere Wahl ist

Wix, Squarespace, Ionos lösen ein Problem, das es 2026 so nicht mehr gibt. Was KI-gebaute Websites anders machen – und wann ein Baukasten trotzdem die richtige Wahl bleibt.

Webseite & Server

Google Business Profile einrichten – warum der Firmeneintrag mehr Arbeit ist als gedacht

Verifizierung, Kategorien, Duplikate, Fotos, Beiträge – warum ein halbfertiges Profil schadet und was ein optimierter Eintrag wirklich bring

Häufig gestellte Fragen

Wann sollte ich localStorage nicht mehr verwenden?

Sobald Sie strukturierte Objekte speichern, regelmäßig größere Werte schreiben oder Sie auf dem Haupt-Thread merkbare Verzögerungen sehen. Spätestens dann lohnt der Wechsel zu IndexedDB.

Ist IndexedDB wirklich so umständlich, wie der Ruf sagt?

Die rohe API ist sperrig, mit modernen Wrappern wie idb oder Dexie ist die Bedienung aber nah an einer einfachen Promise-API.

Wie viel Speicher steht im Browser zur Verfügung?

Chrome erlaubt typischerweise bis zu 60 Prozent des Festplattenplatzes pro Origin, Safari ist deutlich konservativer. Verlassen Sie sich auf keine festen Zahlen, sondern rufen Sie navigator.storage.estimate() ab und planen Sie für den Worst-Case.

Wofür eignet sich OPFS, wenn ich schon IndexedDB nutze?

OPFS ist die richtige Wahl, wenn Sie partiellen Zugriff auf große Binärdaten brauchen — etwa für SQLite oder Mediendateien. Für strukturierte Objekte bleibt IndexedDB die bequemere Option.

Funktioniert OPFS auf allen Browsern?

Chrome, Edge und Safari unterstützen OPFS stabil. Firefox hat die API ebenfalls implementiert, der Performanz-Pfad mit SyncAccessHandle kam dort etwas später als bei den anderen.

Kann ich Daten zwischen den vier Speichern migrieren?

Ja, allerdings auf eigene Faust — der Browser bietet keine Migrations-API. Die übliche Vorgehensweise ist ein Versionsmarker und ein einmaliger Migrationsschritt beim ersten Laden nach dem Update.

Sind die Daten in IndexedDB oder OPFS verschlüsselt?

Nein, nicht standardmäßig. Wer sensible Daten ablegt, muss vor dem Schreiben selbst verschlüsseln — etwa mit der Web Crypto API.

Was passiert beim Wechsel zwischen normalem und Inkognito-Modus?

Inkognito-Sitzungen sehen eine eigene, isolierte Storage-Welt, die beim Schließen verworfen wird. Persistente Speicher aus dem normalen Modus sind dort nicht sichtbar.

Cookie-EinwilligungWir nutzen Cookies und externe Dienste (Statistik, Terminbuchung, Kartenmaterial), um unsere Website zu verbessern. Sie können einzelne Kategorien auswählen oder Ihre Auswahl jederzeit im Footer unter „Cookie-Einstellungen" anpassen. Mehr erfahren