Developer Toolkit

Login Form Generator

Generates ready-to-use HTML and JS code for a login form with email/password fields, basic client-side validation, and a show/hide password toggle.

Controls

Form title

Email field label

Password field label

Button text

Minimum password length

Live preview

Sign in

Email address

Password

Submit to test the generated validation rules.

Generated HTML + JS

<!-- Login form -->
<form id="login-form" novalidate>
  <h2>Sign in</h2>

  <label for="login-email">Email address</label>
  <input id="login-email" name="email" type="email" autocomplete="email" required />

  <label for="login-password">Password</label>
  <div class="password-row">
    <input id="login-password" name="password" type="password" autocomplete="current-password" required />
    <button type="button" id="toggle-password" aria-label="Show password">Show</button>
  </div>

  <label class="remember">
    <input id="login-remember" name="remember" type="checkbox" /> Remember me
  </label>

  <p id="login-error" role="alert" hidden></p>
  <button type="submit">Log in</button>
</form>

<script>
  (function () {
    var form = document.getElementById("login-form");
    var email = document.getElementById("login-email");
    var password = document.getElementById("login-password");
    var error = document.getElementById("login-error");
    var toggle = document.getElementById("toggle-password");

    toggle.addEventListener("click", function () {
      var hidden = password.type === "password";
      password.type = hidden ? "text" : "password";
      toggle.textContent = hidden ? "Hide" : "Show";
      toggle.setAttribute("aria-label", hidden ? "Hide password" : "Show password");
    });

    function showError(message) {
      error.textContent = message;
      error.hidden = !message;
    }

    form.addEventListener("submit", function (event) {
      event.preventDefault();
      var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;

      if (!email.value.trim()) return showError("Email address is required.");
      if (!emailPattern.test(email.value.trim())) return showError("Enter a valid email address.");
      if (!password.value) return showError("Password is required.");
      if (password.value.length < 8) {
        return showError("Password must be at least 8 characters.");
      }

      showError("");
      // Replace with your own submit logic (fetch, redirect, etc.)
      console.log("Login submitted", {
        email: email.value.trim(),
        password: password.value,
        remember: document.getElementById("login-remember").checked
      });
    });
  })();
</script>