> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userintuition.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# How many interviews do you need?

> One question — how common the thing you're looking for is — and the number of interviews you need to be confident you'd hear about it.

export const SampleSizeCalculator = () => {
  const [perHundred, setPerHundred] = useState(10);
  const [confidence, setConfidence] = useState(0.99);
  const [showConfidence, setShowConfidence] = useState(false);
  const p = perHundred / 100;
  const c = Number(confidence);
  const needed = Math.ceil(Math.log(1 - c) / Math.log(1 - p));
  const prevalenceOptions = [50, 33, 20, 10, 5];
  const confidenceOptions = [0.8, 0.9, 0.95, 0.99];
  const segment = selected => ({
    flex: 1,
    padding: '0.55rem 0.4rem',
    borderRadius: '0.5rem',
    border: selected ? '1px solid currentColor' : '1px solid var(--border, rgba(128,128,128,0.35))',
    background: selected ? 'rgba(128,128,128,0.15)' : 'transparent',
    color: 'inherit',
    fontFamily: 'inherit',
    fontSize: '0.95rem',
    fontWeight: selected ? 700 : 500,
    opacity: selected ? 1 : 0.7,
    cursor: 'pointer'
  });
  const label = {
    display: 'block',
    fontSize: '0.85rem',
    fontWeight: 600,
    marginBottom: '0.6rem',
    lineHeight: 1.45
  };
  const linkButton = {
    background: 'transparent',
    border: 'none',
    padding: 0,
    color: 'inherit',
    fontFamily: 'inherit',
    fontSize: '0.8rem',
    opacity: 0.6,
    cursor: 'pointer'
  };
  return <div style={{
    border: '1px solid var(--border, rgba(128,128,128,0.35))',
    borderRadius: '0.85rem',
    padding: '1.4rem',
    margin: '1.5rem 0'
  }}>
      <label style={label}>
        Out of 100 people you interview, how many do you think would mention what you're looking
        for?
      </label>
      <div style={{
    display: 'flex',
    gap: '0.5rem'
  }}>
        {prevalenceOptions.map(o => <button key={o} type="button" onClick={() => setPerHundred(o)} style={segment(o === perHundred)}>
            {o}
          </button>)}
      </div>

      <div style={{
    marginTop: '1.4rem',
    paddingTop: '1.4rem',
    borderTop: '1px solid var(--border, rgba(128,128,128,0.25))',
    textAlign: 'center'
  }}>
        <div style={{
    fontSize: '3rem',
    fontWeight: 700,
    lineHeight: 1
  }}>{needed}</div>
        <div style={{
    fontSize: '1rem',
    fontWeight: 600,
    marginTop: '0.2rem'
  }}>
          {needed === 1 ? 'interview' : 'interviews'}
        </div>
        <div style={{
    fontSize: '0.875rem',
    marginTop: '0.7rem',
    opacity: 0.75
  }}>
          to be {Math.round(c * 100)}% confident you'd hear about something {perHundred} of every
          100 people would mention.
        </div>
        <div style={{
    fontSize: '0.8rem',
    marginTop: '0.5rem',
    opacity: 0.6
  }}>
          Sizing one group — if your study covers several personas, size each separately.
        </div>

        <div style={{
    marginTop: '1rem'
  }}>
          {showConfidence ? <div>
              <div style={{
    display: 'flex',
    gap: '0.5rem',
    maxWidth: '20rem',
    margin: '0 auto'
  }}>
                {confidenceOptions.map(o => <button key={o} type="button" onClick={() => {
    setConfidence(o);
    setShowConfidence(false);
  }} style={segment(o === c)}>
                    {Math.round(o * 100)}%
                  </button>)}
              </div>
              <div style={{
    fontSize: '0.75rem',
    marginTop: '0.5rem',
    opacity: 0.6
  }}>
                How confident you need to be that you'd hear about it at all.
              </div>
            </div> : <button type="button" onClick={() => setShowConfidence(true)} style={linkButton}>
              at {Math.round(c * 100)}% confidence ·{' '}
              <span style={{
    textDecoration: 'underline'
  }}>change</span>
            </button>}
        </div>
      </div>
    </div>;
};

Most studies are smaller than the confidence people want from them. Ten interviews feels thorough, so ten gets run — and then a finding gets treated as settled when the sample never had the power to settle it.

One question gets you the number you actually need.

<SampleSizeCalculator />

***

## What it's calculating

The question here is **discovery**: if something is true of a share of your participants, how likely are you to hear about it at least once?

If a problem affects a proportion `p` of the people you interview, the chance that `n` interviews surface it at least once is:

```
P = 1 − (1 − p)ⁿ
```

Turn that around and you get the number of interviews needed for a given confidence:

```
n = ln(1 − C) / ln(1 − p)
```

Nothing exotic — it's the same reasoning behind the usability-testing rules of thumb you may have run into, stated properly instead of as "five users is enough."

