Design 22 min read

The Dialog That Asks Whether to Save Is a Bug Report

MMNMNOTE
designinterface-designdialogshabituationusabilitynotes

A save prompt is the app admitting it does not know what you want. Writing it more politely does not help. In a field experiment on 80,000 users of a privacy tool, polite requests and buttons pointing at a voluntary decision decreased the probability of consent 1. The dialog is not a wording problem. It is a design one.

Rainer Böhme, then at ICSI Berkeley, and Stefan Köpsell of TU Dresden published it at CHI 2010: one consent dialog, shown in a 2 × 2 × 3 grid of variations 1. Three things changed across them, by the abstract's account — how politely it asked, whether the button text pointed to a voluntary decision, and how closely it resembled a licence agreement.

Every courteous dimension made it worse. People were not reading the sentences — they were recognising a shape they had already learned to dismiss 2.

The three-button question, and why its buttons are the wrong words

Yes, No, and Cancel are not answers — they are placeholders for answers. Which one destroys your work depends entirely on how the question was phrased, and the question is usually one line long. Martin Kleppmann named the problem in 2007, and the buttons have not changed since.

"The meaning of these words depends very much on the question," he wrote. "In fact, if you have no previous computing experience, you will probably have no idea what to answer." 3

They are not ambiguous in the abstract. They are ambiguous at the one moment that matters. "As a user, you just want to know which button is going to cause your work of the last 2 hours to be lost," Kleppmann continues, "and neither of these examples makes it immediately clear which the 'dangerous' button is." 4

Platform guidance says what to do instead. GNOME's Human Interface Guidelines classify this object: "Print and Save dialogs are classic examples of action dialogs." 5 Their rule for its buttons runs one sentence: "Label the affirmative button with a specific imperative verb, for example: Save or Print." 6

A verb tells you what happens. Yes tells you nothing.

A save dialog, before and after

The fix is not a better sentence. It is a different set of buttons in a different order, each labelled with the verb it performs, with the destructive option named for what it destroys and the default key bound to the safe one. Here is the same dialog written twice.

BEFORE
  Title:    Save changes?
  Body:     Do you want to save the changes you made?
  Buttons:  [ Yes ]  [ No ]  [ Cancel ]
  Return:   activates "Yes"
  Escape:   unbound
AFTER
  Title:    Save changes to "quarterly-review.md" before closing?
  Body:     Your edits from the last 12 minutes will be lost
            if you discard them.
  Buttons:  [ Cancel ]  [ Discard Edits ]  [ Save ]
  Return:   activates "Save"
  Escape:   activates "Cancel"

Four things changed, each with a rule behind it: the buttons became verbs 6; cancel moved to the front, because that ordering "ensures that users become aware of, and are reminded of, the ability to cancel prior to encountering the affirmative button" 7; No became Discard Edits, the only way the dangerous button is identifiable at a glance 4; and the keys were bound on purpose, Escape to cancel and Return to the affirmative 8.

That last one is where real dialogs fail. Invert the question to Discard changes? and the affirmative button becomes the destructive one, so the default key throws work away — which the guidelines forbid outright: Return should not activate a button whose action "is irreversible, destructive or otherwise inconvenient to the user." 9

Both blocks are composites, not screenshots.

The surprise: writing it more politely made it worse

Courtesy is the intuitive fix and it is the wrong one. In Böhme and Köpsell's field experiment, polite phrasing and buttons that offered a genuine choice both lowered consent, against what social psychology predicted. The abstract's explanation is that people were processing the dialog's shape rather than its sentences.

It names the mechanism, and the culprit: "Participants seem to be habituated to coercive interception dialogs — presumably due to ubiquitous EULAs — and blindly accept terms the more their presentation resembles a EULA." 2

The politeness effect did not vanish. It was outvoted: "subtle positive effects of polite requests indeed exist, but stronger negative effects of heuristic processing dominate the aggregated results." 10

