Guide · Size limits

How big can an ADU be in San Antonio?

Updated October 2026

As of October 2026, a San Antonio ADU can be up to 800 sq ft or 50% of the main house's size, whichever is larger, and never more than 1,600 sq ft. Every eligible property can have at least 800 sq ft. The same cap applies whether the ADU is attached or detached.

How does the 50% rule work in practice?

Main house size50% of main houseMaximum ADU size
1,200 sq ft600 sq ft800 sq ft (the floor applies)
2,000 sq ft1,000 sq ft1,000 sq ft
2,800 sq ft1,400 sq ft1,400 sq ft
4,000 sq ft2,000 sq ft1,600 sq ft (the cap applies)

This table applies the city's stated formula. How the main house is measured can matter, so we confirm the figure with the city for your property.

How tall can it be?

A detached ADU can be up to two stories and 25 feet. An attached ADU follows the height limits of the zoning district.

How close to the lot lines?

Detached units can be 3 feet or more from side and rear lines, but eaves cannot overhang within 3 feet and walls within 5 feet must be fire-rated. A 5-foot setback avoids both.

It depends: what else limits size?

  • Parking. Over 800 sq ft, one dedicated off-street space is required.
  • The yard. Trees, easements and drainage often shrink the buildable area below the legal cap.
  • Deed restrictions. Subdivision covenants may cap accessory buildings more tightly than the city. See deed restrictions.
  • Budget. Bigger is not always better value; kitchens and bathrooms cost the same in a small unit.

How many ADUs can I build?

One per property, in districts that allow them. There is no bedroom limit.

Sources, as of October 2026:

  • City of San Antonio Development Services, Accessory Dwelling Unit Permits page (sa.gov), for size, height, setback, parking and district rules.

Get the answer for your address

Send us the property address. We check what applies to it and get back to you, free. We cover San Antonio, New Braunfels, Schertz, Boerne and Alamo Heights.

No charge and no commitment. Your details are used only to answer your request.