Snippets Form

Bootstrap 5 Sign Up Form with Side Image

A two-column sign-up card with a full-height photo panel on one side and a labelled form with name, contact and password fields on the other.

Bootstrap 5 No jQuery Apr 2020 3.2K views

<section class="wdw-stage">
  <div class="container" style="max-width:980px">
    <div class="wdw-card overflow-hidden">
      <div class="row g-0">
        <div class="col-lg-5 d-none d-lg-block">
          <div class="su-side h-100 d-flex flex-column justify-content-end p-5 text-white">
            <span class="badge rounded-pill text-bg-light align-self-start mb-3">Members only</span>
            <h2 class="h3 fw-bold mb-2">Live music, closer than ever.</h2>
            <p class="mb-0 opacity-75">Get early access to tickets, backstage drops and member-only events.</p>
          </div>
        </div>
        <div class="col-lg-7">
          <form class="p-4 p-md-5" id="signupForm" novalidate>
            <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-4">It takes less than a minute.</p>
            <div class="row g-3">
              <div class="col-sm-6">
                <label for="suFirst" class="form-label small fw-semibold">First name</label>
                <input type="text" class="form-control" id="suFirst" autocomplete="given-name" placeholder="Jane" required>
              </div>
              <div class="col-sm-6">
                <label for="suLast" class="form-label small fw-semibold">Last name</label>
                <input type="text" class="form-control" id="suLast" autocomplete="family-name" placeholder="Doe" required>
              </div>
              <div class="col-sm-6">
                <label for="suPhone" class="form-label small fw-semibold">Phone</label>
                <input type="tel" class="form-control" id="suPhone" autocomplete="tel" placeholder="+1 555 010 2030">
              </div>
              <div class="col-sm-6">
                <label for="suEmail" class="form-label small fw-semibold">Email</label>
                <input type="email" class="form-control" id="suEmail" autocomplete="email" placeholder="[email protected]" required>
              </div>
              <div class="col-sm-6">
                <label for="suPass" class="form-label small fw-semibold">Password</label>
                <input type="password" class="form-control" id="suPass" autocomplete="new-password" minlength="8" placeholder="At least 8 characters" required>
              </div>
              <div class="col-sm-6">
                <label for="suPass2" class="form-label small fw-semibold">Confirm password</label>
                <input type="password" class="form-control" id="suPass2" autocomplete="new-password" placeholder="Repeat password" required>
                <div class="invalid-feedback">Passwords do not match.</div>
              </div>
            </div>
            <button type="submit" class="btn btn-primary rounded-pill w-100 mt-4">Create account</button>
            <p class="text-center wdw-muted small mt-3 mb-0" id="suMsg" role="status">Already have an account? <a href="#" class="fw-semibold">Sign in</a></p>
          </form>
        </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.