Zeigarnik Effect

자이가르닉 효과

Unfinished tasks linger in memory far more than completed ones. It's why a progress bar nudges people to finish.

···
html
<div class="list" id="list"></div>
css
.list{width:80%;max-width:260px;display:grid;gap:10px}
.item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--surface);transition:opacity .6s ease}
.item.done{opacity:.4}
.box{width:16px;height:16px;border-radius:4px;border:2px solid var(--muted);display:grid;place-items:center;font:900 11px/1 monospace;color:#fff;flex:none}
.item.done .box{background:var(--accent-3);border-color:var(--accent-3)}
.item.pending .box{animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent-2) 50%,transparent)}50%{box-shadow:0 0 0 6px transparent}}
.item.pending{border-color:var(--accent-2)}
.txt{height:8px;flex:1;border-radius:4px;background:var(--line)}
js
const labels = ['Profile photo', 'Verify email', 'Add payment', 'Invite a teammate'];
const list = document.getElementById('list');
const items = labels.map((_, i) => {
  const it = document.createElement('div');
  it.className = 'item' + (i < 3 ? ' done' : ' pending');
  it.innerHTML = '<span class="box">' + (i < 3 ? '✓' : '') + '</span><span class="txt"></span>';
  list.appendChild(it);
  return it;
});
let idx = 3;
setInterval(() => {
  items[idx].classList.remove('pending');
  items[idx].classList.add('done');
  items[idx].querySelector('.box').textContent = '✓';
  idx = (idx + 1) % items.length;
  items[idx].classList.remove('done');
  items[idx].classList.add('pending');
  items[idx].querySelector('.box').textContent = '';
}, 2000);

Russian psychologist Bluma Zeigarnik started from an observation in 1927 — waiters recalled unpaid orders precisely but forgot them almost instantly once paid — and proved it experimentally. Unfinished tasks keep a low level of psychological tension alive, so they keep resurfacing.

Profile-completion bars ("80% done"), course progress, and daily quests in games all exploit this — an unfilled ring makes people want to fill it. Show too many open loops at once, though, and it tips into anxiety (see: cognitive-load).

In the checklist below, completed items fade and settle; the one unfinished item keeps a gentle pulse, holding onto attention.

When to use

Use this for onboarding checklists and progress indicators. Cap simultaneous open items at 2–3 so it motivates rather than creates anxiety.