What Bay Area ADUs cost

One contractor's published ranges for planning, labeled as what they are. Nothing on this page is a price for your lot.

Published October 16, 2026. Reviewed against public sources listed below.

What one Bay Area contractor publishes

EDR Design Build, a contractor that serves San Mateo and Santa Clara counties, publishes cost ranges on its own blog: $280,000 to $420,000 for a mid-range detached ADU of 400 to 800 square feet, $120,000 to $320,000 for a garage conversion, and $80,000 to $180,000 for a junior ADU. That is contractor marketing for neighboring counties, not a Berkeley survey, and the ranges are from 2025. We did not find a Berkeley specific cost survey.

One contractor's published ranges

Cost comparison chart Bar: published range. Dot: single published figure. $0 $200,000 $400,000 $600,000 Detached ADU, 400 to800 sq ft $280,000 to $420,000 Garage conversion $120,000 to $320,000 Junior ADU $80,000 to $180,000 Cost comparison chart Bar: published range. Dot: single published figure. Detached ADU, 400 to 800 sq ft$280,000 to $420,000Garage conversion$120,000 to $320,000Junior ADU$80,000 to $180,000 $0$200,000$400,000$600,000
EDR Design Build, published 2025 ranges for San Mateo and Santa Clara counties. Contractor marketing, not a Berkeley survey and not a quote for your lot.

City costs sit on top

The city's fees are separate from the contractor's price: a $250 zoning plan check fee, a $500 neighbor noticing fee, a $250 address assignment for a new ADU, building permit fees based on project value, and school facility fees for projects over 500 square feet of livable space. The steps are in the permit guide. Ask any contractor for a written, itemized quote.

Ask a licensed ADU contractor to follow up

Send a request with your address and whether you are thinking of a detached unit, a garage conversion, or a junior ADU. We pass your request to one independent licensed contractor who serves Berkeley, CA, if one is available.

Free referral service. An independent licensed ADU contractor does the work. How this works.

Send a requestRequest a callback