Back to compare picker

Drag-and-drop upload vs File upload vs Multi-step form vs Text input

Use drag-and-drop upload when desktop users benefit from dropping one or more files into a visible target; use ordinary file upload for the reliable baseline, multi-step form for journey structure, and text input when a typed value is enough.

Learn the decision

Match the interaction to the person's task

Use drag-and-drop upload when desktop users benefit from dropping one or more files into a visible target; use ordinary file upload for the reliable baseline, multi-step form for journey structure, and text input when a typed value is enough.

Drag-and-drop upload

Use it when: Users often upload files from a desktop file manager and benefit from dropping one or more files into a visible target.

Make this state clear: Idle drop zone with visible label, requirements, and choose-file fallback.

Observe the result: A user drags two PDFs over the zone, sees the target activate, drops them, reviews both filenames, removes the wrong one, uploads the remaining file, and then continues.

Study the full pattern →

File upload

Use it when: The service needs a document, image, scan, spreadsheet, media file, or other original file.

Make this state clear: Empty labelled state with requirements hint and choose-file action.

Observe the result: A user selects bank-statement.pdf, sees it queued, watches progress reach uploaded, removes it to choose another file, then submits after reviewing the rest of the form.

Study the full pattern →

Multi-step form

Use it when: A transaction spans several ordered pages or sections.

Make this state clear: Current step state with heading, saved context, local answer controls, Back, and Continue.

Observe the result: A user completes eligibility and contact details, goes Back from documents, sees contact details still filled, continues, and returns to the same documents step.

Study the full pattern →

Text input

Use it when: The answer is short and user-authored.

Make this state clear: Empty untouched state with persistent label and optional hint.

Observe the result: A user leaves the required field blank, sees an error only after submit, returns to the same field, and their later typed value clears the error.

Study the full pattern →

Practice the judgment: Imagine this situation: Dropping a file outside the target opens the file in the browser and destroys unsaved form progress. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Drag-and-drop uploadFile uploadMulti-step formText input
UI or UX UI + UX - Drop-zone file upload enhancement with file input fallbackUI + UX - File selection and attachment controlUI + UX - Multi-page transaction with saved step stateUI + UX - Single-line freeform data-entry control
UI guidance Render a large labelled drop zone with clear copy that says users can drag files there or activate a normal file picker, plus visible format, size, and count requirements.Render a visible label, persistent hint, native file chooser or equivalent button, accepted file formats, maximum file size, selected filename, uploaded status, remove control, and field-specific error message.Render each step as a focused page with a clear heading, progress context when useful, Back and Continue controls, local validation, and a final review page before submission.Render a persistent label, appropriately sized single-line input, optional hint, visible focus state, and nearby error text that is programmatically associated with the field.
UX guidance Use drag-and-drop upload as an enhancement for users who can drag files from a file manager, while preserving an equivalent click, keyboard, and mobile path.Use file upload only when the service needs the original file and make expectations clear before the user opens the file picker.Use a multi-step form when a transaction is too long, conditional, high-stakes, or hard to recover from as one page, and users need manageable saved progress.Let users edit normally, validate after interaction or attempted submit, preserve their typed value after errors, and explain exactly how to fix invalid or missing text.
Good UI A drop zone says Drag bank statements here or choose files, shows PDF/PNG/JPG up to 10 MB, highlights when files hover over it, lists two dropped filenames, and keeps a Choose files button visible.An evidence upload field says Upload bank statement, hints PDF, PNG, or JPG up to 10 MB, shows statement.pdf selected, displays upload progress, and offers Remove.A benefit application has Eligibility, Contact details, Documents, Review, and Submit pages, with the current step named in the heading and completed steps shown from saved data.A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty.
Bad UI The whole page becomes a hidden drop target that opens the dropped file in the browser when users miss the box.A failed upload clears other form answers or returns users to the start of the journey.A five-screen flow shows all steps as complete after users only viewed them.The only instruction is placeholder text that disappears when the user starts typing.
Good UX A user drags two PDFs over the zone, sees the target activate, drops them, reviews both filenames, removes the wrong one, uploads the remaining file, and then continues.A user selects bank-statement.pdf, sees it queued, watches progress reach uploaded, removes it to choose another file, then submits after reviewing the rest of the form.A user completes eligibility and contact details, goes Back from documents, sees contact details still filled, continues, and returns to the same documents step.A user leaves the required field blank, sees an error only after submit, returns to the same field, and their later typed value clears the error.
Bad UX A user drags a file over the page, misses the small target, and the browser navigates to the file, wiping unsaved answers.A user selects a 28 MB scan, clicks Continue, and the page reloads with File failed but the selected filename and other answers are gone.A browser refresh on step 3 clears steps 1 and 2, forcing the user to start again.Validation fires on the first focus event and blocks typing before the user has had a chance to answer.
Best fit Users often upload files from a desktop file manager and benefit from dropping one or more files into a visible target.The service needs a document, image, scan, spreadsheet, media file, or other original file.A transaction spans several ordered pages or sections.The answer is short and user-authored.
Avoid when A normal file input is sufficient and the extra drop-zone states would add confusion.A typed answer, reference number, checkbox, or declaration would satisfy the task.The fields are short, related, and easier to scan together on one page.The answer is a paragraph, comment, address block, or explanation requiring multiple lines.
Required state Idle drop zone with visible label, requirements, and choose-file fallback.Empty labelled state with requirements hint and choose-file action.Current step state with heading, saved context, local answer controls, Back, and Continue.Empty untouched state with persistent label and optional hint.
Accessibility burden Keep a visible label and instructions that name both drag-and-drop and choose-file paths.Keep requirements in persistent hint text and associate them with the file input or upload button.Use a clear page heading on every step and keep it synchronized with route and progress context.Associate every text input with a visible label or equivalent accessible name that matches the visible question.
Common misuse Replacing the normal file chooser with a drop zone that only pointer users can operate.Asking for a file when a typed reference number or simple answer would be enough.Using a multi-step form to hide a short related form that users should review on one page.Using placeholder text as the only label or instruction.

