Endowed Progress Effect

보유 진행 효과

A head start — even a fake one — boosts motivation to finish. A 2-of-10 stamp card gets completed faster than a 0-of-8 card, though both need 8 more stamps.

Also known as: Endowed progress bias
···
html
<div class="stage">
  <div class="pane"><div class="tag">A · 0/8</div>
    <div class="card" id="ca"></div>
  </div>
  <div class="pane"><div class="tag">B · 2/10</div>
    <div class="card" id="cb"></div>
  </div>
</div>
css
.stage{width:94%;height:88%;display:flex;gap:6%}
.pane{position:relative;flex:1;border-radius:14px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;overflow:hidden}
.tag{position:absolute;top:8px;left:10px;font:700 11px/1 monospace;color:var(--muted)}
.card{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:70%}
.card span{aspect-ratio:1;border-radius:50%;border:2px solid var(--line);background:var(--bg)}
.card span.filled{background:var(--accent-3);border-color:var(--accent-3)}
js
function run(id, total, start, dur) {
  const card = document.getElementById(id);
  const dots = [];
  for (let i = 0; i < total; i++) { const s = document.createElement('span'); card.appendChild(s); dots.push(s); }
  function cycle() {
    dots.forEach((d, i) => d.classList.toggle('filled', i < start));
    let n = start;
    const step = () => {
      if (n >= total) { setTimeout(() => { dots.forEach((d) => d.classList.remove('filled')); setTimeout(cycle, 300); }, 500); return; }
      dots[n].classList.add('filled');
      n++;
      setTimeout(step, dur);
    };
    setTimeout(step, dur);
  }
  cycle();
}
run('ca', 8, 0, 380);
run('cb', 10, 2, 260);

From Joseph Nunes and Xavier Drèze's 2006 study "The Endowed Progress Effect" (Journal of Consumer Research). They handed out two car-wash loyalty cards — one blank with 8 slots, one with 10 slots but 2 already stamped. Both actually required 8 more washes, but the pre-stamped 10-slot card was completed faster and far more often.

The key is that "starting from zero" and "already under way" feel psychologically different. This shows up as onboarding checklists that mark "add a profile photo" as pre-completed, or a progress bar that opens at 10% instead of 0%.

Faking completion to trick users breaks trust — the honest version only credits progress for things genuinely already done, like signing up or verifying an email.

A starts at 0/8, stamps trickle in slowly, and the loop resets before finishing; B starts at 2/10 and fills to completion faster.

When to use

Use this for onboarding checklists, loyalty cards, or progress bars. If the user genuinely already did something, credit it and move the starting point forward.