Heuristic processing is what every writer does with a save prompt at 1 a.m. You are not evaluating a question. You are clearing an obstacle.

What the researchers actually measured

Two brain-imaging studies measured attention to a repeated on-screen warning, and both found the collapse happens almost immediately. Anderson and colleagues recorded a drop in the visual processing centres of the brain after the second exposure; Vance and colleagues watched the same drop repeat and deepen across five working days.

The 2015 result is stated without hedging: "Our results show a dramatic drop in the visual processing centers of the brain after only the second exposure to a warning, with further decreases with subsequent exposures." 11

The 2017 replication moved it into a working week, measuring with an fMRI scanner and an eye tracker at once. It found "a dramatic drop in attention in terms of neural activity and eye fixations after only the second warning exposure, with further decreases throughout the workweek." 12 That sentence rests on 11,976 eye-tracking observations 13.

Field telemetry has the same shape at a scale no lab reaches. Devdatta Akhawe and Adrienne Porter Felt observed "over 25 million warning impressions in situ" 14, with users clicking through 49% of untrusted-issuer warnings within 1.7 seconds and 50% of name and date errors within 2.2 and 2.7 seconds 15. They read it as warning fatigue: "users click through more-frequent errors more quickly." 16

All of that measured a security warning. The closest evidence to a save prompt is a Carnegie Mellon experiment that deliberately left security behind: because repeated exposure would have given the game away, the team built "a new experimental design in which attractors would not be used in a security context." 17

What remained was a plain dialog, repeated until it was furniture, with one field changed near the end. The metric is defined precisely, so the number can be quoted: "the proportion of users who click the 'No' option on the first trial of the test period." 18 On it, treatments that physically inhibited dismissal ran between 44% and 74%, "as opposed to the non-inhibitive treatments which reached a maximum of 20% for Short ANSI." 19

A follow-up the next year found the causal version: "increasing habituation caused a three-fold decrease in the proportion of participants who responded to the change in the dialog." 20 It also recorded the visceral detail: "Nearly 75% of participants using the Swipe treatment were able to dismiss the 20th habituation dialog within five seconds." 21

By the twentieth showing, a dialog is not being read. It is being cleared.

Who owns the words in that dialog — and it is not the app

A web app cannot write its own unsaved-changes message. The HTML Standard makes the wording the browser's: the page can request a prompt, but the text is the user agent's, and the value the page supplies is discarded. Roughly six in ten Chrome page loads arm that request.

The specification is unusually blunt: "the message shown to the user is not customizable, but instead determined by the user agent." 22

Five conditions must all hold before the prompt appears at all. No prompt has been shown yet for this navigation; the document is not sandboxed against modals; its global object "has sticky activation," so a tab you never touched cannot detain you; the page signalled that it wants one; and showing it is "unlikely to be annoying, deceptive, or pointless." 23

A browser reserving the right to judge a dialog pointless is a design verdict written into a standard. The page's only lever is a historical wart: returning false from a handler normally cancels an event, and the standard lists exactly two exceptions to that rule — this is one of them 24. You may raise your hand. You may not choose your words.

Nor is this rare: registration of the handler runs at a 58.52% median of Chrome page loads over the 30 days ending 24 August 2026 25.

It is also not going away — worth saying plainly, because a neighbouring event is. Chrome is retiring unload, a different event that produces no prompt at all, and that rollout reached 80% of Chrome page loads at milestone 152 on 25 August 2026, with 100% scheduled for milestone 154 on 22 September 2026 26.

Across eight years of the same counters, unload registration fell from a 62.13% July median in 2018 to 15.39% in July 2026, while the unsaved-changes handler held flat, 55.43% to 58.02% 27. The web abandoned one and kept the other.

Five changes to make before your next release