Drag-and-drop upload

UI or UX
UI + UX - Drop-zone file upload enhancement with file input fallback
UI guidance
Render a large labelled drop zone with clear copy that says users can drag files there or activate a normal file picker, plus visible format, size, and count requirements.
UX guidance
Use drag-and-drop upload as an enhancement for users who can drag files from a file manager, while preserving an equivalent click, keyboard, and mobile path.
Good UI
A drop zone says Drag bank statements here or choose files, shows PDF/PNG/JPG up to 10 MB, highlights when files hover over it, lists two dropped filenames, and keeps a Choose files button visible.
Bad UI
The whole page becomes a hidden drop target that opens the dropped file in the browser when users miss the box.
Good UX
A user drags two PDFs over the zone, sees the target activate, drops them, reviews both filenames, removes the wrong one, uploads the remaining file, and then continues.
Bad UX
A user drags a file over the page, misses the small target, and the browser navigates to the file, wiping unsaved answers.
Best fit
Users often upload files from a desktop file manager and benefit from dropping one or more files into a visible target.
Avoid when
A normal file input is sufficient and the extra drop-zone states would add confusion.
Required state
Idle drop zone with visible label, requirements, and choose-file fallback.
Accessibility burden
Keep a visible label and instructions that name both drag-and-drop and choose-file paths.
Common misuse
Replacing the normal file chooser with a drop zone that only pointer users can operate.

File upload

UI or UX
UI + UX - File selection and attachment control
UI guidance
Render a visible label, persistent hint, native file chooser or equivalent button, accepted file formats, maximum file size, selected filename, uploaded status, remove control, and field-specific error message.
UX guidance
Use file upload only when the service needs the original file and make expectations clear before the user opens the file picker.
Good UI
An evidence upload field says Upload bank statement, hints PDF, PNG, or JPG up to 10 MB, shows statement.pdf selected, displays upload progress, and offers Remove.
Bad UI
A failed upload clears other form answers or returns users to the start of the journey.
Good UX
A user selects bank-statement.pdf, sees it queued, watches progress reach uploaded, removes it to choose another file, then submits after reviewing the rest of the form.
Bad UX
A user selects a 28 MB scan, clicks Continue, and the page reloads with File failed but the selected filename and other answers are gone.
Best fit
The service needs a document, image, scan, spreadsheet, media file, or other original file.
Avoid when
A typed answer, reference number, checkbox, or declaration would satisfy the task.
Required state
Empty labelled state with requirements hint and choose-file action.
Accessibility burden
Keep requirements in persistent hint text and associate them with the file input or upload button.
Common misuse
Asking for a file when a typed reference number or simple answer would be enough.

