Index: src/routes/admin-circle.js
===================================================================
--- src/routes/admin-circle.js	(revision d6bdbaeda89b3106143e4c3a713b88db3e28564e)
+++ src/routes/admin-circle.js	(revision 2520dccef16e2a6e9cf27ec658801ec4e06402c7)
@@ -51,7 +51,12 @@
   const site = primarySite();
   if (!site) return res.redirect('/admin/circle?error=' + encodeURIComponent('Geen site gevonden'));
-  const url = (req.body.remote_url || '').toString().trim().replace(/\/+$/, '');
+  // Schema automatisch aanvullen: een kale domeinnaam → https://, een getypte
+  // http:// → https:// (federatie is bewust https-only, getekende feeds). Zo hoeft
+  // de gebruiker nooit zelf http(s):// te typen.
+  let url = (req.body.remote_url || '').toString().trim().replace(/\/+$/, '');
+  if (url && !/^[a-z]+:\/\//i.test(url)) url = 'https://' + url;
+  url = url.replace(/^http:\/\//i, 'https://');
   if (!/^https:\/\/[^\s/]+(\/[^\s]*)?$/i.test(url)) {
-    return res.redirect('/admin/circle?error=' + encodeURIComponent('Voer een geldige https-URL in'));
+    return res.redirect('/admin/circle?error=' + encodeURIComponent('Voer een geldig site-adres in (bv. voorbeeld.nl)'));
   }
   const label = (req.body.label || '').toString().slice(0, 80).trim() || null;
Index: src/views/pages/admin-circle.ejs
===================================================================
--- src/views/pages/admin-circle.ejs	(revision d6bdbaeda89b3106143e4c3a713b88db3e28564e)
+++ src/views/pages/admin-circle.ejs	(revision 2520dccef16e2a6e9cf27ec658801ec4e06402c7)
@@ -33,5 +33,5 @@
       <label class="set-field">
         <span><%= t('acir.url') %></span>
-        <input type="url" name="remote_url" placeholder="https://artiest.klonkt.com" required>
+        <input type="text" name="remote_url" inputmode="url" autocapitalize="off" autocorrect="off" spellcheck="false" placeholder="artiest.klonkt.com" required>
       </label>
       <label class="set-field">