None of these require research. They require deciding that a reader's attention is not yours to spend. Take them in order of what they demand: two are relabelling, one is a keyboard binding, one is a feature you may not have built, and the last is an architecture decision.

  1. Replace Yes, No, OK and Done with the verb. Save. Discard Edits. Keep Editing. Each button should read correctly without the title above it 6.
  2. Put cancel first, affirmative last. The stated reason: a reader meets the escape route before the commitment 7.
  3. Bind Escape to cancel, and never bind Return to a destructive button. If no button is safe to default to, set no default at all 8 9.
  4. Ship undo instead of the question. In GNOME's words: "Since users will often habitually click through confirmation dialogs without fully reading or considering them, undo is typically a better option than a confirmation dialog." 28 It also "avoids interrupting the user" 29.
  5. Remove the reason the question exists. Chrome's guidance names the moment: "Consider the hidden state the last reliable time to save app and user data." 30

Only the last is architecture. The other four ship this week.

The caveats: what this evidence does not prove

None of the brain-imaging work measured a save dialog. It measured security warnings, and the transferable claim is the mechanism, not the percentages. The samples are small — 25 people in one scanner study 31, 15 in the other 32 — and attention partially recovers overnight, which the researchers say themselves.

They are not alone, which is what makes the pattern hard to dismiss: the same 2015 paper carries a behavioural arm with "analyzable data from 76 participants across 1,466 warnings" 33, and the two dialog experiments finished 872 and 2,567 participants 34 35.

The recovery finding cuts against the argument and belongs in it: "We found that participants' attention partially recovered between workdays when the stimulus was absent." 36

Attention comes back overnight. Then it drops again.

One number should not travel. Akhawe and Felt found users "continued through 70.2% of Google Chrome's SSL warnings" 37 — a security decision with a visible reward for ignoring it, and nothing here says the same share discards unsaved work. And only the CHI 2010 abstract is public, so every claim drawn from it above is an abstract-level read.

The best save dialog is the one the app never needs

A prompt exists because the app is unsure whether the work is safe. Remove the uncertainty and the prompt has nothing to ask. Chrome's own guidance says to treat the moment a page becomes hidden as the last reliable time to save — not the moment someone tries to leave.

The vendor is direct about the limits of asking. The unsaved-changes event "is often used to warn users of unsaved changes when navigating away," but "is also unreliable as it won't fire if a background tab is killed," so the recommendation is to "limit use" of it 38.

A dialog that does not fire when a phone kills your tab is not a safety net. It is one that works on the days you did not need it.

So the design question moves. It stops being what should this dialog say and becomes where does the work live between keystrokes. A note already written down — in a plain file, on your own device, in a format that opens without the app that made it — has no pending state for a dialog to negotiate over.

That is not a promise that nothing can go wrong. Storage fails and people delete things — so an editor built this way still owes you a way back to yesterday's version, somewhere to recover what you deleted, and ideally a record that appends rather than overwrites. Those are recovery. A modal question is not.

One other dialog still earns the name: in the encoding menu, choosing UTF-8 without a byte-order mark decides whether the file is readable in ten years. That question is genuinely yours.

Every modal an application shows is a decision it declined to make. The save prompt is the most revealing, because it arrives after you have already said what you want by closing the window. Text that is already a file does not need to be asked.


MNMNOTE keeps notes as plain Markdown on your own device, works offline, and shares by end-to-end encrypted link — so whether the work is written down is settled before you close the tab: mnmnote.com.

Frequently Asked Questions

Short answers to what people actually type when a save prompt annoys them, drawn from the specification, the vendor documentation, and the studies above. Where a number came from a study of security warnings rather than save dialogs, the answer says so — rather than leaving you to find out.

Is it possible to display a custom message in the beforeunload popup?

No. The HTML Standard says the message "is not customizable, but instead determined by the user agent," and that "the actual value of the returnValue attribute is ignored." 22 A page-authored message would be an attack surface. The browser also refuses the prompt unless showing it is "unlikely to be annoying, deceptive, or pointless." 23

Should a note app ask me before I lose unsaved changes?

