← Back to blog

How to Write Good User Stories

user-stories backlog agile

A poorly written User Story is the root cause of bad estimates, off-target deliveries, and team frustration. A well-written one, on the other hand, is clear, actionable, and testable.

The Basic Format

As a [user type], I want [action] so that [benefit/value].

Good Example

As an e-commerce customer, I want to save multiple shipping addresses so that I don’t have to type them in every time I place an order.

Bad Example

“Add an address table to the database.”

The bad example describes an implementation detail, not a user need. The good one focuses on value.

The INVEST Framework

I — Independent

Each story can be delivered without depending on others.

Bad: “Build login API” and “Build login frontend” as separate stories. Good: “As a user, I want to log in so I can access my account” — covers both frontend and backend.

N — Negotiable

Details are open for discussion, not rigid specifications.

Bad: “The button must be blue #0066CC with 4px rounded corners and 14px font.” Good: “The save button should be visually prominent on the page.” — details are ironed out with the designer.

V — Valuable

Delivers real value to the user or the business.

Bad: “Refactor the payment module.” Good: “As a customer, I want payment to be processed in under 3 seconds so I have a smooth experience.”

E — Estimable

The team has enough information to provide an estimate.

Bad: “Improve system performance.” (what? by how much?) Good: “As a user, I want the product page to load in under 2 seconds.”

S — Small

Fits within a single sprint. If it doesn’t, break it down.

Bad: “As an admin, I want to manage users, permissions, groups, and auditing.” (4 things in one) Good: 4 separate stories, each with a single focus.

T — Testable

Has clear acceptance criteria.

Bad: “The system should be fast.” Good: “Search returns results in under 500ms for 95% of queries.”

Acceptance Criteria

Every story needs acceptance criteria. A common format is Given/When/Then.

Given I’m on the checkout page When I click “Save address” Then the address is added to my address list And I see a confirmation message

Story Points and User Stories

A story should be estimated using Planning Poker only after it’s been well-written and has acceptance criteria defined. If the team can’t estimate it, the story needs more refinement — not a wild guess.

Epics vs Stories

An epic is a story too large for a single sprint. It needs to be broken down.

Epic: “As a customer, I want a complete loyalty program.”

Derived stories:

  1. As a customer, I want to earn points with every purchase.
  2. As a customer, I want to check my points balance.
  3. As a customer, I want to redeem points for discount coupons.
  4. As an admin, I want to configure the point accrual rate.

Conclusion

Good User Stories are the foundation of accurate estimates and value-driven delivery. Invest time in writing them correctly — and you’ll see the payoff in more predictable sprints and happier stakeholders.