New Feb 22, 2026

The problem with HTML reset buttons

More Front-end Bloggers All from Adam Silver View The problem with HTML reset buttons on adamsilver.io

Last week I read a post by designer and frontend dev, Theodore Soti:

Stop clearing forms with JavaScript.
The browser already knows how.

I still see a lot of apps using custom code to track inputs and reset state.

But for many forms, you can just use the native reset button.

<form>
 <!-- ...Your input list... -->
 <input type="submit" value="Submit">
 <input type="reset" value="Reset">
</form>

That reset button restores every field to its initial value.
Text inputs. Checkboxes. Radios. Selects. Textareas.

No event listeners.
No state management.
No missed fields and strange edge cases.

It’s native.
It’s instant.

And it works everywhere.

I love the spirit of this.

Theodore is calling out that many UX solutions are over-engineered.

Custom code is often used where native would be better.

More complexity = more cost.

But as much as I’m a fan of using what browsers give you for free, the truth is:

Native HTML elements don’t guarantee good UX.

Reset buttons are a great example because:

  1. Most users never need to reset a form. If they make mistakes, they fix them and move on. I’ve watched 100s of users fill out different forms and not once have they needed a reset button.
  2. If you include a reset button, some users will click it by mistake. It happens more than you’d think. And when it does, everything they just filled out is gone.
  3. The more buttons a form has, the more users have to think about which one to press.

Making users think = bad UX.

“But what if users need to clear filters?”

This is a good use case for a reset button.

But type=reset won’t work:

When a user submits a form, the form resets to its default state as it was when the page loaded. That means it will reset to the same filters the user already chose - not an empty form.

In short:

So if you need a way for users to clear filters, give them a submit button that will hit the server and do just that.

I used to work as a frontend engineer.

I hated when designers ignored solid native features for something custom (usually to make things look good).

It was often more work and worse UX.

So I get Theodore’s point.

And it’s one I still share.

With reset buttons, the solution is just:

Don’t use one.

But most other problematic native elements can’t just be thrown away — the functionality is still needed, it just needs to be built better.

If you want to know which native elements you can’t just throw away — and how to replace them with something better, you might like my course, Form Design Mastery:

https://formdesignmastery.com

Scroll to top