Index: src/routes/admin-users.js
===================================================================
--- src/routes/admin-users.js	(revision 640b39c77691f7bb8ddb40f536fc678f88b8df8d)
+++ src/routes/admin-users.js	(revision a64f642ec61d1349904508f7af00155c05bd3c72)
@@ -29,5 +29,5 @@
 router.get('/', requireGod, (req, res) => {
   const users = db.prepare(`
-    SELECT u.id, u.username, u.email, u.role, u.created_at, u.avatar_url,
+    SELECT u.id, u.username, u.email, u.role, u.created_at, u.avatar_url, u.readonly,
            (SELECT COUNT(*) FROM posts p WHERE p.author_id = u.id) AS post_count,
            (SELECT COUNT(*) FROM sites s  WHERE s.owner_id  = u.id) AS site_count
@@ -71,4 +71,18 @@
 });
 
+// ==================== READ-ONLY (kijk-account) ====================
+router.post('/:id/readonly', requireGod, (req, res) => {
+  const target = db.prepare('SELECT id FROM users WHERE id = ?').get(req.params.id);
+  if (!target) return res.redirect('/admin/users?error=User+not+found');
+  // Niet op jezelf — voorkomt dat een god zichzelf alleen-lezen maakt en vastloopt.
+  if (target.id === req.session.user.id) {
+    return res.redirect('/admin/users?error=' + encodeURIComponent('Kan jezelf niet op alleen-lezen zetten'));
+  }
+  const ro = req.body.readonly === '1' ? 1 : 0;
+  db.prepare('UPDATE users SET readonly = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?')
+    .run(ro, req.params.id);
+  res.redirect('/admin/users?success=' + encodeURIComponent(ro ? 'Kijk-modus aan' : 'Kijk-modus uit'));
+});
+
 // ==================== DELETE ====================
 router.post('/:id/delete', requireGod, (req, res) => {
Index: src/views/pages/admin-users.ejs
===================================================================
--- src/views/pages/admin-users.ejs	(revision 640b39c77691f7bb8ddb40f536fc678f88b8df8d)
+++ src/views/pages/admin-users.ejs	(revision a64f642ec61d1349904508f7af00155c05bd3c72)
@@ -66,4 +66,12 @@
             </form>
 
+            <form method="post" action="/admin/users/<%= u.id %>/readonly" class="ax-role-form">
+              <label class="ax-role ax-ro" title="Alleen-lezen: kan alles bekijken, niets wijzigen">
+                <span>Kijk-modus</span>
+                <input type="checkbox" name="readonly" value="1" <%= u.readonly ? 'checked' : '' %>
+                       onchange="this.form.submit()" <% if (u.id === user.id) { %>disabled<% } %>>
+              </label>
+            </form>
+
             <% if (u.id !== user.id && (u.post_count + u.site_count === 0)) { %>
               <form method="post" action="/admin/users/<%= u.id %>/delete" class="ax-delete-form"
@@ -222,4 +230,7 @@
 }
 .ax-role select:disabled { cursor: not-allowed; opacity: 0.5; }
+.ax-ro { align-items: center; }
+.ax-ro input { width: 18px; height: 18px; cursor: pointer; margin-top: 0.15rem; accent-color: var(--accent); }
+.ax-ro input:disabled { cursor: not-allowed; opacity: 0.5; }
 .ax-delete-form { margin: 0; }
 .ax-icon-btn {
