reason.com Open in urlscan Pro
75.2.24.81  Public Scan

URL: https://reason.com/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-ch...
Submission: On February 13 via manual from US — Scanned from US

Form analysis 3 forms found in the DOM

GET https://reason.com/

<form role="search" method="get" class="search-form" action="https://reason.com/">
  <label>
    <span class="screen-reader-text">Search for:</span>
    <input type="search" class="search-field" placeholder="Search …" value="" name="s">
  </label>
  <input type="submit" class="search-submit" value="Search">
</form>

POST

<form method="post" id="gform_0" class="recaptcha-v3-initialized"><input type="hidden" name="login_redirect" value="/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/">
  <div class="gform_heading">
    <h3 class="gform_title">Login Form</h3>
  </div>
  <div class="gform_body">
    <div id="gform_fields_login" class="gform_fields top_label">
      <div id="field_0_1" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_0_1"><label class="gfield_label gform-field-label"
          for="input_1">Username<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
        <div class="ginput_container ginput_container_text"><input name="input_1" id="input_1" type="text" value="" class="" aria-required="true" aria-invalid="false"> </div>
      </div>
      <div id="field_0_2" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_0_2"><label class="gfield_label gform-field-label"
          for="input_2">Password<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
        <div class="ginput_container ginput_container_text"><input name="input_2" id="input_2" type="password" value="" class="" aria-required="true" aria-invalid="false"> </div>
      </div>
      <div id="field_0_3" class="gfield gfield--type-remember_me field_sublabel_below gfield--no-description field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_0_3"><label
          class="gfield_label gform-field-label screen-reader-text gfield_label_before_complex"></label>
        <div class="ginput_container ginput_container_checkbox">
          <div class="gfield_checkbox" id="input_3">
            <div class="gchoice gchoice_3">
              <input class="gfield-choice-input" name="input_3.1" type="checkbox" value="1" id="choice_3">
              <label for="choice_3" id="label_3">Remember Me</label>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div class="gform_footer top_label"> <button type="submit" id="gform_submit_button_0" class="gform_button button"
      onclick="if(window[&quot;gf_submitting_0&quot;]){return false;}  if( !jQuery(&quot;#gform_0&quot;)[0].checkValidity || jQuery(&quot;#gform_0&quot;)[0].checkValidity()){window[&quot;gf_submitting_0&quot;]=true;}  "
      onkeypress="if( event.keyCode == 13 ){ if(window[&quot;gf_submitting_0&quot;]){return false;} if( !jQuery(&quot;#gform_0&quot;)[0].checkValidity || jQuery(&quot;#gform_0&quot;)[0].checkValidity()){window[&quot;gf_submitting_0&quot;]=true;}  jQuery(&quot;#gform_0&quot;).trigger(&quot;submit&quot;,[true]); }">Login</button>
    <input type="hidden" class="gform_hidden" name="is_submit_0" value="1">
    <input type="hidden" class="gform_hidden" name="gform_submit" value="0">
    <input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
    <input type="hidden" class="gform_hidden" name="state_0" value="WyJbXSIsIjVmZDk0MDRiMTc0NTYwODJmYTIwNGZlZDYxN2ViYzJjIl0=">
    <input type="hidden" class="gform_hidden" name="gform_target_page_number_0" id="gform_target_page_number_0" value="0">
    <input type="hidden" class="gform_hidden" name="gform_source_page_number_0" id="gform_source_page_number_0" value="1">
    <input type="hidden" name="gform_field_values" value="">
  </div>
</form>

POST /2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/#gf_17

