Zunächst einmal ist der Standard eine Schnittstelle, die im Browser eingerichtet ist. Webseiten können über diese Informationen direkt im Browser speichern. Das funktioniert über JavaScript. Jede Website kann so eine eigene Datenbank anlegen. Und nur die entsprechende Website kann auf die IndexedDB (kurz für Indexed Database API) zugreifen. So bleiben die Daten privat. In den Datenbanken stehen mehrere Object Storages zur Verfügung. Dort lassen sich wiederum verschiedene Formate hinterlegen: Strings, Zahlen, Objekte, Arrays und Datumsangaben.
IndexedDB ist keine relationale Datenbank, sondern ein indiziertes Tabellensystem. Tatsächlich handelt es sich um eine NoSQL-Datenbank, wie es zum Beispiel auch MongoDB ist. Einträge werden immer in Paaren angelegt: Schlüssel und Wert. Dabei ist der Wert ein Objekt und der Schlüssel die Eigenschaft zu diesem. Hinzu kommen Indexe. Diese lassen eine schnelle Suche zu.
Aktionen werden in IndexedDB immer in Form von Transaktionen durchgeführt. Jeder Schreib-, Lese- oder Änderungsvorgang ist in eine Transaktion integriert. Das garantiert, dass Änderungen an der Datenbank entweder vollständig oder gar nicht durchgeführt werden. Ein Vorteil von IndexedDB ist, dass der Datentransfer (in den meisten Fällen) nicht synchron ablaufen muss. Operationen werden asynchron durchgeführt. Das garantiert, dass der Webbrowser während der Operation nicht gesperrt wird und weiterhin vom Nutzer bedient werden kann.
Eine große Rolle spielt bei IndexedDB die Sicherheit. Es muss sichergestellt werden, dass Websites nicht auf die Datenbanken von anderen Websites zugreifen können. Zu diesem Zweck hat IndexedDB eine Same-Origin-Policy etabliert: Domain, Anwendungsschichtenprotokoll und Port müssen gleich sein, sonst stehen die Daten nicht zur Verfügung. Dabei ist es durchaus möglich, dass auch Unterordner einer Domain auf die IndexedDB eines anderen Unterordners zugreifen, da beide die gleiche Herkunft haben. Nicht möglich ist der Zugriff allerdings, wenn ein anderer Port verwendet wird oder das Protokoll von HTTP zu HTTPS oder umgekehrt wechselt.