Snippets Form

Bootstrap 5 Sign Up Form with Password Strength Meter

A two-column sign-up page with a brand panel, floating-label fields, a password strength meter and inline validation.

Bootstrap 5 No jQuery Sep 2020 5.8K views

<section class="wdw-stage">
  <div class="container" style="max-width: 1000px">
    <div class="wdw-card overflow-hidden">
      <div class="row g-0">
        <div class="col-lg-5 wdw-aurora p-4 p-lg-5 d-none d-lg-flex flex-column justify-content-between">
          <span class="fw-bold fs-5">Northwind</span>
          <div>
            <h2 class="fw-bold display-6 mb-3" style="letter-spacing:-.02em">Start building in minutes.</h2>
            <p class="mb-0 opacity-75">Free for 14 days. No credit card required.</p>
          </div>
          <p class="small opacity-75 mb-0">Trusted by 12,000+ teams</p>
        </div>
        <div class="col-lg-7 p-4 p-md-4 p-xl-5">
          <span class="wdw-eyebrow">Get started</span>
          <h1 class="wdw-heading h2 mt-1 mb-1">Create your account</h1>
          <p class="wdw-muted mb-3">Please fill in this form to create an account.</p>
          <form id="suForm" novalidate>
            <div class="row g-3 mb-3">
              <div class="col-sm-6"><div class="form-floating"><input type="text" class="form-control" id="suFirst" placeholder="First name" required autocomplete="given-name"><label for="suFirst">First name</label><div class="invalid-feedback">Required.</div></div></div>
              <div class="col-sm-6"><div class="form-floating"><input type="text" class="form-control" id="suLast" placeholder="Last name" required autocomplete="family-name"><label for="suLast">Last name</label><div class="invalid-feedback">Required.</div></div></div>
            </div>
            <div class="form-floating mb-3"><input type="email" class="form-control" id="suEmail" placeholder="Email" required autocomplete="email"><label for="suEmail">Email</label><div class="invalid-feedback">Enter a valid email.</div></div>
            <div class="form-floating mb-1"><input type="password" class="form-control" id="suPass" placeholder="Password" required minlength="8" autocomplete="new-password"><label for="suPass">Password</label><div class="invalid-feedback">Use at least 8 characters.</div></div>
            <div class="progress mt-2 mb-1" style="height:4px" aria-hidden="true"><div class="progress-bar" id="suMeter" style="width:0"></div></div>
            <p class="small wdw-muted mb-3" id="suMeterTxt">Password strength</p>
            <div class="form-floating mb-3"><input type="password" class="form-control" id="suConf" placeholder="Confirm password" required autocomplete="new-password"><label for="suConf">Confirm password</label><div class="invalid-feedback">Passwords do not match.</div></div>
            <div class="form-check mb-3">
              <input class="form-check-input" type="checkbox" id="suTerms" required>
              <label class="form-check-label" for="suTerms">I accept the <a href="#" class="link-primary">Terms of Use</a> and <a href="#" class="link-primary">Privacy Policy</a></label>
              <div class="invalid-feedback">You must accept to continue.</div>
            </div>
            <button type="submit" class="btn btn-primary rounded-pill w-100">Create account</button>
            <div class="alert alert-success d-none mt-3 mb-0" id="suOk" role="status">Account created. Welcome aboard!</div>
          </form>
          <p class="text-center wdw-muted mt-4 mb-0">Already have an account? <a href="#" class="fw-semibold link-primary">Log in</a></p>
        </div>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.

Free to use in personal and commercial projects under the MIT license.