<form method="post" enctype="multipart/form-data" target="gform_ajax_frame_17" id="gform_17" class="puprf-signup-widget recaptcha-v3-initialized"
  action="/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/#gf_17" data-formid="17" novalidate="">
  <div class="gf_invisible ginput_recaptchav3" data-sitekey="6LeMnkUaAAAAALL8T1-XAyB7vxpOeTExu6KwR48-" data-tabindex="0"><input id="input_9ae663dc72ef42b46f2cf3a53ec042e1" class="gfield_recaptcha_response" type="hidden"
      name="input_9ae663dc72ef42b46f2cf3a53ec042e1" value=""></div>
  <div class="gform-body gform_body">
    <div id="gform_fields_17" class="gform_fields top_label form_sublabel_below description_below">
      <div id="field_17_1" class="gfield gfield--type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_17_1"><label
          class="gfield_label gform-field-label" for="input_17_1">Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
        <div class="ginput_container ginput_container_email">
          <input name="input_1" id="input_17_1" type="email" value="" class="large" placeholder="Email Address" aria-required="true" aria-invalid="false">
        </div>
      </div>
      <div id="field_17_2" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below gfield_visibility_visible" data-js-reload="field_17_2"><label
          class="gfield_label gform-field-label" for="input_17_2">Email</label>
        <div class="ginput_container"><input name="input_2" id="input_17_2" type="text" value="" autocomplete="new-password"></div>
        <div class="gfield_description" id="gfield_description_17_2">This field is for validation purposes and should be left unchanged.</div>
      </div>
    </div>
  </div>
  <div class="gform_footer top_label"> <button type="submit" id="gform_submit_button_17" class="gform_button button"
      onclick="if(window[&quot;gf_submitting_17&quot;]){return false;}  if( !jQuery(&quot;#gform_17&quot;)[0].checkValidity || jQuery(&quot;#gform_17&quot;)[0].checkValidity()){window[&quot;gf_submitting_17&quot;]=true;}  "
      onkeypress="if( event.keyCode == 13 ){ if(window[&quot;gf_submitting_17&quot;]){return false;} if( !jQuery(&quot;#gform_17&quot;)[0].checkValidity || jQuery(&quot;#gform_17&quot;)[0].checkValidity()){window[&quot;gf_submitting_17&quot;]=true;}  jQuery(&quot;#gform_17&quot;).trigger(&quot;submit&quot;,[true]); }">Submit</button>
    <input type="hidden" name="gform_ajax" value="form_id=17&amp;title=&amp;description=1&amp;tabindex=0&amp;theme=data-form-theme='gravity-theme'">
    <input type="hidden" class="gform_hidden" name="is_submit_17" value="1">
    <input type="hidden" class="gform_hidden" name="gform_submit" value="17">
    <input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
    <input type="hidden" class="gform_hidden" name="state_17" value="WyJbXSIsIjVmZDk0MDRiMTc0NTYwODJmYTIwNGZlZDYxN2ViYzJjIl0=">
    <input type="hidden" class="gform_hidden" name="gform_target_page_number_17" id="gform_target_page_number_17" value="0">
    <input type="hidden" class="gform_hidden" name="gform_source_page_number_17" id="gform_source_page_number_17" value="1">
    <input type="hidden" name="gform_field_values" value="">
  </div>
  <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js"
      value="1707797000680">
    <script>
      document.getElementById("ak_js_1").setAttribute("value", (new Date()).getTime());
    </script>
  </p>
</form>

Text Content

 * Latest
 * Magazine
   * Current Issue
   * Archives
   * Subscribe
   * Crossword
 * Video
 * Podcasts
   * All Shows
   * The Reason Roundtable
   * The Reason Interview With Nick Gillespie
   * The Soho Forum Debates
   * Just Asking Questions
   * The Best of Reason Magazine
   * Why We Can't Have Nice Things
 * Volokh
 * Newsletters
 * Donate
   * Donate Online
   * Donate Crypto
   * Ways To Give To Reason Foundation
   * Torchbearer Society
   * Planned Giving
 * Subscribe
   * Print/Digital Subscriptions
   * Gift Subscriptions

Search for:


LOGIN FORM

Username(Required)

Password(Required)

Remember Me
Login
Create new account
Forgot password


Government Waste


CALIFORNIA STOPPED SAN FRANCISCO'S $1.7 MILLION TOILET. THE CITY CAN'T BUILD
SOMETHING CHEAPER.


"WHY ISN'T THERE A TOILET HERE? I JUST DON'T GET IT. NOBODY DOES," ONE RESIDENT
TOLD THE NEW YORK TIMES LAST WEEK. "IT'S YET ANOTHER EXAMPLE OF THE CITY THAT
CAN'T."

Emma Camp | 1.29.2024 3:49 PM

Share on FacebookShare on TwitterShare on RedditShare by emailPrint friendly
versionCopy page URL
Media Contact & Reprint Requests
(Illustration: Lex Villena)

