Snippets Dual

Bootstrap 5 Login and Sign Up Split Form

A split authentication card with a sign-in form on one side and a sign-up form on a brand panel on the other, with floating labels and light validation.

Bootstrap 5 No jQuery Jun 2019 3.3K views

<section class="wdw-stage">
  <div class="container" style="max-width:980px">
    <div class="wdw-card overflow-hidden position-relative">
      <div class="row g-0">
        <div class="col-md-6 p-4 p-lg-5">
          <span class="wdw-icon mb-4">
            <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.85" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="4" y="10" width="16" height="10" rx="2.5"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg>
          </span>
          <h2 class="wdw-heading h3 mb-1">Welcome back</h2>
          <p class="wdw-muted mb-4">Sign in to pick up where you left off.</p>
          <form class="wdw-dual-form" novalidate>
            <div class="form-floating mb-3">
              <input type="email" class="form-control" id="loginEmail" placeholder="[email protected]" autocomplete="email" required>
              <label for="loginEmail">Email address</label>
            </div>
            <div class="form-floating mb-3">
              <input type="password" class="form-control" id="loginPassword" placeholder="Password" autocomplete="current-password" required>
              <label for="loginPassword">Password</label>
            </div>
            <div class="d-flex justify-content-between align-items-center mb-4">
              <div class="form-check mb-0">
                <input class="form-check-input" type="checkbox" id="loginRemember">
                <label class="form-check-label small" for="loginRemember">Remember me</label>
              </div>
              <a href="#" class="small fw-semibold link-underline-opacity-0">Forgot password?</a>
            </div>
            <button type="submit" class="btn btn-primary rounded-pill w-100">Sign in</button>
            <p class="small text-center text-success mt-3 mb-0 wdw-form-msg" role="status" hidden></p>
          </form>
        </div>

        <div class="col-md-6 wdw-aurora p-4 p-lg-5 wdw-dual-right">
          <span class="wdw-icon mb-4 wdw-icon-glass">
            <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.85" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="8" r="4"/><path d="M2 21a7 7 0 0 1 14 0M19 8v6M16 11h6"/></svg>
          </span>
          <h2 class="h3 fw-bold mb-1 text-white">Create an account</h2>
          <p class="text-white-50 mb-4">Free for 14 days. No credit card required.</p>
          <form class="wdw-dual-form" novalidate>
            <div class="form-floating mb-3">
              <input type="text" class="form-control" id="signName" placeholder="Full name" autocomplete="name" required>
              <label for="signName">Full name</label>
            </div>
            <div class="form-floating mb-3">
              <input type="email" class="form-control" id="signEmail" placeholder="[email protected]" autocomplete="email" required>
              <label for="signEmail">Email address</label>
            </div>
            <div class="form-floating mb-4">
              <input type="password" class="form-control" id="signPassword" placeholder="Password" autocomplete="new-password" minlength="8" required>
              <label for="signPassword">Password (8+ characters)</label>
            </div>
            <button type="submit" class="btn btn-light rounded-pill w-100">Create account</button>
            <p class="small text-center text-white mt-3 mb-0 wdw-form-msg" role="status" hidden></p>
          </form>
        </div>
      </div>
      <span class="wdw-or d-none d-md-flex" aria-hidden="true">or</span>
    </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.