Developed By Ken Key

HTML Techniques That Still Matter in 2026 (and What to Stop Doing)

By Ken Key Sep 4, 2025 5 min read Updated Oct 16, 2026

HTML Techniques That Still Matter in 2026 (and What to Stop Doing)
The short answer

In 2026 the HTML that still matters is semantic and native: button, dialog, details, search, picture with srcset. Stop using divs with click handlers, JS modal libraries, and ARIA where a real element already exists. Browsers handle focus, keyboard, and accessibility for free if you let them.

Part of the complete web development guide.

On this page

Most HTML advice online is either a beginner tutorial from 2014 or an SEO listicle that tells you to “use header tags.” Neither helps when you’re actually shipping pages. So here’s what I actually reach for in 2026, and the stuff I’ve stopped doing after too many years of maintaining sites I built a decade ago.

I’ve been writing HTML since tables were a layout tool, and I’ve cleaned up more legacy markup than I’d like to admit. The techniques that survived are the boring ones: semantic structure, native browser features, and not fighting the platform.

Semantic HTML is still the highest-use thing you can do

The browser gives you a lot for free if you use the right element. Screen readers, search crawlers, browser autofill, reader modes, and OS-level features all key off semantics. A <div> with a click handler gets none of that.

The elements people still underuse:

  • <button> instead of a styled <div>. You get keyboard focus, Enter and Space activation, and disabled state handling without writing a line of JavaScript.
  • <dialog> for modals. It has native focus trapping, a backdrop, and an ::backdrop pseudo-element. Most modal libraries are now solving a problem the browser already solved.
  • <details> and <summary> for accordions. No JS, no ARIA, works with keyboard and screen readers out of the box.
  • <search> for search forms. It’s a real element now, and it maps to a landmark role.
  • <picture> and srcset for responsive images. Still the correct answer, still ignored by half the sites I audit.

Here’s a modal that used to take a library and a dozen ARIA attributes:

<dialog id="contact">
 <form method="dialog">
 <h2>Get in touch</h2>
 <label>
 Email
 <input type="email" name="email" required>
 </label>
 <button value="cancel">Cancel</button>
 <button value="send">Send</button>
 </form>
</dialog>

<button commandfor="contact" command="show-modal">Contact me</button>

That commandfor and command pair is the newer declarative replacement for showModal() calls. Support is solid in current Chrome, Edge, and Safari, and Firefox has caught up. If you need to support older browsers, keep the one-line dialog.showModal() call and move on.

The attributes I use constantly

A few native attributes replace whole categories of JavaScript:

  • loading="lazy" on images and iframes below the fold. One attribute, real performance win.
  • fetchpriority="high" on your LCP image. This is the single most useful performance hint for most pages.
  • decoding="async" on images that aren’t the LCP element, so they don’t block the main thread.
  • inputmode on form fields. inputmode="numeric" gets you a number pad on mobile without the validation headaches of type="number".
  • autocomplete with real tokens like email, street-address, one-time-code. Autofill completion rates jump when you use the correct tokens instead of guessing.
  • popover for tooltips, menus, and light dismiss surfaces. It handles the top-layer stacking and outside-click behavior for you.

Popover in particular has quietly replaced a lot of dropdown code:

<button popovertarget="menu">Menu</button>

<div id="menu" popover>
 <a href="/work">Work</a>
 <a href="/writing">Writing</a>
 <a href="/contact">Contact</a>
</div>

No positioning library, no click-outside listener, no z-index war. If you’re still shipping a 40KB dropdown package, this is worth a look.

What I’ve stopped doing

Some of this was standard advice. It isn’t anymore.

  • No more <div> soup with ARIA bolted on. If you’re writing role="button" and tabindex="0" and a keydown handler, just use a button. ARIA is a patch for missing semantics, not a substitute for them.
  • No more lazy-loading the LCP image. That’s a self-inflicted performance wound. Hero images should load eagerly with high fetch priority.
  • No more viewport-width font scaling hacks. Fluid type via clamp() in CSS handles this properly now.
  • No more table layouts. Obviously. But also worth flagging: CSS grid and flexbox handle everything tables were abused for, and they do it without the accessibility mess.
  • No more skipping the document outline. One <h1> per page, headings in order. It’s cheap and it still matters for both search and assistive tech.

Where HTML meets the rest of the stack

Good markup is the foundation, but it doesn’t ship a site on its own. Performance, accessibility, and search visibility all depend on how the HTML is generated, served, and cached. On client projects I usually pair clean semantic markup with a build step that handles image optimization and critical CSS, because doing that by hand across a large site is a losing battle. If you want a sense of how I approach that end to end, this is the kind of custom web development work I do for businesses around Long Island and well beyond it.

The through-line is simple: lean on the platform. Every native feature you use is code you don’t have to write, test, and maintain. Browsers caught up to a lot of what we used to patch with libraries, and the sites that age well are the ones that noticed.

FAQ

Do I need a framework to write good HTML in 2026?

No. Frameworks help with state and component reuse, but the HTML they output is still your responsibility. Plenty of sites would be faster and easier to maintain as plain HTML with a bit of JavaScript where it’s actually needed.

Is semantic HTML still worth it for SEO?

Yes, but not because of a magic ranking boost. It matters because it makes your content machine-readable, improves accessibility (which is a real ranking and legal factor), and gives crawlers a clear structure. It also makes your own code easier to work with later.

What’s the one HTML change with the biggest impact?

If your site is slow, fix your LCP image first: load it eagerly, set fetchpriority="high", and serve it in a modern format like AVIF or WebP at the right size. That single fix moves Core Web Vitals more than most redesigns.

Have a project like this?

I do custom web development for Long Island businesses. If you need this done right, let’s talk.