The enctype attribute explained.
The enctype attribute tells the browser how to encode a form's data when it POSTs, choosing between application/x-www-form-urlencoded (the default text format), multipart/form-data (for files), or text/plain.
How the form enctype attribute works
When a form submits by POST, the browser has to turn its fields into bytes for the request body, and enctype is the attribute that picks which format it uses.
There are three values. application/x-www-form-urlencoded is the default, packing every field into one text string of name=value pairs with special characters percent-escaped, which is compact and right for ordinary text forms. multipart/form-data splits the fields into separate labeled parts and is the only value that can carry uploaded files. text/plain sends the fields as unescaped lines and is rarely used outside debugging. Whichever you choose, the browser sets a matching Content-Type header so the server knows how to parse what arrives. The attribute only applies to POST, since a GET form always appends its fields to the URL.
For a form backend, enctype is simply how your HTML declares the shape of the body it is about to send, and FormWire reads either common encoding, so a plain contact form and a form with a file attachment both parse correctly on arrival.
What enctype controls.
Picks the body format
It decides whether fields are packed as urlencoded text, split into multipart parts, or sent as plain lines when the form POSTs.
Files need multipart
A file input only sends its contents when enctype is multipart/form-data, so leaving it default silently drops the upload.
Sets the Content-Type
Your choice tells the browser which Content-Type header to send, so the receiving server parses the body the right way.
Related questions
application/x-www-form-urlencoded. If you set no enctype on a POST form, the browser uses it, flattening every field into one percent-escaped text string. It is the correct default for any form made only of text inputs, checkboxes and selects.
Change it to multipart/form-data when the form uploads a file, because that is the only encoding that carries file bytes. The text/plain value exists but is essentially never the right choice in production.
multipart/form-data, defined →No. enctype only affects POST submissions, because a GET form ignores it and appends the fields to the URL as a query string instead. If you need enctype to take effect, the form's method has to be POST.
The most common failure is a file that never arrives, because the form was left on the default text encoding. The visitor sees a normal submission, but the server receives the filename as text with no bytes behind it, so uploads silently go missing.
Want to see it working?
Read the docsEncode your form the right way.
Free tier forever. No credit card required.