diff --git a/es-app/src/SystemData.cpp b/es-app/src/SystemData.cpp
index 4faa787f9..874318c80 100644
--- a/es-app/src/SystemData.cpp
+++ b/es-app/src/SystemData.cpp
@@ -47,7 +47,8 @@ SystemData::SystemData(
         mIsCustomCollectionSystem(CustomCollectionSystem),
         mIsGroupedCustomCollectionSystem(false),
         mIsGameSystem(true),
-        mScrapeFlag(false)
+        mScrapeFlag(false),
+        mPlaceholder(nullptr)
 {
     mFilterIndex = new FileFilterIndex();
 
@@ -79,6 +80,10 @@ SystemData::SystemData(
         mRootFolder = new FileData(FOLDER, "" + name, mEnvData, this);
         setupSystemSortType(mRootFolder);
     }
+
+    // This placeholder can be used later in the gamelist view.
+    mPlaceholder = new FileData(PLACEHOLDER, "<No Entries Found>", getSystemEnvData(), this);
+
     setIsGameSystemStatus();
     loadTheme();
 }
@@ -93,6 +98,7 @@ SystemData::~SystemData()
     if (!mEnvData->mStartPath.empty())
         delete mEnvData;
     delete mRootFolder;
+    delete mPlaceholder;
     delete mFilterIndex;
 }
 
diff --git a/es-app/src/SystemData.h b/es-app/src/SystemData.h
index 9e1e38eac..80d4b7a5c 100644
--- a/es-app/src/SystemData.h
+++ b/es-app/src/SystemData.h
@@ -96,6 +96,7 @@ public:
     SystemData* getPrev() const;
     static SystemData* getRandomSystem(const SystemData* currentSystem);
     FileData* getRandomGame(const FileData* currentGame = nullptr);
+    FileData* getPlaceholder() { return mPlaceholder; };
 
     void sortSystem(bool reloadGamelist = true, bool jumpToFirstRow = false);
 
@@ -127,6 +128,7 @@ private:
     FileFilterIndex* mFilterIndex;
 
     FileData* mRootFolder;
+    FileData* mPlaceholder;
 };
 
 #endif // ES_APP_SYSTEM_DATA_H
diff --git a/es-app/src/views/gamelist/BasicGameListView.cpp b/es-app/src/views/gamelist/BasicGameListView.cpp
index 28d3a815b..9e96cf6fb 100644
--- a/es-app/src/views/gamelist/BasicGameListView.cpp
+++ b/es-app/src/views/gamelist/BasicGameListView.cpp
@@ -162,15 +162,14 @@ FileData* BasicGameListView::getFirstGameEntry()
 
 void BasicGameListView::addPlaceholder(FileData* firstEntry)
 {
-    // Empty list - add a placeholder.
-    SystemData* system;
-    if (firstEntry && firstEntry->getSystem()->isGroupedCustomCollection())
-        system = firstEntry->getSystem();
-    else
-        system = this->mRoot->getSystem();
+    // Empty list, add a placeholder.
+    FileData* placeholder;
+
+    if (firstEntry && firstEntry->getSystem()->isGroupedCustomCollection())
+        placeholder = firstEntry->getSystem()->getPlaceholder();
+    else
+        placeholder = this->mRoot->getSystem()->getPlaceholder();
 
-    FileData* placeholder = new FileData(PLACEHOLDER, "<No Entries Found>",
-            this->mRoot->getSystem()->getSystemEnvData(), system);
     mList.add(placeholder->getName(), placeholder, (placeholder->getType() == PLACEHOLDER));
 }
 
diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp
index 6eb10fe85..84399251a 100644
--- a/es-app/src/views/gamelist/GridGameListView.cpp
+++ b/es-app/src/views/gamelist/GridGameListView.cpp
@@ -535,15 +535,14 @@ void GridGameListView::updateInfoPanel()
 
 void GridGameListView::addPlaceholder(FileData* firstEntry)
 {
-    // Empty list - add a placeholder.
-    SystemData* system;
-    if (firstEntry && firstEntry->getSystem()->isGroupedCustomCollection())
-        system = firstEntry->getSystem();
-    else
-        system = this->mRoot->getSystem();
+    // Empty list, add a placeholder.
+    FileData* placeholder;
+
+    if (firstEntry && firstEntry->getSystem()->isGroupedCustomCollection())
+        placeholder = firstEntry->getSystem()->getPlaceholder();
+    else
+        placeholder = this->mRoot->getSystem()->getPlaceholder();
 
-    FileData* placeholder = new FileData(PLACEHOLDER, "<No Entries Found>",
-            this->mRoot->getSystem()->getSystemEnvData(), system);
     mGrid.add(placeholder->getName(), "", placeholder);
 }