Calculate two different kinds of stability Per-URL persistence is runs containing that exact URL divided by total valid runs. Source-set stability is the mean of every pairwise Jaccard overlap: shared unique URLs divided by their union. Keep exact ordered-repeat pairs separate; identical membership can still arrive in a different order.
Browser-local calculation

Compare a complete repeated-run panel

Use one frozen prompt, one AI surface, and comparable conditions per panel. Paste one URL per line and leave a blank line—or a line containing ---—between runs.

Input · complete lists in displayed order
Keep query strings and case exactly as observed. Blank lines inside a run are treated as run separators.

Enter at least two complete citation runs to calculate stability.

What the calculator measures

OutputCalculationQuestion answered
Per-URL persistenceRuns containing an exact URL ÷ all valid runsHow often did this source appear in the repeated panel?
Pairwise JaccardUnique URLs shared by two runs ÷ their combined unique URLsHow much did the source membership overlap for this pair?
Mean pairwise JaccardAverage of every run-pair Jaccard valueHow much membership overlap did this completed panel observe overall?
Exact-order repeat pairSame URL count, strings, duplicates, and positionsDid the entire displayed sequence repeat exactly?
One-run-only URLExact URL appears in one valid runWhich sources were observed only once in this panel?

Jaccard treats each run as a set, so duplicates inside a run count once for membership. Exact-order comparison keeps duplicates and position. The calculator trims surrounding whitespace but does not lowercase, resolve redirects, strip tracking parameters, or merge URLs by domain.

Keep the runs comparable

  1. Freeze one natural question. Do not mix prompt variants in the same calculation.
  2. Freeze the surface and conditions. Record engine, mode, location, login state, date, and time separately.
  3. Paste complete lists. A missing result must mean the source was absent, not that collection stopped early.
  4. Retain null runs. A valid answer with no citations is an empty run and should remain in the evidence log. This text interface cannot represent an empty block unambiguously, so record that run in the citation response log and label the panel limitation.
  5. Compare like with like. Build separate panels for different prompts, engines, countries, modes, or cohorts.

Interpret overlap as an observation, not a universal score

A mean Jaccard of 0.40 means the completed run pairs shared 40% of their combined unique URL membership on average. It does not mean a source has a 40% future probability, that an answer was 40% accurate, or that one platform is 40% reliable.

No universal “good” threshold Prompt intent, answer mode, source-list length, time window, and retrieval behavior all change the baseline. Establish a panel under declared conditions, preserve the denominator, and compare it with a later panel collected the same way. When a business decision requires inference, design the sample and uncertainty analysis separately.

Frequently asked questions

How do you calculate AI citation stability across repeated searches?

Calculate per-URL persistence as the number of valid runs containing that exact URL divided by all valid runs. Calculate source-set stability separately with pairwise Jaccard overlap: shared unique URLs divided by the union for each pair of runs.

What is a good AI citation stability score?

There is no universal good score. Compare the same frozen prompt, surface, and conditions over time, retain every valid run, and interpret persistence and overlap as descriptive observations rather than a platform-wide probability.

Why show exact order as well as Jaccard?

Two runs can contain the same unique URLs and therefore have Jaccard 1.00 while displaying them in different positions. Exact-order comparison catches that difference and also preserves duplicate lines.

Does this calculator send pasted citation URLs anywhere?

No. Calculation and CSV generation happen in your browser. The page does not upload, transmit, or store the pasted run lists.