diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 7fa5fe388..78836be23 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -1461,6 +1461,10 @@ void GMainWindow::OnLoadAmiibo() {
         return;
     }
 
+    LoadAmiibo(filename);
+}
+
+void GMainWindow::LoadAmiibo(const QString& filename) {
     Core::System& system{Core::System::GetInstance()};
     Service::SM::ServiceManager& sm = system.ServiceManager();
     auto nfc = sm.GetService<Service::NFC::Module::Interface>("nfc:u");
@@ -1857,10 +1861,21 @@ static bool IsSingleFileDropEvent(QDropEvent* event) {
 }
 
 void GMainWindow::dropEvent(QDropEvent* event) {
-    if (IsSingleFileDropEvent(event) && ConfirmChangeGame()) {
-        const QMimeData* mimeData = event->mimeData();
-        QString filename = mimeData->urls().at(0).toLocalFile();
-        BootGame(filename);
+    if (!IsSingleFileDropEvent(event)) {
+        return;
+    }
+
+    const QMimeData* mime_data = event->mimeData();
+    const QString& filename = mime_data->urls().at(0).toLocalFile();
+
+    if (emulation_running && QFileInfo(filename).suffix() == "bin") {
+        // Amiibo
+        LoadAmiibo(filename);
+    } else {
+        // Game
+        if (ConfirmChangeGame()) {
+            BootGame(filename);
+        }
     }
 }
 
diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h
index 7b6a1b367..9c7888056 100644
--- a/src/citra_qt/main.h
+++ b/src/citra_qt/main.h
@@ -120,6 +120,7 @@ private:
     void ShowNoUpdatePrompt();
     void CheckForUpdates();
     void SetDiscordEnabled(bool state);
+    void LoadAmiibo(const QString& filename);
 
     /**
      * Stores the filename in the recently loaded files list.