diff --git a/js/ckeditor5_plugins/linkit/src/index.js b/js/ckeditor5_plugins/linkit/src/index.js
index 3ef7be0..ee395d8 100644
--- a/js/ckeditor5_plugins/linkit/src/index.js
+++ b/js/ckeditor5_plugins/linkit/src/index.js
@@ -33,9 +33,30 @@ class Linkit extends Plugin {
       },
     });
 
+    let existingUrl;
+
+    // Stop and do not change anything if url did not change.
+    const linkCommand = editor.commands.get('link');
+    linkCommand.on('execute', (evt, args) => {
+      if (this.existingUrl == args[0]) {
+        evt.stop();
+      }
+    }, { priority: 'highest' });
+
+    // Only allow url converter attributes on autocomplete selection.
+    linkFormView.urlInputView.fieldView.element.addEventListener('input', function (evt) {
+      const linkit = editor.plugins.get('Linkit');
+      linkit.set('entityType', null);
+      linkit.set('entityUuid', null);
+      linkit.set('entitySubstitution', null);
+    });
+
     editor.plugins
       .get('ContextualBalloon')
       .on('set:visibleView', (evt, propertyName, newValue, oldValue) => {
+        if (newValue === linkFormView) {
+          this.existingUrl = linkFormView.urlInputView.fieldView.element.value;
+        }
         if (newValue !== linkFormView || wasAutocompleteAdded) {
           return;
         }