In October 2022, San Francisco raised eyebrows when the city budgeted $1.7
million for a single-stall public restroom in the city's Noe Valley
neighborhood. The high price tag, according to city officials, was due to the
steep price of construction in San Francisco, as well as remaining supply chain
issues.

But the state stepped in shortly after, scrapping the planned bathroom after
outrage spread over its high cost to taxpayers. Fifteen months later, the public
plaza where the restroom was originally planned still doesn't have a place to
pee—and it doesn't look like it will get one any time soon.

"Why isn't there a toilet here? I just don't get it. Nobody does," one resident
told The New York Times last week. "It's yet another example of the city that
can't."

San Francisco has the most expensive construction costs in the world—and it's
hardly surprising. In order to build a public bathroom in Noe Valley, at a
location that already had the necessary plumbing to add a restroom, builders
would have to pass a dizzying number of regulatory stops. These include seeking
approval from the Arts Commission's Civic Design Review committee, passing
review under the California Environmental Quality Act, and getting the go-ahead
from the city's Rec and Park Commission and San Francisco's Board of
Supervisors. If that isn't enough, the project would also be subject to a period
of "community feedback."

Powered By

00:00/01:30
10 Sec


Biden meets with Jordan's King Abdullah II as pressure increases for Gaza deal




Next
Stay





Even after gaining approval, the city wouldn't be free to simply find the
cheapest acceptable bathroom—likely a pre-fabricated option—and connect it to
city plumbing. According to a 2022 San Francisco Chronicle article,
pre-fabricated bathrooms violate the city's Public Labor Agreement. Adding to
costs, the city would also be required to use union labor to construct the
bathroom.

While the $1.7 million price tag was rightfully criticized, should the project
have been allowed to go forward, the budget might not have been an overestimate.
San Francisco's regulatory burden on new construction—even something as simple
as a single-stall bathroom—is just that high. 

Even San Francisco's own government has conceded that the Noe Valley bathroom
fiasco was a sign that the city has too much regulation. "It's worth changing
the laws that are in place around construction projects like the restroom that
slow things down," a spokesperson for Mayor London Breed told the Times. 

But this is far from the first time that local governments have earmarked
absurdly large sums of money to pay for public bathrooms. In 2017, New York City
spent $2 million on a public park bathroom. And last year, Philadelphia caused
controversy when it announced that it would spend $1.8 million on six modular
Portland Loo bathrooms over the next five years—a model that cities across the
country have spent millions on in recent years.

Start your day with Reason. Get a daily brief of the most important stories and
trends every weekday morning when you subscribe to Reason Roundup.

Email(Required)

Email

This field is for validation purposes and should be left unchanged.
Submit

Δ

NEXT: iRobot Lays Off 350 Employees as Amazon Kills Merger Elizabeth Warren
Opposed

Emma Camp is an assistant editor at Reason.

Government WasteCity SpendingGovernment SpendingSan
FranciscoRegulationCitiesCaliforniaLocal GovernmentState GovernmentsLabor Unions
Share on FacebookShare on TwitterShare on RedditShare by emailPrint friendly
versionCopy page URL
Media Contact & Reprint Requests

Show Comments (61)


LATEST

SCOTUS IS TROUBLED BY THE CLAIM THAT STATES CAN DISQUALIFY TRUMP FROM THE
ELECTION AS AN INSURRECTIONIST

Jacob Sullum | 2.12.2024 1:35 PM

PROTECT ACT COULD REQUIRE REMOVAL OF ALL EXISTING PORN ONLINE

Elizabeth Nolan Brown | 2.12.2024 12:00 PM

BIDEN'S BIZARRE 'SHRINKFLATION' NONSENSE

Eric Boehm | 2.12.2024 11:15 AM

DELINQUENT COUNTRIES

Liz Wolfe | 2.12.2024 9:30 AM

JOE BIDEN'S NO GOOD, VERY BAD DAY

J.D. Tuccille | 2.12.2024 7:00 AM





 * About
 * Browse Topics
 * Events
 * Staff
 * Jobs
 * Donate
 * Advertise
 * Subscribe
 * Contact
 * Media
 * Shop
 * Amazon

Reason FacebookReason TwitterReason InstagramReason TikTokReason YoutubeReason
ItunesReason on FlipboardReason RSS

© 2024 Reason Foundation | Accessibility | Privacy Policy | Terms Of Use

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of
Service apply.



Notifications