It should not need to. Chrome recommends limiting use of the unsaved-changes event, because it will not fire when a background tab is killed 38. A prompt unreliable on the very failure it exists to catch is not the fix. Saving earlier is.

Is Chrome removing the unsaved-changes prompt?

No. Chrome is deprecating unload, a different event that shows no prompt. The unsaved-changes handler is not being removed — Chrome's counters show it flat, from a 55.43% July median in 2018 to 58.02% in July 2026, while unload fell from 62.13% to 15.39% 27.

Why do I keep clicking through warnings without reading them?

Habituation. Brain activity in the visual processing centres drops "after only the second exposure to a warning," 11 and across more than 25 million field impressions, "users click through more-frequent errors more quickly." 14 16 Those were security warnings; the mechanism carries over, the percentages do not.

Is a confirmation dialog better than an undo feature?

Usually not. GNOME's guidelines say that because users "will often habitually click through confirmation dialogs without fully reading or considering them, undo is typically a better option". 28 Keep the dialog only where undo cannot be offered.

What should the buttons on a save dialog say?

Imperative verbs naming what each does — Save, Discard Edits, Cancel — with cancel placed first 6 7. The destructive option should name what it destroys, and Return should not activate a button whose action "is irreversible, destructive or otherwise inconvenient to the user." 9

