PortForm
All templates

JavaScript file upload form

The same Pro-tier upload with the parts a file input does not give you: a drop zone, a client-side size check before anything leaves the machine, and real progress. It uses XMLHttpRequest rather than fetch for one reason: fetch still cannot report upload progress.

HTML · CSS · JavaScript · Attachments need a Pro plan

Replace YOUR_ACCESS_KEY with the access key from your dashboard. Create one free. The endpoint and the honeypot are already in place.

Useful for

The part behind every one of these is a form backend. This template posts to a PortForm form endpoint; the docs cover the fields and responses.

Your form works in about a minute.

We use optional analytics cookies to understand how the site is used. Necessary cookies for signing in and checkout always load. See our privacy policy.