Bug reporting

Steps to reproduce

Steps to reproduce are the exact, numbered actions that make a bug appear again: where to start, what to do, what you expected and what happened instead.

Mozilla's bug writing guidelines call them the most important part of any bug report, because a bug a developer cannot see is a bug they cannot fix.

At a glance

Starting pointThe URL, the account state and the viewport, so the first step lands in the same place
StepsOne action per numbered line, with what you were trying to do when the action alone is ambiguous (Mozilla)
Expected vs. actualTwo separate lines, with facts kept apart from guesses about the cause (Mozilla)
ReproducibilityEvery time, sometimes, or once (Mozilla)
EnvironmentBrowser and version, operating system, build, and the page URL (Chromium)
EvidenceA screenshot or recording of the actual result, and the element's computed CSS for a visual bug
Captured withOverlayQA Visual Bug Capture

Why it matters

Mozilla's bug writing guidelines call steps to reproduce the most important part of any bug report (Mozilla). A developer fixes what they can see. A report that says "the checkout is broken" sends them hunting for a state they may never reach, and the bug comes back as "cannot reproduce". Chromium's guidelines ask for the same things in the same order: verify on the latest build, give a one-line description, then detailed steps, then the expected behavior, and include the URL (Chromium).

How do you write steps to reproduce?

Examples

A report that bouncesA report that gets fixed
"Pay now does nothing on mobile."1. Open /checkout/ in Safari on an iPhone (390 px wide), signed in, with one item in the cart. 2. Tap Pay now. Expected: the payment sheet opens. Actual: nothing opens and the button turns gray. Happens every time (3 of 3). Screenshot attached.
"The hero text is cut off sometimes."1. Open the home page at 1280 px wide in Chrome on macOS. 2. Press Cmd and Plus twice, to 125% zoom. Expected: the headline wraps to a second line. Actual: the second line is clipped by the hero image. Reproduces every time at 125%, never at 100% or 150%.

Common mistakes

Frequently asked questions

What is the difference between steps to reproduce and expected results?

The steps are the actions that lead to the bug. The expected result is what should have happened after the last step, and the actual result is what did. Mozilla asks for all three, with facts kept apart from speculation about the cause.

How many steps should a bug report have?

As many as it takes from a known starting point, with one action per step. Mozilla's guidance is to describe the method of interacting and, where it matters, the intent of each step, so a developer can follow it without guessing.

What if the bug does not happen every time?

Say so. Mozilla asks reporters to state whether a bug reproduces at will, occasionally or not at all. A rough rate, such as 2 of 5 tries, plus what you varied between tries, is more useful than leaving the field blank.

Do I still need a screenshot if the steps are complete?

Yes. The steps let a developer reach the state; the screenshot proves the actual result and carries the details words miss, such as exact spacing, colors and text. For a visual bug, the element's computed CSS is the fastest route to the fix.

Sources: Mozilla, Bug Writing Guidelines, Chromium, Bug Reporting Guidelines.

Last updated October 22, 2026