diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 031b295b7..40600e34e 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -456,11 +456,14 @@ void Module::ScanForTitles(Service::FS::MediaType media_type) {
     for (const FileUtil::FSTEntry& tid_high : entries.children) {
         for (const FileUtil::FSTEntry& tid_low : tid_high.children) {
             std::string tid_string = tid_high.virtualName + tid_low.virtualName;
-            u64 tid = std::stoull(tid_string.c_str(), nullptr, 16);
 
-            FileSys::NCCHContainer container(GetTitleContentPath(media_type, tid));
-            if (container.Load() == Loader::ResultStatus::Success)
-                am_title_list[static_cast<u32>(media_type)].push_back(tid);
+            if (tid_string.length() == TITLE_ID_VALID_LENGTH) {
+                u64 tid = std::stoull(tid_string.c_str(), nullptr, 16);
+
+                FileSys::NCCHContainer container(GetTitleContentPath(media_type, tid));
+                if (container.Load() == Loader::ResultStatus::Success)
+                    am_title_list[static_cast<u32>(media_type)].push_back(tid);
+            }
         }
     }
 }
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index 220ca3f23..cc322375a 100644
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -52,7 +52,10 @@ enum class InstallStatus : u32 {
     ErrorEncrypted,
 };
 
-// Progress callback for InstallCIA, recieves bytes written and total bytes
+// Title ID valid length
+constexpr size_t TITLE_ID_VALID_LENGTH = 16;
+
+// Progress callback for InstallCIA, receives bytes written and total bytes
 using ProgressCallback = void(size_t, size_t);
 
 // A file handled returned for CIAs to be written into and subsequently installed.