Footnotes

  1. Böhme, R. & Köpsell, S., "Trained to accept?: a field experiment on consent dialogs," CHI '10: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp. 2403–2406, 10 April 2010. https://dl.acm.org/doi/10.1145/1753326.1753689. The full text is closed-access; the abstract quoted here is durably archived at https://web.archive.org/web/20240420214222/https://dl.acm.org/doi/10.1145/1753326.1753689. Accessed 2026-08-26. 2

  2. Böhme, R. & Köpsell, S., "Trained to accept?: a field experiment on consent dialogs," CHI '10, 10 April 2010 — abstract, on habituation to coercive interception dialogs. https://dl.acm.org/doi/10.1145/1753326.1753689 (archived: https://web.archive.org/web/20240420214222/https://dl.acm.org/doi/10.1145/1753326.1753689). Accessed 2026-08-26. 2

  3. Kleppmann, M., "Yes/No/Cancel causes Aspirin sales to soar," 19 July 2007. https://martin.kleppmann.com/2007/07/19/yes-no-cancel-causes-aspirin-sales-to-soar.html. Accessed 2026-08-26.

  4. Kleppmann, M., "Yes/No/Cancel causes Aspirin sales to soar," 19 July 2007 — on identifying the dangerous button. https://martin.kleppmann.com/2007/07/19/yes-no-cancel-causes-aspirin-sales-to-soar.html. Accessed 2026-08-26. 2

  5. GNOME Human Interface Guidelines, "Dialogs" → Action Dialogs. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26.

  6. GNOME Human Interface Guidelines, "Dialogs" → Action Dialogs, on labelling the affirmative button with an imperative verb. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26. 2 3 4

  7. GNOME Human Interface Guidelines, "Dialogs" → General Guidelines → Guidelines on dialog buttons, on cancel-first ordering. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26. 2 3

  8. GNOME Human Interface Guidelines, "Dialogs" → General Guidelines, on binding Esc to cancel and on setting no default button where none is appropriate. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26. 2

  9. GNOME Human Interface Guidelines, "Dialogs" → General Guidelines, on the return key and irreversible or destructive actions. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26. 2 3

  10. Böhme, R. & Köpsell, S., "Trained to accept?: a field experiment on consent dialogs," CHI '10, 10 April 2010 — abstract, on heuristic processing dominating the aggregated results. https://dl.acm.org/doi/10.1145/1753326.1753689 (archived: https://web.archive.org/web/20240420214222/https://dl.acm.org/doi/10.1145/1753326.1753689). Accessed 2026-08-26.

  11. Anderson, B. B., Kirwan, C. B., Jenkins, J. L., Eargle, D., Howard, S. & Vance, A., "How Polymorphic Warnings Reduce Habituation in the Brain — Insights from an fMRI Study," CHI 2015, 17 April 2015. https://neurosecurity.net/media/Anderson_et_al._CHI_2015.pdf. Accessed 2026-08-26. 2

  12. Vance, A., Kirwan, B., Bjornn, D., Jenkins, J. & Anderson, B. B., "What Do We Really Know about How Habituation to Warnings Occurs Over Time?," CHI 2017, 2 May 2017. https://neurosecurity.net/media/CHI_Vance_et_al._2017.pdf. Accessed 2026-08-26.

  13. Vance, A. et al., "What Do We Really Know about How Habituation to Warnings Occurs Over Time?," CHI 2017 — eye-tracking model, χ²(1, N = 11,976) = 212.89, p < .001, β = −0.1031 for presentation number across days. https://neurosecurity.net/media/CHI_Vance_et_al._2017.pdf. Accessed 2026-08-26.

  14. Akhawe, D. & Felt, A. P., "Alice in Warningland: A Large-Scale Field Study of Browser Security Warning Effectiveness," 22nd USENIX Security Symposium, pp. 257–272, 14 August 2013. https://www.usenix.org/system/files/conference/usenixsecurity13/sec13-paper_akhawe.pdf. Accessed 2026-08-26. 2

  15. Akhawe, D. & Felt, A. P., "Alice in Warningland," 22nd USENIX Security Symposium, 14 August 2013 — §6.2, click-through times by error type. https://www.usenix.org/system/files/conference/usenixsecurity13/sec13-paper_akhawe.pdf. Accessed 2026-08-26.

  16. Akhawe, D. & Felt, A. P., "Alice in Warningland," 22nd USENIX Security Symposium, 14 August 2013 — §6.2, on warning fatigue. https://www.usenix.org/system/files/conference/usenixsecurity13/sec13-paper_akhawe.pdf. Accessed 2026-08-26. 2

  17. Bravo-Lillo, C., Komanduri, S., Cranor, L. F., Reeder, R. W., Sleeper, M., Downs, J. & Schechter, S., "Your Attention Please: Designing security-decision UIs to make genuine risks harder to ignore," SOUPS 2013, 24–26 July 2013 — §5, Experiment 3 design. https://cups.cs.cmu.edu/soups/2013/proceedings/a6_Bravo-Lillo.pdf. Accessed 2026-08-26.

  18. Bravo-Lillo, C. et al., "Your Attention Please," SOUPS 2013 — definition of the immediate detection rate. https://cups.cs.cmu.edu/soups/2013/proceedings/a6_Bravo-Lillo.pdf. Accessed 2026-08-26.

  19. Bravo-Lillo, C. et al., "Your Attention Please," SOUPS 2013 — §5.2 Results, inhibitive versus non-inhibitive treatments. https://cups.cs.cmu.edu/soups/2013/proceedings/a6_Bravo-Lillo.pdf. Accessed 2026-08-26.

  20. Bravo-Lillo, C., Cranor, L. F., Komanduri, S., Schechter, S. & Sleeper, M., "Harder to Ignore? Revisiting Pop-Up Fatigue and Approaches to Prevent It," SOUPS 2014, USENIX, pp. 105–111, 9–11 July 2014 — abstract. https://www.usenix.org/system/files/soups14-paper-bravo-lillo.pdf. Accessed 2026-08-26.

  21. Bravo-Lillo, C. et al., "Harder to Ignore?," SOUPS 2014 — dismissal of the 20th habituation dialog. https://www.usenix.org/system/files/soups14-paper-bravo-lillo.pdf. Accessed 2026-08-26.

  22. WHATWG HTML Standard, §7.4.2.4 Preventing navigation — "the steps to fire beforeunload". https://html.spec.whatwg.org/multipage/browsing-the-web.html. Accessed 2026-08-26. 2

  23. WHATWG HTML Standard, §7.4.2.4 Preventing navigation — the five conditions required before an unload prompt is shown. https://html.spec.whatwg.org/multipage/browsing-the-web.html. Accessed 2026-08-26. 2

  24. WHATWG HTML Standard, §8.1.8.1 Event handlers — the two historical exceptions to the rule that a handler returning false cancels the event. https://html.spec.whatwg.org/multipage/webappapis.html. Accessed 2026-08-26.

  25. Chrome Platform Status, UseCounter DocumentBeforeUnloadRegistered (bucket 200) — median of the 30 days ending 24 August 2026, computed over the published dataset of 4,220 daily points. https://chromestatus.com/data/timeline/featurepopularity?bucket_id=200. Accessed 2026-08-26.

  26. Chrome, "Deprecating the unload event" — "All sites deprecation timeline," column "% of Chrome page loads for all sites"; page last updated 14 July 2026, dates subject to change. https://developer.chrome.com/docs/web-platform/deprecating-unload. Accessed 2026-08-26.

  27. Chrome Platform Status, UseCounters DocumentBeforeUnloadRegistered (bucket 200) and DocumentUnloadRegistered (bucket 202) — July medians for 2018 and 2026. https://chromestatus.com/data/timeline/featurepopularity?bucket_id=202. Accessed 2026-08-26. 2

  28. GNOME Human Interface Guidelines, "Dialogs" → Confirmation Dialogs, on undo as the better option. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26. 2

  29. GNOME Human Interface Guidelines, "Dialogs" → Confirmation Dialogs, on what undo avoids. https://developer.gnome.org/hig/patterns/feedback/dialogs.html. Accessed 2026-08-26.

  30. Chrome, "Deprecating the unload event" — the visibilitychange recommendation. https://developer.chrome.com/docs/web-platform/deprecating-unload. Accessed 2026-08-26.

  31. Anderson, B. B. et al., "How Polymorphic Warnings Reduce Habituation in the Brain," CHI 2015 — Study 1 participants: "Of the 25 participants, 21 were male and 4 were female." https://neurosecurity.net/media/Anderson_et_al._CHI_2015.pdf. Accessed 2026-08-26.

  32. Vance, A. et al., "What Do We Really Know about How Habituation to Warnings Occurs Over Time?," CHI 2017 — 16 recruited, 15 analysed after one exclusion for scanner malfunction. https://neurosecurity.net/media/CHI_Vance_et_al._2017.pdf. Accessed 2026-08-26.

  33. Anderson, B. B. et al., "How Polymorphic Warnings Reduce Habituation in the Brain," CHI 2015 — Study 2, mouse-cursor tracking. https://neurosecurity.net/media/Anderson_et_al._CHI_2015.pdf. Accessed 2026-08-26.

  34. Bravo-Lillo, C. et al., "Your Attention Please," SOUPS 2013 — Experiment 3 recruitment and completion. https://cups.cs.cmu.edu/soups/2013/proceedings/a6_Bravo-Lillo.pdf. Accessed 2026-08-26.

  35. Bravo-Lillo, C. et al., "Harder to Ignore?," SOUPS 2014 — recruitment and completion. https://www.usenix.org/system/files/soups14-paper-bravo-lillo.pdf. Accessed 2026-08-26.

  36. Vance, A. et al., "What Do We Really Know about How Habituation to Warnings Occurs Over Time?," CHI 2017 — partial recovery between workdays. https://neurosecurity.net/media/CHI_Vance_et_al._2017.pdf. Accessed 2026-08-26.

  37. Akhawe, D. & Felt, A. P., "Alice in Warningland," 22nd USENIX Security Symposium, 14 August 2013 — abstract, Chrome SSL warning click-through. https://www.usenix.org/system/files/conference/usenixsecurity13/sec13-paper_akhawe.pdf. Accessed 2026-08-26.

  38. Chrome, "Deprecating the unload event" — on beforeunload reliability and the recommendation to limit its use. https://developer.chrome.com/docs/web-platform/deprecating-unload. Accessed 2026-08-26. 2