Test Drive: A web tool for estimating ADU permit fees in East Palo Alto

Julia Wagenfehr
Published in
10 min readJun 30, 2021


When you decide to build an ADU on your property, you are bound to pay permit fees. In fact, these costs can constitute an unexpectedly large percentage of your total project budget, typically ranging anywhere from 6% to 18% in California. Unfortunately, it is quite difficult to calculate a total permit fee amount because of the multiple authorities involved (school districts, fire district, city planning department, etc.).

Network diagram depicting some of the authorities involved in an ADU project in East Palo Alto

For property owners for whom an extra $10,000 in the project budget can be a deal breaker, it is essential to know an accurate permit fee value before embarking on an ADU project. To help in this regard, we have examined documents, made phone calls, and engaged City staff directly to develop a comprehensive ADU permit fee guide for East Palo Alto. In the next section, we’ll walk through the different categories of permit fees and share what we know about individual line items. Then we’ll conclude with a description of a free web calculator tool we designed to help you estimate fees for your own project. Keep in mind that the details that follow are specific to East Palo Alto, but likely share similarities with many jurisdictions.

Planning Department

The planning department regulates land use and development by conducting the initial review of your project. The fees they charge cover the administrative time for planning staff. For an ADU project, when you submit your design documents to the planning department, you can expect to pay the following fees:

Zoning clearance

  • Covers the time that it takes to check the ADU against land use, setback, and height requirements
  • Fee: $586

Address assignment

  • Fee: $585

Building Department

The building department reviews construction documents (structural plans, electrical layout, door and window schedules, etc.) to ensure your ADU project complies with building code. They charge the following fees:

Application processing

  • Fee: $288

Building plan check

  • Covers the time it takes for the plan check technician to review the construction documents and make comments
  • Fee: depends on your project’s construction valuation; see the table on page 14 of this document, or use our calculator tool.

Building Permit and Inspection

  • Once the application is reviewed and the technician has no additional comments for your design team to address, you can pick up your finalized construction documents from the city (more commonly called “pulling the permit”). Throughout your construction process, you are required to have an inspector come to the property a few times to ensure that the new structure is safe.
  • Fee: like for building plan check, this fee depends on your project’s construction valuation; see the table on page 15 of this document, or use our calculator tool.

Demolition (not always required)

  • Applies only if the existing residential structure requires demolition
  • Fee: $480

Certificate of Occupancy

  • Certifies that the completed ADU adheres to building code.
  • Fee: $384

Engineering (Public Works)

The public works department ensures that your design accounts for potential road or sidewalk repairs, or stormwater management needs. The fees are as follows:

Engineering permit

  • Covers the time of the review staff
  • Fee: $509

Frontage improvements

  • Fee: all projects will have a base fee of $458, but if your existing sewer lateral needs repair, the fee will jump up to $784.

Road/curb cut repair (not always required)

  • This fee is only required if your project involves demolition and reconstruction of the public road or sidewalk in front of your residence.
  • Fee: $764

Development Impact (applicable to ADUs above 750 sqft only)

Certain public amenities are impacted when a neighborhood becomes more populated, including parks and trails, general public facilities, storm drain capacity, public transportation, and water delivery infrastructure. As a result, a fee is charged to offset the impact on the public amenities. However, new state laws passed in 2019 and effective 2020 were designed to reduce the “impact” of impact fees for ADU projects in particular, given the reasoning that an ADU should have less impact than a typical dwelling, and the overall goal of lowering barriers to affordable housing. One effect of the state law is that impact fees can’t be charged for ADU projects smaller than 750 sqft (East Palo Alto abides by this). Another effect is that the ADU fee that is charged for larger ADUs needs to be proportional to square footage in some way. East Palo Alto’s solution to this is to add a factor to the previous existing base impact fee, which is the fraction between the smaller ADU square footage and larger main residence square footage (indicated merely as “area adjustment” below for the sake of brevity). The fees are as follows:

  • Parks and trails fee: $1,731.51 * area adjustment
  • Public facilities fee: $3,036.69 * area adjustment
  • Storm drain fee: $1,174.20 * area adjustment; if you are located in the Ravenswood Business District, the fee will instead be $2,027.96 * area adjustment
  • Public transportation fee: $987.79 * area adjustment
  • Water infrastructure fee: $5,252.14 (this item is not multiplied by the fraction because this type of impact fee is exempt from state law; the full base fee applies to all projects)

