var dbName = 'memex'; var version = 1; var conn = indexedDB.open(dbName, version) // change the name and version as needed function exportToJson(idbDatabase) { return new Promise((resolve, reject) => { const exportObject = {} if (idbDatabase.objectStoreNames.length === 0) { resolve(JSON.stringify(exportObject)) } else { const transaction = idbDatabase.transaction( idbDatabase.objectStoreNames, 'readonly' ) transaction.addEventListener('error', reject) for (const storeName of idbDatabase.objectStoreNames) { const allObjects = [] transaction .objectStore(storeName) .openCursor() .addEventListener('success', event => { const cursor = event.target.result if (cursor) { // Cursor holds value, put it into store data allObjects.push(cursor.value) cursor.continue() } else { // No more values, store is done exportObject[storeName] = allObjects // Last store was handled if ( idbDatabase.objectStoreNames.length === Object.keys(exportObject).length ) { resolve(JSON.stringify(exportObject)) } } }) } } }) } conn.onsuccess = e => { var database = e.target.result exportToJson(database).then(console.log).catch(console.error) }