### Why "five users is enough" isn't

That rule assumes every problem is common. It falls apart quickly when they aren't:

| Interviews | 50 in 100 | 33 in 100 | 20 in 100 | 10 in 100 | 5 in 100 |
| -: | -: | -: | -: | -: | -: |
| **5** | 97% | 86% | 67% | 41% | 23% |
| **8** | 100% | 96% | 83% | 57% | 34% |
| **10** | 100% | 98% | 89% | 65% | 40% |
| **15** | 100% | 100% | 96% | 79% | 54% |
| **20** | 100% | 100% | 99% | 88% | 64% |
| **30** | 100% | 100% | 100% | 96% | 79% |

Five interviews is genuinely fine for something 50 in 100 people would mention. For anything only 10 in 100 would mention, it's a coin flip — and the issues that quietly cost you customers are usually the uncommon ones.

### Interviews needed, by target confidence

| Confidence | 50 in 100 | 33 in 100 | 20 in 100 | 10 in 100 | 5 in 100 |
| -: | -: | -: | -: | -: | -: |
| **80%** | 3 | 5 | 8 | 16 | 32 |
| **90%** | 4 | 6 | 11 | 22 | 45 |
| **95%** | 5 | 8 | 14 | 29 | 59 |
| **99%** | 7 | 12 | 21 | 44 | 90 |

***

## Using it well

### Count per segment, not per study

The maths applies to the group you're actually talking to. If your study covers four personas and you run 20 interviews, that's **five per persona** — so treat it as four studies of five, not one study of twenty.

Splitting a sample across segments is the most common way a study that looked adequately sized turns out not to be.

### Be honest about how common it is

You're estimating prevalence among **the people you interview**, not your whole user base. If your screener selects for people who've hit a specific problem, prevalence inside the study is much higher than in the wild — and you need fewer interviews, not more.

### Hearing it once isn't the same as sizing it

This tells you whether a theme is likely to *appear*. It doesn't tell you how big it is. One participant mentioning something means it exists; it doesn't tell you what share of your customers feel the same. If the decision depends on the size of the number rather than the existence of the problem, see below.

### More interviews still buy something

Past the point where coverage is settled, extra interviews buy depth: more ways of describing the same problem, more edge cases, better quotes, and enough repetition that you can tell a real pattern from a vivid anecdote.

***

## When you need a proportion, not a discovery

If your question is "**what percentage** of customers prefer A over B?" rather than "is there a problem here?", this calculator is the wrong tool. Estimating a proportion to within a margin of error takes far larger samples — typically several hundred — and is survey work rather than interview work.

You can still run it here: field a [panel study](/recruiting/research-panel) with a large target and structured screener questions, which come back as clean tabulated [responses](/results/calls-and-transcripts). Just size it as a survey, and budget accordingly.

<Tip>
  A common pattern is to run both: a small interview study to find out *what* the issues are, then a larger one to size the ones that matter. Discovery first is usually cheaper, because it stops you sizing the wrong thing.
</Tip>

***

## Setting your target

Once you've got a number, set it as your study target — for [panel studies](/recruiting/research-panel#recruit-from-our-panel) that's the interview count you enter when you field. Progress against it shows on your [dashboard](/managing-your-study/dashboard).

Remember that on panel studies you're only charged for interviews rated Excellent or Good, so your target is a target for *usable* interviews rather than attempts. See [Billing and credits](/resources/billing-and-credits).

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="Is this the same calculation as a survey sample size calculator?">
    No, and the difference matters. Survey calculators size a sample to estimate a proportion within a margin of error, which for a large population usually lands somewhere north of 380 responses. This sizes for **discovery** — whether you'd hear about something at all — which is what interview research is for and typically lands between 20 and 50.
  </Accordion>

  <Accordion title="What confidence level should I pick?">
    This sizes at 99% by default — strict enough that finding nothing actually tells you something. Drop to 95% for most work, or 90% and 80% for exploratory studies where you're forming hypotheses rather than settling a question. Lowering it is the fastest way to cut a target that's come back bigger than your budget.
  </Accordion>

  <Accordion title="What if I don't know how common the thing is?">
    That's normal — you're doing the research to find out. Pick the rarest thing you'd be unhappy to miss and size for that. If it would be a problem to miss something only 10 in 100 people would mention, size for 10.
  </Accordion>

  <Accordion title="Does this apply to concept and prototype tests too?">
    Yes. "Would you hear about this reaction, or this point where people get stuck?" is the same question. Usability issues in particular tend to be less common than people expect, which is why prototype tests are so often under-sized.
  </Accordion>

  <Accordion title="I ran fewer interviews than this. Is my research worthless?">
    No. It means you should treat what you found as real and what you *didn't* find as unproven. A small study that surfaces a problem has surfaced a problem. What it can't support is "we looked and there's nothing there."
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.