Multi-step form

UI or UX
UI + UX - Multi-page transaction with saved step state
UI guidance
Render each step as a focused page with a clear heading, progress context when useful, Back and Continue controls, local validation, and a final review page before submission.
UX guidance
Use a multi-step form when a transaction is too long, conditional, high-stakes, or hard to recover from as one page, and users need manageable saved progress.
Good UI
A benefit application has Eligibility, Contact details, Documents, Review, and Submit pages, with the current step named in the heading and completed steps shown from saved data.
Bad UI
A five-screen flow shows all steps as complete after users only viewed them.
Good UX
A user completes eligibility and contact details, goes Back from documents, sees contact details still filled, continues, and returns to the same documents step.
Bad UX
A browser refresh on step 3 clears steps 1 and 2, forcing the user to start again.
Best fit
A transaction spans several ordered pages or sections.
Avoid when
The fields are short, related, and easier to scan together on one page.
Required state
Current step state with heading, saved context, local answer controls, Back, and Continue.
Accessibility burden
Use a clear page heading on every step and keep it synchronized with route and progress context.
Common misuse
Using a multi-step form to hide a short related form that users should review on one page.

Text input

UI or UX
UI + UX - Single-line freeform data-entry control
UI guidance
Render a persistent label, appropriately sized single-line input, optional hint, visible focus state, and nearby error text that is programmatically associated with the field.
UX guidance
Let users edit normally, validate after interaction or attempted submit, preserve their typed value after errors, and explain exactly how to fix invalid or missing text.
Good UI
A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty.
Bad UI
The only instruction is placeholder text that disappears when the user starts typing.
Good UX
A user leaves the required field blank, sees an error only after submit, returns to the same field, and their later typed value clears the error.
Bad UX
Validation fires on the first focus event and blocks typing before the user has had a chance to answer.
Best fit
The answer is short and user-authored.
Avoid when
The answer is a paragraph, comment, address block, or explanation requiring multiple lines.
Required state
Empty untouched state with persistent label and optional hint.
Accessibility burden
Associate every text input with a visible label or equivalent accessible name that matches the visible question.
Common misuse
Using placeholder text as the only label or instruction.
Decision rules
  • Prefer drag-and-drop upload when users commonly have files open in a desktop file manager and need a large visible target that accepts one or more files.
  • Prefer ordinary file upload when the task mainly needs a dependable choose-file path, mobile support, keyboard access, and selected filename feedback.
  • Prefer multi-step form when upload is one checkpoint in a longer eligibility, identity, evidence, review, or submit journey with saved step progress.
  • Prefer text input when the service only needs a reference number, explanation, or value from the document instead of the file itself.
  • Use drag-and-drop only as an enhancement when the same drop zone also exposes a button, link, or native file input for keyboard, mobile, and assistive technology users.
  • Show drag-enter, valid drag-over, invalid drag-over, drag-leave, drop accepted, drop rejected, upload progress, remove, and retry states around the drop zone.
  • Prevent the browser from navigating to or previewing a dropped file outside the intended drop target while still allowing non-file links and text to behave normally.
  • Reject non-file drags and unsupported file types with messages that keep the drop zone available and name the allowed formats.
  • Allow users to cancel a drag by leaving the target or dropping outside it, and provide remove or undo after a mistaken drop.
  • Reserve bulk import for structured files that need column mapping, row validation, partial success, and import reports rather than a general drop-zone attachment.
Inspect live examples
Failure modes
  • A page shows a decorative dashed box but gives no keyboard or click fallback, so mobile and assistive technology users cannot upload.
  • Dropping a file outside the target opens the file in the browser and destroys unsaved form progress.
  • The drop zone accepts links, folders, or unsupported formats and then reports only a vague upload failed message.
  • The drag-over state never changes, so users cannot tell whether the current target will accept the file.
  • A mistaken drop immediately submits the form without review, remove, undo, or confirmation.
  • A spreadsheet import is represented as a drop zone but gives no mapping, row-level errors, or import result report.

Saved items