Free tool

Newsletter signup form generator

Create an email newsletter signup form that works on any static site, with an optional GDPR consent checkbox and built-in spam protection. Copy the code and paste it in.

Fields

Submission

Where submissions go. Paste your form ID to make the code real — or keep the placeholder while you experiment.

On submit

Spam & privacy

Design

Styling

Adds Tailwind utility classes. Your project needs Tailwind installed.

Live preview

One field, and the law around it

A newsletter form is trivial to build and easy to get legally wrong. You are not collecting an address, you are collecting permission to email someone later, and permission has rules that a contact form never has to think about.

Email
The whole form. Every additional field measurably reduces signups, and this is the one case where you can genuinely ask for nothing else.
Name — only if you will use it
Worth it if you actually personalise. An unused name field costs you signups in exchange for nothing.
Consent checkbox
Unticked, with a link to what they are agreeing to. The generator can add one with the privacy URL filled in.

The mistake to avoid: A pre-ticked consent box

Under GDPR consent has to be a positive action, so a box that is already ticked is not consent at all. It also builds a list of people who never wanted it, which shows up later as spam complaints and a damaged sending reputation. The legal problem and the deliverability problem have the same fix.

Send a confirmation email before the first newsletter. Double opt-in costs you some signups and buys you a list that actually opens, which is the trade every deliverability guide recommends and most people skip.

How it works

  1. Choose a template and fields. Pick a template, then add, remove, or reorder fields and mark the required ones. Add step breaks to turn a long form into a multi-step form.
  2. Style it. Pick CSS, Tailwind, or unstyled output and tune the theme: accent color, light or dark, rounded corners.
  3. Copy your framework's code. Switch to HTML, React, Vue, Svelte, Astro, or a fetch() version and copy, download, or open it in CodePen.
  4. Connect an endpoint. Create a free ShipMyForm form to get a real endpoint, then drop your form ID in so submissions actually arrive.

Want the background? Read what a form backend is and how to stop form spam without reCAPTCHA. Want the submissions in your inbox? See how to send an HTML form to email. Already have a Google Form? Convert it to HTML. Got a form that submits but delivers nothing? Check its HTML.

Frequently asked questions

Do I need a consent checkbox on a newsletter form?
In the EU and UK you need consent that is a positive action, and a checkbox the visitor ticks themselves is the clearest way to show it. It must not be pre-ticked, and the text should say what they will receive. The generator can add one with a link to your privacy policy.
Should I use double opt-in?
Yes, for almost everyone. Sending a confirmation email before the first newsletter costs you some signups and removes the typos, the fake addresses and the people who never meant to subscribe. Those are exactly the addresses that generate spam complaints, and complaints are what damage your ability to reach the rest of the list.
Should a newsletter form ask for a first name?
Only if you will use it. Every field you add measurably lowers the signup rate, so a name field has to pay for itself in personalisation you actually send. If your emails open with “Hi there”, do not ask.
Can this connect to Mailchimp or ConvertKit?
Yes. The generated form posts to your endpoint, and a connector forwards each submission on to Mailchimp, Klaviyo, ConvertKit, MailerLite and others, so the subscriber lands in your email tool while the submission is also stored and filtered.