diff --git a/src/services/cipher.service.ts b/src/services/cipher.service.ts
index 053606858c..b7b82eece9 100644
--- a/src/services/cipher.service.ts
+++ b/src/services/cipher.service.ts
@@ -181,10 +181,13 @@ export class CipherService implements CipherServiceAbstraction {
             throw new Error('No key.');
         }
 
+        const promises: any[] = [];
         const ciphers = await this.getAll();
-        for (let i = 0; i < ciphers.length; i++) {
-            decCiphers.push(await ciphers[i].decrypt());
-        }
+        ciphers.forEach((cipher) => {
+            promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));
+        });
+
+        await Promise.all(promises);
         decCiphers.sort(this.getLocaleSortingFunction());
         this.decryptedCipherCache = decCiphers;
         return this.decryptedCipherCache;
diff --git a/src/services/collection.service.ts b/src/services/collection.service.ts
index cd259fbc47..152d91713b 100644
--- a/src/services/collection.service.ts
+++ b/src/services/collection.service.ts
@@ -48,9 +48,11 @@ export class CollectionService implements CollectionServiceAbstraction {
             return [];
         }
         const decCollections: CollectionView[] = [];
-        for (let i = 0; i < collections.length; i++) {
-            decCollections.push(await collections[i].decrypt());
-        }
+        const promises: Array<Promise<any>> = [];
+        collections.forEach((collection) => {
+            promises.push(collection.decrypt().then((c) => decCollections.push(c)));
+        });
+        await Promise.all(promises);
         return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));
     }
 
diff --git a/src/services/folder.service.ts b/src/services/folder.service.ts
index b37b97786b..c03cb0c298 100644
--- a/src/services/folder.service.ts
+++ b/src/services/folder.service.ts
@@ -78,10 +78,13 @@ export class FolderService implements FolderServiceAbstraction {
         }
 
         const decFolders: FolderView[] = [];
+        const promises: Array<Promise<any>> = [];
         const folders = await this.getAll();
-        for (let i = 0; i < folders.length; i++) {
-            decFolders.push(await folders[i].decrypt());
-        }
+        folders.forEach((folder) => {
+            promises.push(folder.decrypt().then((f) => decFolders.push(f)));
+        });
+
+        await Promise.all(promises);
         decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));
 
         const noneFolder = new FolderView();