Note that with the specific way East Palo Alto designed its area adjustment, there remains a sudden and potentially substantial (thousands of dollars) jump in fees if your ADU project goes from 749 to 750 sqft. For some homeowners, it may be worth considering a design that specifically is under this threshold. For others, the value of extra space can be very much worth it, so you would freely consider ADU sizes from 750 to the maximum of 1000 sqft as appropriate for your vision.

School District Impact Fees (applicable to ADUs above 500 sqft only)

Schools also must be paid impact fees, because they require additional teachers and resources if more families move into a neighborhood. The new state law affecting the previously described impact fees does not affect school impact fees.

  • The fee is $4.08 multiplied by the square footage of your ADU

Sanitary District

Sanitary district fees are a hotly debated issue in East Palo Alto. Some sanitary districts (namely EPASD) maintain that ADUs will be a heavy burden to the neighborhood sewer system and must be treated equivalent to a main residence in terms of fees. This is somewhat controversial because an addition of a single bathroom in a main residence would not trigger additional fees, and an ADU often includes only one bathroom. It’s possible that, without legal or political recourse, sanitary districts that charge higher fees for ADUs will have no incentive to change their practices.

There are two sanitary districts that service EPA: EPASD and West Bay Sanitary District. The fees for each organization are listed below

East Palo Alto Sanitary District (EPASD)

  • Sewer Lateral Connection Permit: $25
  • Sewer Lateral Inspection: $100
  • Connection Fee (currently in debate): $6,060
  • Annual Sewer Service Charge (currently in debate): $600

West Bay Sanitary District

  • Inspection fee: $290
  • ADU connection fee (only applies to ADUs greater than 750 sqft): $425.05 * number of fixture units in the ADU
  • Fixture units include any item with a drain

Note: beyond the debated connection and service charges, there is a much bigger potential cost if the sanitary district, as part of its lateral inspection, determines that your lateral sewer needs repair or replacement before they can approve your ADU project. It is their obligation to regulate the quality of this infrastructure, and it’s in everybody’s interest to repair pipe damages from tree roots or problems. The problem is really that such aging infrastructure typically doesn’t get replaced unless there’s a noticeable clog, or when the sanitary district has a chance to hold up a new plumbing project, which means, for better or for worse, this issue comes up more often than expected during the ADU permit process. We aren’t providing an estimate for this as part of a standard permit fee calculator, but if lateral repair or replacement is required by the sanitary district, expect tens of thousands of dollars (and months) to be added to your project. If this is a big enough risk, and you suspect that your lateral sewer may genuinely be overdue for maintenance, you may want to get a lateral inspection sooner rather than later.

Fire Department

An inspection is required from the local fire department to ensure that your ADU adheres to egress standards. In other words, you need to have a large enough window in all habitable spaces that a human could fit through in the case of a fire. In addition, the fire department needs to inspect your photovoltaic system (if you decide to install one) to verify it is up to code. The fees are as follows:

  • Site review fee: $220
  • Photovoltaic inspection fee (not always required): $425.05

Are These Fees Reasonable?

