Free Custom Forms Builder
Build beautiful forms visually. Add fields, customize them, and send submissions straight to your Google Sheet or custom endpoint & no backend code required.
Add Field
Fields (3)
Full Name*
text · name="full_name"
Email*
email · name="email"
Message*
textarea · name="message"
Live Preview
Export Code
<form action="YOUR_APPS_SCRIPT_WEB_APP_URL" method="POST" class="custom-form" data-cf-success="Thanks! Your submission has been received.">
<h2 class="form-title">Contact Us</h2>
<p class="form-description">We'd love to hear from you. Fill in the form below.</p>
<div class="form-group">
<label for="field_boz5t6ui" class="form-label">Full Name <span class="form-required">*</span></label>
<input type="text" id="field_boz5t6ui" name="full_name" placeholder="Jane Doe" required />
</div>
<div class="form-group">
<label for="field_qqy6rr6n" class="form-label">Email <span class="form-required">*</span></label>
<input type="email" id="field_qqy6rr6n" name="email" placeholder="jane@example.com" required />
</div>
<div class="form-group">
<label for="field_cxt86ii5" class="form-label">Message <span class="form-required">*</span></label>
<textarea id="field_cxt86ii5" name="message" rows="4" placeholder="Write your message..." required></textarea>
</div>
<button type="submit" class="form-submit">Submit</button>
<div class="form-message" aria-live="polite"></div>
</form>
<script>
(function() {
document.querySelectorAll('.custom-form').forEach(function(form) {
form.addEventListener('submit', function(e) {
e.preventDefault();
var btn = form.querySelector('.form-submit');
var msg = form.querySelector('.form-message');
var originalText = btn ? btn.textContent : '';
if (btn) { btn.disabled = true; btn.textContent = 'Sending…'; }
if (msg) { msg.className = 'form-message'; msg.textContent = ''; }
var formData = new FormData(form);
fetch(form.action, { method: 'POST', body: formData, mode: 'no-cors' })
.then(function() {
if (msg) {
msg.className = 'form-message success';
msg.textContent = form.dataset.cfSuccess || 'Thanks! Your submission has been received.';
}
form.reset();
document.querySelectorAll('.form-rating .form-star').forEach(function(s) { s.classList.remove('active'); });
document.querySelectorAll('.form-signature canvas').forEach(function(c) {
var x = c.getContext('2d'); x && x.clearRect(0, 0, c.width, c.height);
});
})
.catch(function() {
if (msg) {
msg.className = 'form-message error';
msg.textContent = 'Something went wrong. Please try again.';
}
})
.finally(function() {
if (btn) { btn.disabled = false; btn.textContent = originalText; }
});
});
});
})();
</script>What is a Form Builder?
A form builder is a tool that lets you create web forms visually, adding fields like text inputs, dropdowns, checkboxes, and file uploads without writing HTML from scratch. With ContentAnchor's free form builder, you design your form with a live preview, connect it to your Google Sheet in a couple of clicks, and export clean, ready-to-use code.
How to use the Form Builder?
- Add Fields: click any field type from the top panel to add it to your form.
- Customize: click a field to edit its label, placeholder, validation, and options.
- Choose where submissions go: Google Sheets (recommended), a custom endpoint, or upgrade to Premium for built-in storage.
- Preview: see exactly how your form will look in the live preview.
- Export: copy the code as plain HTML, a standalone styled page, or a React component.
Frequently Asked Questions (FAQs)
Is this form builder really free?
Yes. You can build and export unlimited forms without creating an account. Everything runs in your browser.
How do submissions reach my Google Sheet?
You create a blank Google Sheet, paste our Apps Script into Extensions > Apps Script, deploy it as a Web App, and paste the resulting URL into the form builder. Every submission then lands as a new row in your sheet with a timestamp and all field values. The full step-by-step guide is right inside the Submissions panel.
I'm not technical, is there an easier way?
Yes. Our Premium Form Builder stores submissions for you in a clean dashboard with search, filters, CSV export, email alerts, and analytics, no Apps Script, no Google Sheet setup. You just publish the form and submissions show up.
Can I use a custom backend endpoint instead?
Absolutely. Select "Custom Endpoint" in the Submissions panel and paste your API URL. The form posts submissions as multipart form data, so it works with Node, PHP, Rails, Python, Formspree, Getform, Web3Forms, Netlify Forms and more.
Can I add custom validation?
Yes. Most fields support minimum/maximum length, min/max values, and required flags. For more advanced validation, edit the exported code directly.
Does the exported code work on any website?
Yes. The HTML export works on any website. The standalone export is a complete HTML page you can host anywhere. The React export works in any React project.
Can I style the form to match my website?
Yes. Every field has CSS classes like form-group, form-label, form-submit so you can override styles with your own CSS.
Related Tools
Explore more tools to build faster: