Choose a link or button by what it does
By Gyata Tabiri · Revised October 30, 2026
I pay attention to the promise in a control’s label. The HTML and the behavior should fulfill that promise, whether someone is going to another page, opening a panel, or submitting information.
Use links for destinations
A link with an href takes someone to a page, file, or other destination. Its text should make that destination understandable. Browser features such as opening a new tab or copying the address are part of what the person may expect from it.
Use buttons for actions
A button can submit a form or change an interface state. Set its type deliberately inside a form: a button without an explicit type can submit when that was not the intention. A menu toggle or other control also needs to expose its changing state where appropriate.
Keep the label tied to the result
“Send My Message” should submit a message, not open an unexpected draft. “View the Case Study” should navigate to that study. Wording is part of the implementation because it sets the expectation against which the behavior is judged.
Review with the keyboard
Check that focus is visible and that the control works as expected. Native elements reduce the amount of behavior the developer has to recreate, but the complete flow still needs testing. Include disabled, expanded, loading, and error states when they exist.
This is a small implementation decision with a visible consequence: people can predict what the control will do. It also gives reviewers a simple way to compare the wording with the actual flow.
Contact form · Discuss a role or project
Reference: HTML button element.