If you’ve read through all the categories above, you’re probably wondering why certain fees are the way they are, and if they truly are “fair” given the nature of ADUs, which are smaller than typical projects, typically easier to review, and generally a desirable outcome of local housing policy. Evidently, the state-level reform on impact fees described above was exactly such a change in thinking on what ADU fees should be. Is it possible that any of these other fees may be reformed through local or state action? We suspect that after the major 2020 state law, and facing a lot of heat from those who abhor top-down meddling, state legislators are probably going to leave the next action on fee reform to cities. In the case of East Palo Alto, we and other nonprofits are working with champions within City departments to push for changes in the next round of fee updates, which won’t go into effect until next summer (the numbers in this article reflect changes effective July 2021, which underwent their own set of basic reforms). For example, we’re recommending that many of the fees associated with review be reduced or waived entirely to acknowledge the expedited nature of ADU review (especially if we also make progress on a pre-approved ADU program, whereby a certain set of designs are even more expeditious) and the active desire to lower barriers to building this valuable source of affordable housing. We’re also recommending that the fee logic be made more consistent, like replacing formulas that arbitrarily base themselves on construction value in the building department, or smoothing out that sudden jump in impact fees caused in part by the interaction between state and local policies. As for the fees levied by the other authorities — school, sanitary, and fire — each will require its own advocacy effort, some much more uphill than others.

East Palo Alto ADU Permit Fee Calculator

In order to simplify the process of estimating total permit fees, we developed an easy-to-use calculator. All you need to do is input some project-specific information, and the calculator returns a total fee estimate, as well as a detailed breakdown of the fees from each authority. We wanted this tool to be accessible to as many people as possible, so we included the option to set the language as English, Spanish, or Tongan.

Click the image to use the interactive EPA ADU Fee Calculator

What information do I need to use the tool?

In order to receive the most accurate estimate, we recommend that you collect the following information:

  • Size and approximate valuation of the proposed ADU
  • The size of the main residence
  • Your sanitary district (EPA Sanitary District or West Bay Sanitary District)
  • Whether you will need to make modifications to the sewer lateral, road, or sidewalk

Note that some of this information is obtainable by typing your address into our other ADU eligibility tool.

We hope this guide and calculator provide transparency on all of the various facets involved in permit fees for ADU projects. This tool was developed as part of the EPA-ADU initiative, which includes other nonprofits like EPACANDO and Soup which also use our tools, and can help you take the next steps in your ADU project.

Web Tool Technical Appendix

If you are a programmer interested in the backend processes of the web tool, then this section is for you. The web tool was created using R Shiny and flexdashboard, which we like to use as an extra user-friendly layer on top of Shiny. flexdashboard lets you build a shiny dashboard using a R Markdown file and has many great standardized design features, but we still wanted some degree of style customization on top of the built-in features, so we included CSS elements to control text style, text color, and background color.

ADU permit fees may change at any time, especially since there are so many different authorities involved. We needed a way to allow different City staff members, who may not have technical knowledge about Shiny, to update fee values whenever a change occurred. As a result, we made use of the R googlesheets4 package. range_speedread() pulls data from a Google Sheet every time the web app is called. That is to say, the items that are changed in the Google Sheet will immediately be reflected on the dashboard without any further manual adjustments or republishing.

As mentioned before, we wanted the dashboard to be accessible to as many people as possible, so we provided multiple language options. On the backend, the shiny.i18n package assisted us in this translation effort. We asked two individuals from other EPA non-profits, who are fluent in Spanish and Tongan, to provide translations for all of the web tool text. In order for the shiny.i18n package to properly identify each translation, the text needs to be in two columns (one English and one the translation) and saved as a CSV within your working directory. After that, you can create a translation object in the script:

i18n <- Translator$new(translation_csvs_path = “translation”)

Next, you can simply wrap all of your text with the translation object, such as i18n(“Example”), which would translate “Example” to a selected language. To allow the web app user to control the language that displays, we created a selectInput() that is tied to an observeEvent().

We faced one issue with using the shiny.i18n translator in a flexdashboard script. The text that is to be translated needs to be in the UI in order to work properly. Shiny inputs are not typically placed in a UI environment in flexdashboard, so we initially faced an error when trying to translate the input labels. We resolved this issue by wrapping all Shiny inputs in a uiOutput().

Check out the full dashboard code here.