Dev · Client-side only
Waitlist form snippet
Ship a validated waitlist form in under a minute. Framework-free HTML + CSS. Point it at Formspree, Getform, Basin, or ConvertKit.
Join the waitlist
Be first when we launch. No spam, one email at launch.
HTML snippet
<!-- Waitlist snippet · generated with Build on Vibe · buildonvibe.site/tools/free/waitlist-snippet -->
<form class="wl" action="https://formspree.io/f/your-id" method="POST">
<h2 class="wl__title">Join the waitlist</h2>
<p class="wl__sub">Be first when we launch. No spam, one email at launch.</p>
<div class="wl__row">
<input class="wl__input" type="email" name="email" required placeholder="you@work.com" />
<button class="wl__btn" type="submit">Get early access</button>
</div>
<p class="wl__fine">We'll only email you at launch. No newsletters.</p>
</form>
<style>
.wl{max-width:520px;margin:2rem auto;padding:2rem;border:1px solid #e5e7eb;border-radius:20px;background:#fff;font-family:system-ui,sans-serif;text-align:center}
.wl__title{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}
.wl__sub{color:#6b7280;margin:0 0 1.25rem}
.wl__row{display:flex;gap:.5rem;flex-wrap:wrap}
.wl__input{flex:1;min-width:200px;padding:.75rem 1rem;border:1px solid #e5e7eb;border-radius:10px;font-size:1rem}
.wl__input:focus{outline:none;border-color:#f97316;box-shadow:0 0 0 3px rgba(249,115,22,.15)}
.wl__btn{background:#f97316;color:#fff;border:0;border-radius:10px;padding:.75rem 1.25rem;font-weight:600;cursor:pointer}
.wl__btn:hover{background:#ea580c}
.wl__fine{color:#9ca3af;font-size:.75rem;margin:.75rem 0 0}
</style>