diff --git a/common/lkt.js b/common/lkt.js
index 7de3070c90769d6e28604287f6d270167acaf66c..6783ba8790ac495ee7ef692b11abddf2c5e6b7d7 100644
--- a/common/lkt.js
+++ b/common/lkt.js
@@ -392,6 +392,25 @@ class LktClient {
         return LktClient.__execSimple(`playlistdelete ${playlist}`);
     }
 
+    static commandQueueAddMulId(IdList) {
+        var command;
+        var promize = new Promise(()=>null);
+        var size = 10; var arrayOfArrays = [];
+        for (var i=0; i<IdList.length; i+=size) {
+            arrayOfArrays.push(IdList.slice(i,i+size));
+        }
+        arrayOfArrays.forEach(idbatch => {
+            command = "addid"
+            if(idbatch) {
+                idbatch.forEach(id => {
+                    command = command + " " + id;
+                });
+                promize = promize.then(LktClient.__execSimple(command));
+            }
+        });
+        return null;
+    }
+
     static errorStatus(error) {
         logger.error('Unable to access lektor status:' + error);
     }
diff --git a/instance/index.js b/instance/index.js
index 41e67f40aa2c9451752d8d77dd8a18e74812bb8a..e04546c661ba11feeab7a46e650e370399d6497b 100644
--- a/instance/index.js
+++ b/instance/index.js
@@ -16,6 +16,7 @@ var currentPlaylist = "";
 var isQueueView = true
 var clearMenuQueue;
 var clearMenuPlaylist;
+var karaDBIDList = [];
 
 function updatePlayPauseButton(state) {
     logger.debug('instance', `State was ${state}`);
@@ -108,6 +109,10 @@ window.onload = () => {
     switchQP.innerText = "View playlist";
     switchQP.onclick = ()=>switchQueuePlaylist();
 
+    document.getElementById('addResearchToQueue').onclick = ()=>{
+        ipcRenderer.send('add-kara-queue-multiple-id', karaDBIDList);
+    };
+
 
     $('#openMdtView').click(() => $('#mdt-view').toggle());
 
@@ -246,7 +251,9 @@ window.onload = () => {
 ipcRenderer.on('reload-db-responce', (event, arg) => {
     logger.debug('instance', `Web page got reload-db`);
     document.getElementById('panelLeft').innerHTML = '';
+    karaDBIDList = [];
     arg.forEach(kara => {
+        karaDBIDList.push(kara.id);
         ejs.renderFile(__dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => {
             if (err) logger.error('instance', err);
             $('#panelLeft').append(data);
diff --git a/instance/views/menubar.ejs b/instance/views/menubar.ejs
index b6f48567a93b77a8a6945589017dbd4e07c514a7..e29c320c4ae0d83f3f65280a3d71fc50e491050a 100644
--- a/instance/views/menubar.ejs
+++ b/instance/views/menubar.ejs
@@ -11,6 +11,7 @@
         {id: 'selectDatabase', tooltip: 'Database search',      name: 'database'},
         {id: 'selectPlaylist', tooltip: 'Playlist search',      name: 'tag'},
         {id: 'selectPool',     tooltip: "Kurisu's pool search", name: 'bookmark'},
+        {id: 'addResearchToQueue',     tooltip: "Add research result to queue", name: 'upload'},
     ]}); %></div>
     <div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 40%;-webkit-app-region: no-drag;">
         <input id="filterInput" type="text" class="form-control filterInput" placeholder="Filter...">
diff --git a/main.js b/main.js
index 79223eb2517150a5ecb84f72bdec25f8a3303916..fa7219a8ffa32299ba9a5836bfcc66db4452ca52 100644
--- a/main.js
+++ b/main.js
@@ -295,6 +295,10 @@ ipcMain.on('get-playlist-data', (event, playlist) => {
     }
 });
 
+ipcMain.on('add-kara-queue-multiple-id', (event, IdList) => {
+    lkt.commandQueueAddMulId(IdList);
+});
+
 
 
 ipcMain.on('new-playlist', (event,arg) => {