Tech is political: The people under attack in Palestine 🇵🇸, Iran 🇮🇷, and Lebanon 🇱🇧 are people like us. They’re our brothers and sisters, too. Read up on their history, scrutinize what you’re told, and demand respect and accountability. Hide

Frontend Dogma

“html” News Archive

Definition, related topics, tag feed

Definition · Supertopics: standards, markup-languages · Subtopics: attributes, canvas, character-references, dhtml, disclosure-widgets, doctypes, dom, forms, frameworks, frames, hacks, headings, html-minifier, htmlnano, iframes, image-maps, lists, mathml, metadata, microdata, minify-html, minimize, nesting, presentational-html, ruby-markup, semantics, skip-links, source-order, svg, tables, web-components, web-forms, xhtml (non-exhaustive) · “html” × ? · “html” RSS feed (per email)

Entry (Sources) and Additional TopicsDate#
My Interop 2027 Rankings (mey)2410
web-platform, interoperability, javascript, css
The Web Needs Interactive Lists (cod)2409
lists, semantics, accessibility, aria
Accepting AI-Generated Front-End Code: What Review Is for Now2408
ai, code-reviews, components, wcag, accessibility, compliance, automation
State of HTML 2026 (dev)2407
surveys
Tales from the 90s: On XML’s Great Future, the Mobile Web on a 4×20-Character Screen, and Accessibility as the Original Responsive Design (fro)2406
history, standards, xml, sgml, xhtml, hdml, responsive-design, graceful-degradation, mobile, accessibility, user-experience
Lazy Loading Images and Media: How Far Ahead Browsers Fetch (ben/cal)2405
lazy-loading, images, multimedia, debugging, performance
Why I Built a Website Clone Using HTML and CSS2404
css, learning
What Is Palpable Content? (rus)2403
terminology, accessibility
Periodic Table of HTML Elements (aba)2402
overviews
What Are Form Controls? (rus)2401
forms, terminology, examples
Custom Attributes Polyfill (kei)2400
polyfills
19½ Things You Didn’t Know About Accessibility in HTML and CSS (mat)2399
slides, accessibility, css
It’s All About the Permissions Recovery (chr/fro)2398
browsers, permissions, support, geolocation
2026: 2 of the Global Top 200 Websites Use Valid HTML (j9t)2397
conformance, metrics, quality, craft
My HTML Boilerplate (val)2396
templates
Antiquated HTML Snippets and Artefacts (val)2395
metadata, geolocation, conditional-comments, internet-explorer, browsers, amp, twitter+x
Support for “headers” Attribute (aar)2394
tables, attributes, accessibility, support, screen-readers, nvda, firefox, jaws, chrome, edge, voiceover, safari, talkback
You Don’t Need “initial-scale” in Your HTML (val)2393
metadata
New Things You Should Know About HTML Here in Mid 2026 (chr/fro)2392
web-components, canvas
“initial-scale” No Longer Needed2391
metadata
What’s !important #18: “<geolocation>”, Syntax ::highlight()ing, “named-feature()”, and More (css)2390
css, retrospectives, web-platform, link-lists
What Is the Best Web Page Minifier in 2026? (apo)2389
minification, tooling, html-minifier, htmlnano, minify-html, minimize, swc, metrics, comparisons
The 4 Hs of HTML (alv)2388
semantics
Enhanced Spell Checking on the Web (bka)2387
apis, javascript
My HTML Boilerplate in 2026 (mat)2386
templates
Exploring Compose HTML for Server Side Rendering (jet)2385
server-side-rendering
Delayed-Then-Instant Tooltips With HTML and CSS Alone (chr/fro)2384
tooltips, css
Understanding “aria-details” (rus)2383
attributes, aria, accessibility
Understanding “aria-roledescription” (rus)2382
attributes, aria, accessibility
HTML Over WebSockets: Real-Time SPAs With Barely Any JavaScript (and)2381
websockets, single-page-apps, link-lists
Building an Accordion the Browser Can Search2380
accordions, hiding, search, css, javascript
Why You Might Want to Build Your Web App in Canvas Instead of HTML2379
canvas, web-apps, comparisons
HTML Can Do That (chr)2378
examples
Using and Styling the Dialog Element (geo/css)2377
modals, css
Don’t Use a Class for That (alv)2376
attributes, selectors, css
CSS: The Bomb Inside Your Inbox (gaz/por)2375
css, csp, email, security
Something Nobody Told You About The Image Element (It Can Overflow) (css/fro)2374
images, overflow, css
A11y 101—3.3.4 Error Prevention (nat)2373
introductions, accessibility, wcag, errors, javascript
Fixing My Tooltip Accessibility Mistake (jaf)2372
accessibility, tooltips, aria, attributes, mistakes
The Difference Between a Button and a Link2371
buttons, links, comparisons
Robin Berjon—Fireside (rob+)2370
videos, interviews, w3c, web
Why I Built a Semantic HTML First Library (kar)2369
libraries, components, semantics
Use Cases for “aria-expanded” (stv/pic)2368
attributes, aria, accessibility, examples
Protecting HTML Content Against Copying (jsd)2367
css, javascript, canvas, obfuscation, techniques, comparisons
Recreating a 1990 Book Cover (in HTML and CSS) (blo)2366
css
HTML in Canvas: Render Real DOM Inside “<canvas>”2365
canvas, javascript
“focusgroup” Tests (aar)2364
attributes, focus, chrome, browsers, examples, accessibility
On the Semantic Web (kar)2363
semantics, buttons, forms
Clickable Table Rows Are a Bad Idea (tem)2362
tables, accessibility, keyboard-navigation
Modes and Themes That Stick—Building a Persistent Toggle Solution (stu)2361
toggles, forms, dark-mode, theming, flash-of-x
React’s Architectural Accessibility Gaps2360
react, accessibility, wcag
What’s !important #14: Gap Decorations, “random()”, “<select>” Field Sizing, and More (dxn/css)2359
css, retrospectives, web-platform, link-lists
Introducing the “<usermedia>” HTML Element2358
introductions, chrome, browsers
Building an Accessible Modal Dialog on the Native “<dialog>”2357
modals, accessibility, typescript
Animating the “dialog” Element Using View Transitions (rik)2356
modals, animations, view-transitions, javascript, css
I Stored a Website in a Favicon2355
favicons, images, experiments
The Siren Song of “ariaNotify()” (wil/css)2354
javascript, aria, notifications, attributes, jaws, nvda, voiceover, screen-readers, accessibility
The Golden Rule of Customizable “select” (sar/web)2353
forms, safari, browsers
Dark Mode With Web Standards (oll)2352
dark-mode, standards, javascript, svg, css
“headingoffset” Is Not the Document Outline Algorithm (aar)2351
attributes, headings
Semantica11y—Semantic HTML for Everyone (ste)2350
packages, semantics, accessibility
How Building an HTML-First Site Doubled Our Users Overnight (moh)2349
web-components, validation, traffic, case-studies
WWDC26: Rediscover the HTML “select” Element2348
videos, forms, css
WWDC26: Get Started With the HTML “model” Element2347
videos, introductions, animations
Streaming HTML (oll)2346
streaming, javascript
Another Stab at the Perfect CSS Pie Chart… Sans JavaScript (vil/css)2345
css
Astro: HTML First, JavaScript When You Need It (jad)2344
astro, javascript
Context-Aware Headings in HTML (mat)2343
headings, attributes
Gary Illyes: The Web’s JavaScript Mess Is an AI Agent Nightmare (ppc)2342
ai, ai-agents, javascript, rag, llmstxt
Re: Accessibility Question: Is Nesting Interactive Elements Bad? (aar)2341
accessibility, nesting
Accessible (I Think) Split-Cell Table Headers (mey)2340
css, tables
Managing Anchor Associations With Data Attributes and Advanced “attr()” (dxn/fro)2339
anchor-positioning, custom-data, css, functions, attributes
Lost, Forgotten, and Unfamiliar HTML (tho)2338
attributes
Not Every Form Field Needs to Be in a Fieldset (jea)2337
forms, design-systems, accessibility
What’s New in Web UI (una+)2336
videos, web-platform, user-experience, principles, canvas, css, google
Don’t Put “aria-label” on Generic Elements Like Divs (mat)2335
attributes, aria, screen-readers, support, accessibility
Accessible by Design: HTML, CSS, JavaScript, and ARIA Techniques That Scale2334
videos, accessibility, css, javascript, aria
Introducing the HTML-in-Canvas API Origin Trial (nma)2333
introductions, canvas, apis, origin-trials, chrome, browsers
Declarative Partial Updates (tun+)2332
streaming, apis, chrome, browsers
A Few Ways of Specifying Per-Theme Colours in Only CSS2331
css, dark-mode, colors, techniques
You Don’t Know HTML Lists2330
lists, semantics
hihtml (j9t)2329
packages, npm, conformance, links, link-rot, minification, html-minifier, optimization, quality
Install Web Apps With the New HTML “install” Element (pat)2328
web-apps, installing, origin-trials, chromium
Not All Hidden Content Is Equal: How Different Hiding Methods Impact Accessibility2327
accessibility, hiding, css, aria, attributes, techniques, comparisons
AI and HTML: Validating, Omitting Optional Code, and Minifying as Token Optimization (j9t)2326
ai, token-optimization, conformance, minimalism, minification, optimization
In-n-Out-Styling With Chris Coyier (chr/sma)2325
videos, css
The “<selectmenu>” Element: Stop Using JavaScript Dropdown Libraries2324
forms, javascript, css
Out With the JS, in With the HTML (jim)2323
javascript, refactoring
Using Claude Code: The Unreasonable Effectiveness of HTML2322
claude, ai, efficiency
HTML.md (j9t)2321
documentation, ai
What’s !important #10: HTML-in-Canvas, Hex Maps, E-Ink Optimization, and More (dxn/css)2320
css, retrospectives, web-platform, link-lists
ARIA Roles and Web Accessibility: A Quick Guide (lev)2319
guides, accessibility, aria, attributes
Hard to Read One-Liners (kri)2318
css, collaboration
The End of Responsive Images (wil/pic)2317
images, responsive-design
Visual Validation Feedback for Form Fields (aar)2316
forms, validation, javascript
The Web Is Fun Again: First Experiments With HTML in Canvas (ami/fro)2315
experiments, canvas, javascript
Multi-Level Navigation: The Challenge of Identifying Parent Sections for Screen Readers (ele)2314
navigation, aria, screen-readers, accessibility
A11y 101: 3.1.1 Language of Page (nat)2313
introductions, accessibility, wcag, localization
My Thoughts on the “focusgroup” Attribute Proposal (stv)2312
forms, focus, attributes
Video as Code: A Deep Dive Into HeyGen’s Hyperframes2311
deep-dives, multimedia, css, tooling
The Radio State Machine (ami/css)2310
css, state-management
The Community Has Spoken, Now We Need Browsers Vendors to Help: A “<rangegroup>” Update (uti)2309
community, browsers
Why AI Sucks at Front End (arg)2308
ai, css
How to Use Standard HTML Video and Audio Lazy-Loading on the Web Today (sco)2307
how-tos, multimedia, lazy-loading, performance
Old Advice: Hiding Content Has No Effect on Accessible Name or Description Calculation (ste)2306
accessibility, hiding, aria
Making Emojis and Icons Screen Reader Accessible (pop)2305
emoji, icons, images, accessibility, screen-readers
Semantic HTML Just Might Make Your CSS Less Fragile (sch)2304
css, semantics, resilience
There’s No Need to Include “Navigation” in Your Navigation Labels (tem)2303
accessibility, labels, navigation
Mike Smith Fireside (ste)2302
videos, interviews, standards, accessibility, community
Headings the Right Way: Site Building Tips for Accessible Page Content (dru)2301
videos, headings, accessibility
Bad Example: Timesheet Submit Button (rac)2300
buttons, accessibility
Tooltips That Work for Everyone (ele)2299
tooltips, accessibility, aria, attributes, screen-readers, nvda, jaws
Quick Tip: Don’t Use “<abbr>” (nat)2298
tips-and-tricks, screen-readers, support, accessibility
Astro: How to Set Up More Powerful HTML Minification (in 31 Seconds) (j9t)2297
how-tos, astro, html-minifier, minification, optimization
New Bookmarklet—Structure Revealer (llo)2296
bookmarklets, accessibility
Abusing Customizable Selects (pat/css)2295
forms, css, functions
The Enforced Accessibility of the “geolocation” Element (chr/fro)2294
geolocation, accessibility
Testing Browser Support for “focusgroup”2293
attributes, focus, javascript
html-minifier-terser vs. htmlnano vs. minify-html (2026)2292
minification, nodejs, html-minifier, htmlnano, minify-html, metrics, comparisons
The Different Ways to Select “<html>” in CSS (dxn/css)2291
css, selectors
You Don’t Know HTML Tables2290
tables, javascript
Request for Developer Feedback: “focusgroup” (jac)2289
attributes, focus, chromium, browsers
Your Skip Link Targets May Not Need “tabindex=-1” to Work Properly (mat)2288
skip-links, attributes, accessibility
1995: From Batman Forever’s Cinematic Design to HTML Tables (ric)2287
web, history, design, netscape, mosaic, browsers, tables, layout, wysiwyg, code-editors
Figcaptions Versus Alt Text (tem)2286
images, alt-text, accessibility, comparisons
You Can Use Newline Characters in URLs (lem)2285
urls, data-urls, links, attributes
“role=presentation” Is No Alternative for “aria-hidden=true” (mat)2284
accessibility, aria, attributes, comparisons
When Is a Link Not a Link? (dec)2283
links, semantics, accessibility
Matt May Speaks (mat+)2282
videos, interviews, accessibility, standards
“aria-haspopup” Might Not Do What You Think It Does (mat)2281
aria, attributes, navigation, accessibility
Standard HTML Video and Audio Lazy-Loading Is Coming (sco)2280
multimedia, lazy-loading, standards, performance
The Problem With HTML Reset Buttons (ada)2279
buttons, user-experience
Native HTML Components Don’t Guarantee Good UX (ada)2278
components, user-experience
Precompressed HTML at the Edge: Eleventy Meets Cloudflare Workers (the)2277
edge-computing, eleventy, cloudflare, caching, compression, brotli, performance
An Official* Logo for HTML (zac)2276
Everything You Never Wanted to Know About “visually-hidden” (dbu)2275
css, hiding, accessibility
Notes on Relying on the ARIA Authoring Practices Guide (ste)2274
aria, accessibility
Mastering Dialog Accessibility2273
accessibility, modals, aria
You Might Not Need “role="presentation"” (stv/pic)2272
aria, accessibility
Virtual Scrolling for Billions of Rows—Techniques From HighTable (sev)2271
tables, scrolling, performance, react
You Know What? Just Don’t Split Words Into Letters (aar)2270
accessibility, screen-readers, support
Trying to Make the Perfect Pie Chart in CSS (mon/css)2269
css
How to Improve Your HTML Game (j9t)2268
how-tos, conformance, learning, career
Introduction to the New HTML Element “<geolocation>” (mat)2267
introductions, geolocation
Accessible Inline Collapsible (eri)2266
accessibility, disclosure-widgets
Repeatable Form Fields Made Simple (aar)2265
forms, web-components
More Invoker Commands, and More Reasons Not to Use JavaScript Please (paw)2264
examples
SPAs Are a Performance Dead End (yeg)2263
single-page-apps, performance
Barriers From Links With ARIA (aar)2262
accessibility, links, aria
I Learned the First Rule of ARIA the Hard Way (css)2261
accessibility, aria, semantics
Faking a Fieldset-Legend (tyl/clo)2260
forms, css
SEO (htt)2259
web-almanac, studies, research, metrics, seo, robotstxt, llmstxt, links, content, structured-data, amp, internationalization
Accessible Faux-Nested Interactive Controls (eri/pic)2258
accessibility, conformance, nesting
The Incredible Overcomplexity of the Shadcn Radio Button (pau)2257
forms, shadcn, complexity
EPUB and HTML—Survey Results and Next Steps (rei/w3c)2256
surveys, epub
So You Think Your Website Is Doing Great (cit)2255
javascript, css, quality
ARIA Roles Can Remove Their Children’s Semantics (ste)2254
aria, semantics, accessibility
Introducing the “<geolocation>” HTML Element (tom+)2253
introductions, geolocation, chrome, browsers
A Polyfill for the HTML “switch” Element (tom)2252
forms, polyfills
What Is the Minimum Markup Needed to Create a Modal? (rus)2251
modals, minimalism, css, accessibility
Very Good Components (bee)2250
websites, components
How Browsers Work (dmy)2249
websites, guides, browsers, urls, http, tcp, dom
How Can You Tell What’s Allowed Inside Each HTML Element? (rus)2248
conformance
HTML Content Categories (rus)2247
semantics
The Final Nail in the HTML5 Document Outline Coffin (tem)2246
headings, accessibility
Opening and Closing Dialogs Without JavaScript Using HTML Invoker Commands (sch)2245
modals
Revisiting HTML Streaming for Modern Web Performance (per)2244
performance, streaming
The Three Semantics of HTML (mat)2243
semantics
For the Love of “<details>” (dev/mat)2242
disclosure-widgets
The HTML Elements Time Forgot (val/mat)2241
history
2026 Predictions: The Next Big Shifts in Web Accessibility (web)2240
accessibility, outlooks, ai, wcag
The Two Most Important Tools for HTML Developers2239
tooling, conformance, minification, html-minifier, htmlnano, swc
Why “role="button"” on a “<button>” Does Nothing (rus)2238
buttons, attributes, aria
Styling by Language: Using the “lang” Attribute for Multilingual Design (mat)2237
internationalization, css
Did You Know Some ARIA Roles Remove Child Semantics? (rus)2236
aria, semantics, accessibility
The Many Lives of the Page Title (kat/mat)2235
user-experience, accessibility, wcag
Semantics Beyond the Tag Name (kno/mat)2234
attributes, aria, semantics, accessibility
Targeting by Reference in the Shadow DOM (mey)2233
shadow-dom, javascript
The Anatomy of an Accessible Text Field (ink)2232
forms, accessibility, labels
Accessibility Is Personal (css)2231
accessibility
Forms Are a Badly Designed Part of HTML (jen/mat)2230
forms, standards
Don’t Leave the Screen Reader Hungry (ger/mat)2229
emoji, screen-readers, accessibility
How “aria-labelledby” Really Works (rus)2228
accessibility, aria, attributes
State of HTML 2025 [Results] (sac/dev)2227
surveys, metrics
Giving Pages a Clear Shape by Using Headings (mat)2226
headings
Does Chrome Get the “<header>” Element Wrong? (rus)2225
aria, chrome, browsers
I Ported JustHTML From Python to JavaScript With Codex CLI and GPT-5.2 in 4.5 Hours (sim)2224
migrating, ai, python, javascript, tooling, parsing
Them’s the Breaks (tyl/mat)2223
The “<time>” Element Should Actually Do Something (nol)2222
time, semantics
Hell Is Other People’s Markup (llo/mat)2221
auditing, tooling
Changes in the World of HTML Minifiers (apo)2220
tooling, minification, html-minifier
Why We Teach Our Students Progressive Enhancement (cyd)2219
progressive-enhancement, css, javascript, training
How HTML Changes in EPUB (rob/mat)2218
epub, standards
A11y Freedom Beaver (ste/mat)2217
accessibility, aria
Useful Patterns for Building HTML Tools (sim)2216
ai, tooling
Discover Dialog (sar/mat)2215
modals, javascript, css
That Time I Tried Explaining HTML and CSS to My 5-Year Old Niece (css)2214
css, learning
What’s Wrong With This HTML, and Is It Valid? (pat/mat)2213
standards, conformance, web-platform
Comparing HTML Minifiers (j9t)2212
minification, tooling, html-minifier, htmlnano, metrics, comparisons
Controlling Dialogs and Popovers With the Invoker Commands API (sta/mat)2211
modals, pop-overs, apis, attributes
Accessible by Design: The Role of the “lang” Attribute (col/mat)2210
accessibility, internationalization, attributes, metrics
NoLoJS: Reducing the JS Workload With HTML and CSS (aar/per)2209
disclosure-widgets, forms, modals, pop-overs, navigation, scrolling, positioning
IDREFs: What They Are and How to Use Them (kil/mat)2208
forms, aria, accessibility
Referencing HTML Elements Inside Shadow DOM (meh/mat)2207
shadow-dom, web-components
HTML Semantics: The Short Descriptions of All 113 Elements (j9t)2206
semantics, overviews
Using the Ancient Evils for Debugging (bol/mat)2205
debugging
Exploring Large HTML Documents on the Web (per)2204
performance, metrics
How Modern Browsers Work (add)2203
browsers, chromium, network, parsing, painting, rendering, javascript-engines, v8, memory, modules, javascript, css
Eleventy: How to Set Up Effective HTML Minification (in 24 Seconds) (j9t)2202
how-tos, eleventy, html-minifier, minification, optimization
What Are Invokers? Interactivity Without JavaScript (tol/syn)2201
videos, javascript, pop-overs
Testing Methods: Page Titled (dec)2200
accessibility, wcag, testing
A Complete Guide to the HTML Number Input (oll)2199
guides, attributes, forms
“::details-content”: Style Expandable Content Without Wrapper Divs (tre)2198
disclosure-widgets, css
Why Headings Are Important in HTML: Structure, Accessibility, and SEO2197
headings, accessibility, seo
Headings: Semantics, Fluidity, and Styling—Oh My! (geo/css)2196
headings, css
Link vs. Button: Choosing the Right Element for the Right Job (tpg)2195
links, buttons, accessibility, wcag, comparisons
Tailwind CSS Won the War… but We’re the Losers2194
tailwind, css, web-platform
Explaining the Accessible Benefits of Using Semantic HTML Elements (geo/css)2193
semantics, accessibility
Now Available: “On Web Development II”! (j9t)2192
books, css, engineering-management, maintainability, quality
Just Use a Button (cfe)2191
buttons, semantics
HTML Minifier: A 12-Year Journey Building and Maintaining an Open Source Tool2190
minification, tooling, windows, asp-net, retrospectives
Parenthetical Asidenotes (mey)2189
css
ChatGPT Sez Build With Semantics First (ste)2188
chatgpt, chatgpt-atlas, ai, browsers, semantics, accessibility
Don’t Forget These Tags to Make HTML Work Like You Expect (jim)2187
What’s an Interactive Element? (mat)2186
focus, concepts
Challenging the Idea of “Optional HTML” (mar)2185
guest-posts, minimalism
Links and Anchors: Ancient HTML and JS Magic in Your Browser (cod/wea)2184
css, javascript, links
What State ARIA In? (tpg)2183
aria, accessibility
Implicit Labels Aren’t (cfe)2182
forms, labels
Headers, Headings, and Titles (tem)2181
headings, comparisons, terminology
Page Headings Don’t Belong in the Header (tem)2180
headings, skip-links, accessibility
A Look Into Customizable HTML “select” Elements2179
forms, css
Tables: Beyond Rows and Columns (tpg)2178
accessibility, wcag, tables, semantics, jaws, nvda, screen-readers
HTML “dialog”: Getting Accessibility and UX Right (jar)2177
modals, scrolling, accessibility, user-experience
HTML—the Most Difficult Programming Language in the World (j9t)2176
programming, conformance, professionalism
Numbers That Fall (Scroll-Driven Animations and Sibling Index) (chr/fro)2175
css, animations, scrolling, effects
When to Use Modal vs. Dialog Components (a11)2174
modals, aria, accessibility
Lowriders and Websites (aaa)2173
css, craft
Rethinking Cookie Dialogs (nat)2172
accessibility, disclosure-widgets, cookies, consent-management
A Progressive Enhancement Challenge (chr/fro)2171
progressive-enhancement, javascript, feature-detection, support
How to Optimize Viewport for Mobile for Faster Interactions (deb)2170
how-tos, viewport, mobile, performance, optimization
Understanding the Removal of 4.1.1 Parsing in WCAG 2.2 (tpg)2169
accessibility, wcag, conformance
HTML’s Best Kept Secret: The “<output>” Tag (den)2168
Let’s Play Accordion With the HTML “details” Element (ale)2167
disclosure-widgets, accordions
Creating a Truly Accessible Flip Card (sib/tpg)2166
css, javascript, accessibility
Web Development for Beginners: Creating Web Pages via HTML (rau)2165
fundamentals, urls, servers, forms
The “picture” Element (kev)2164
A Quick Primer on Accessible Pagination (kar)2163
introductions, accessibility, pagination, css, assistive-tech
“aria-label” or “title”? Screen Reader Behaviour Explained (a11)2162
attributes, accessibility, screen-readers
Navigating the World of Web Accessibility With Sara Soueidan (sar+)2161
videos, interviews, accessibility, wcag, aria, css
2025: 0 of the Global Top 200 Websites Use Valid HTML (j9t)2160
conformance, metrics, quality, craft
Just Use HTML (cfe)2159
javascript
Baby Steps Accessibility—Page Titles (dec)2158
microcontent, best-practices, accessibility
Why Moving Away From SPAs Improves Usability, Accessibility, and SEO (inn)2157
single-page-apps, usability, accessibility, seo, semantics
Screen Reader HTML Support—Lookup (ste)2156
screen-readers, accessibility, support, overviews
Your Images Are (Probably) Oversized2155
images, pixel-density
Why Did I Ever Abandon HTML/CSS? (syl)2154
css
Tricks to Write HTML and CSS 10× Faster (jay)2153
css, efficiency, tips-and-tricks
You No Longer Need JavaScript (reb)2152
javascript, css, examples
Opening a “details” Element From the URL (chr/fro)2151
disclosure-widgets, urls
Hack to the Future—Frontend (the)2150
history, css, javascript, design, layout, flash, image-replacement, libraries, frameworks, hacks, xhtml, tooling, testing, outlooks
How to Create an Accessible Table With Clickable Rows (ale)2149
how-tos, tables, accessibility
Design Hacks From the Pre-CSS Era (den/hac)2148
tables, layout, hacks, history
A Proposal for Inline LLM Instructions in HTML Based on llms.txt (ind)2147
ai, llmstxt
The First Rule of ARIA (nat)2146
accessibility, aria, principles
Covering “hidden=until-found” (geo/css)2145
hiding
5 Heading Accessibility Issues to Avoid (pop)2144
accessibility, headings
A Progressive Complexity Manifesto (che)2143
manifestos, complexity, web-apps, htmx, javascript, web-components, frameworks, principles
HTML Popovers Shown on Interest Should Be Accessible on Mobile Devices (uti)2142
pop-overs, mobile, usability
HTML Is Dead, Long Live HTML (unc)2141
css, dom, standards, metrics
When HTML Speaks Clearly2140
accessibility, conformance, semantics
A Few Things About the Anchor Element’s “href” You Might Not Have Known (jim)2139
attributes, links, data-urls
More Than Just Text: The Real Power of Labels (tpg)2138
accessibility, labels, forms
HTML-First, Framework-Second: Is JavaScript Finally Growing Up?2137
javascript, frameworks
Web Components: Working With Shadow DOM (sma)2136
web-components, shadow-dom, dom
The “figcaption” Problem (chr/fro)2135
css
Why and How to Write Minimal and Valid HTML, a Link Guide (j9t)2134
minimalism, conformance, how-tos, guides, link-lists
State of HTML 2025 Now Open (lea)2133
surveys
How Semantics and ARIA Attributes Support Accessible Design (tpg)2132
accessibility, semantics, aria, attributes
Super Short Note: Placeholder Perfidy (ste)2131
accessibility, placeholders
Why Semantic HTML Still Matters (jon)2130
semantics
A Label and a Name Walk Into a Bar (ste)2129
accessibility, labels, concepts, examples
Why I’m Writing Pure HTML and CSS in 20252128
css
Screen Reader HTML Support Tables (ste/tet)2127
support, screen-readers, jaws, nvda, accessibility
HTML Minifier Next (a Maintained Fork of HTML Minifier) (j9t)2126
html-minifier, minification, optimization, tooling
HTML Day 2025 (htm)2125
awareness-days
What Is “popover=hint”? (una)2124
attributes, pop-overs
Shadow DOM: The Ultimate Solution for Embedding Third-Party HTML Without CSS Conflicts2123
shadow-dom, dom, css
Custom Select (That Comes Up From the Bottom on Mobile) (chr/fro)2122
forms, css, animations, progressive-enhancement, mobile
Tabindex: What It Is, How It Works, and When to Use It (pop)2121
focus, keyboard-navigation, accessibility
Google: Many Top Sites Have Invalid HTML and Still Rank (mat/sea)2120
google, conformance, quality, seo
A Step Into the Spatial Web: The HTML Model Element in Apple Vision Pro (zac/web)2119
spatial-web, apple, xr
The Mythical Magical Button (cri)2118
buttons, css, custom-properties, custom-data
Know Your HTML (Yes, TSX Included) (hel)2117
semantics, accessibility
CSS Cascade Layers vs. BEM vs. Utility Classes: Specificity Control (sma)2116
css, cascade, bem, presentational-html
Selfish Reasons for Building Accessible Uis (nol)2115
accessibility, debugging, testing
What I Wish Someone Told Me When I Was Getting Into ARIA (eri/sma)2114
accessibility, aria, assistive-tech, support
Having “figure” Match Width of Contained Image (jef)2113
css, images
Why Visual Website Builders Didn’t Take Off (whi)2112
videos, code-editors, wysiwyg, history
HTML Spec Change: Escaping “<” and “>” in Attributes (sec)2111
attributes, escaping, security, xss
Escaping “<” and “>” in Attributes—How It Helps Protect Against Mutation XSS (sec)2110
attributes, security, xss, escaping, chrome, browsers
Is HTML Not a Programming Language?2109
programming
Creating an Auto-Closing Notification With an HTML Popover (pre/css)2108
notifications, pop-overs
ARIA/HTML Relationship Severance (ste)2107
accessibility, aria
The “<output>” Element (kev)2106
“aria-selected”: Practical Examples and Use Cases (flo/a11)2105
accessibility, aria, examples
HTML-Native Accordions (cfe)2104
accordions
How to Use ARIA Roles and Properties Effectively2103
how-tos, aria, accessibility
Getting Creative With HTML Dialog (mal/css)2102
modals
HTML Only Experiments (ala)2101
websites, experiments
Up and Coming ARIA (web)2100
accessibility, aria
The “col” Element (hey)2099
tables, semantics
The Magic of the Most Minimal HTML Possible (and Why We Don’t Make Use of It) (j9t)2098
minimalism, maintainability
What I Learnt About Making Websites by Reading Two Thousand Web Pages (ale)2097
css, conditional-comments, lessons
Decorative Text Within HTML (ede)2096
attributes, css, formatting
Making Scannable Web Pages for Assistive Technology (jar)2095
accessibility, assistive-tech, design, headings, semantics
The “datalist” Element (kev)2094
forms
Styling the Icon for HTML Date and Time Types (cas)2093
forms, css, time
The “caption” Element (hey)2092
tables, semantics
Expanding/Collapsing With “details” (ons/oze)2091
accessibility, disclosure-widgets
Is There a Correct Answer? Flipping Layouts When Google Translate Swaps Between a Left-to-Right Language and a Right-to-Left Language (chr/fro)2090
internationalization, localization, conversion
How Often Should We Speak About HTML Conformance? (j9t)2089
conformance, metrics
Just Fucking Use HTML (kyr)2088
websites
Enhancements to the Proposed “<permission>” Element (tom)2087
Foundations: Keyboard Accessibility (tet)2086
fundamentals, accessibility, keyboard-navigation, focus
The True Path to Garbage Code: Figma Sites (joe)2085
figma, quality, semantics, accessibility
The Hidden Gold of Web Accessibility: Everything About ARIA Labels (flo/a11)2084
accessibility, aria, best-practices
K.I.S.S. ARIA (nat)2083
aria, accessibility
The “code” Element (hey)2082
markdown
Revisiting Image Maps (mal/css)2081
images, image-maps, techniques
The “cite” Element (hey)2080
semantics
Seeking an Answer: Why Can’t HTML Alone Do Includes? (chr/fro)2079
maintainability
Anchor Positioning Just Don’t Care About Source Order (geo/css)2078
css, anchor-positioning, source-order
Giving Software Away for Free (sim)2077
foss, hosting, javascript
Menu and Navigation: The Difference (stv)2076
navigation, pagination, aria, accessibility
The “canvas” Element (hey)2075
canvas, semantics
Unlocking Accessibility: Frontend Developers Discuss Semantic HTML and Accessible Code2074
accessibility, semantics, community
HTML Oddities: Does the Order of Attribute Values Matter? (ede)2073
attributes, css, selectors
“input type="color"” (kev)2072
forms, colors
The Problem(s) With Image Accessibility2071
accessibility, images, alt-text
Mastering HTML: The Art of Minimal and Valid Code in Professional Web Development (AI Edition) (j9t)2070
guest-posts, minimalism, conformance, semantics, interoperability, accessibility, standards
Keeping It on the “<dl>”—Another HTML Gem You Never Use (cod)2069
lists, semantics
Creating an Accessible Accordion With HTML Description Lists (kar)2068
accessibility, lists, accordions
5 Ways to Reduce HTML File Size on Your Website, Step 0 (j9t)2067
performance, optimization
Default Styles for “h1” Elements Are Changing (zco/mdn)2066
css, headings, browsers
5 Ways to Reduce HTML File Size on Your Website (deb)2065
minification, compression, performance, optimization
ARIA in HTML (sco+/w3c)2064
standards, accessibility, aria
Milana Cap on the Interactivity and HTML APIs, and Their Enormous Potential (mil+)2063
podcasts, interviews, wordpress, apis, dom
Strings Are a Leaky Abstraction for HTML (joe)2062
strings
Hiding Elements That Require JavaScript Without JavaScript (0xd)2061
javascript, css
Tweaking Text Level Styles, Reprised (aar)2060
css, accessibility, support, browsers, screen-readers
CSS-Only Glitch Effect2059
css, effects
Markup Languages (j9t)2058
overviews, link-lists, sgml, xml, xhtml, hdml, dhtml, mathml, wml, chtml
“input type="number"” (kev)2057
forms
“aria-label” Is a Letdown (thi/wag)2056
accessibility, aria, labels
Create an HTML Dialog When You Click an Image (cas)2055
images, modals
The “contenteditable” “plaintext-only” Attribute Value Combination Is Now Baseline Newly Available (tom)2054
attributes, browsers, support, web-platform
Quick Accessibility Wins That Are Easy to Implement (kev)2053
videos, accessibility, semantics, alt-text, images, contrast, colors, keyboard-navigation, focus, skip-links
The Bare Minimum You Need to Enable View Transitions on Your Website (ami)2052
css, view-transitions, minimalism
A Review of HTML Linters2051
overviews, linting, conformance, tooling, link-lists, comparisons
Is React Accessible? That’s the Wrong Question2050
accessibility, react, jsx, semantics
Web Components vs. Framework Components: What’s the Difference? (sma)2049
web-components, components, frameworks, comparisons
Popping Preconceived Popover Ponderings (sco)2048
accessibility, pop-overs
Future of CSS: “select” Styling Without the Hacks2047
css, selectors, forms
Creating Animated Accordions With the “details” Element and Modern CSS (ste/bui)2046
css, disclosure-widgets, accordions, animations, transitions
Implementing “aria-describedby” for Web Accessibility (flo/a11)2045
accessibility, aria, forms, labels
Page Speed: Avoid Large Base64 Data URLs in HTML and CSS (deb)2044
performance, css, data-urls, compression, base64
Introducing “command” and “commandfor” (kei)2043
introductions, attributes
DeepSeek and HTML (j9t)2042
ai, deepseek, minimalism, conformance
Cool Native HTML Elements You Should Already Be Using (hrr)2041
modals, disclosure-widgets, forms, progress-indicators
Grouping Selection List Items Together With CSS Grid (pre/css)2040
lists, forms, css, grids, layout
Building Websites With LLMS (jim)2039
css, view-transitions
Using and Styling the “details” Element (geo/css)2038
css, disclosure-widgets, examples
The Professional Standing of Frontend Developers (mar)2037
guest-posts, career, learning, css, javascript, communication, collaboration, community, ai
Unlock Exciting Use Cases With the Document Picture-in-Picture API (jad)2036
apis
CSS Meets Voxel Art: Building a Rendering Engine With Stacked Grids (cod)2035
css, art
There’s No Such Thing as “Menubar Navigation” (tem)2034
accessibility, navigation
When to Use Lists for Better Accessibility2033
accessibility, lists
Fixing “rowspan=0” on Tables on WebKit (kar)2032
tables, webkit, browser-engines, browsers
Everything You Need to Know About Invoker Commands (kei/web)2031
videos, pop-overs
Introduction to Frontend Development2030
introductions, css, javascript, frameworks, libraries, tooling, career, trends
“ruby-align” Is Baseline Newly Available2029
ruby-markup, css, browsers, support, web-platform
Rethinking Find-in-Page Accessibility: Making Hidden Text Work for Everyone (sch)2028
accessibility, search, hiding, browsers
It’s Right There in the Back of the Book (hom)2027
accessibility, semantics
Using the “step” and “pattern” Attributes to Make Number Inputs More Useful (cas/pic)2026
forms
Which HTML Element Are You?2025
quizzes
Testing 10 JavaScript Frameworks on Their HTML Defaults (j9t)2024
frameworks, javascript, conformance, comparisons, link-lists
Optimizing Images for Web Performance (tod/fro)2023
images, performance, optimization, jpeg, png, webp, avif, caching
Taking RWD to the Extreme (sma)2022
responsive-design, intrinsic-design, css
How to Declare Your Page’s Language (pop)2021
how-tos, internationalization
HTML and CSS for a One-Time Password Input (chr/fro)2020
css, forms, passwords
A Content List With Bulk Actions Using Ancient HTML and Modern CSS (tyl/clo)2019
forms, lists, css
Using Padding to Space an Input and Label (dar)2018
forms, labels, spacing, css
Foundations: Grouping Forms With “<fieldset>” and “<legend>” (tet)2017
fundamentals, forms, aria
How to Set Up an Accessible Page Structure and Navigation (pop)2016
how-tos, accessibility, navigation
XHTML in Modern Web Development (mar)2015
guest-posts, xhtml
What Text Area Popovers Taught Me About Browser APIs (bla)2014
forms, apis, javascript
Only One “<details>” Open at a Time (osv)2013
disclosure-widgets
Creating an Angled Slider (zac/fro)2012
sliders, css, effects
Don’t Wrap Figure in a Link (aar)2011
links, screen-readers, accessibility
23 HTML Cheat Sheets, for a Different Look at HTML (fro)2010
cheat-sheets, link-lists
Learning HTML Is the Best Investment I Ever Did (cod)2009
learning, career
HTML Developers: Please Consider—in the Year of 2025 (ste)2008
aria, accessibility
Clean Up HTML Content for Retrieval-Augmented Generation With Readability.js (phi/dat)2007
scraping, tooling, nodejs, rag
Sharing a Variable Across HTML, CSS, and JavaScript (chr/fro)2006
variables, css, javascript
Lesser Known Uses of Better Known Attributes (sma)2005
attributes
Accessibility Essentials Every Front-End Developer Should Know (mar)2004
accessibility, fundamentals, semantics, forms, keyboard-navigation, modals, alt-text, focus, responsive-design, reduced-motion, aria
Brief Note on Figure and Figcaption Support (aar)2003
accessibility, screen-readers, support
How to Order Attributes on HTML Elements2002
how-tos, attributes, sorting, conventions
Relatively New Things You Should Know About HTML Heading Into 2025 (chr/fro)2001
forms, toggles, pop-overs, javascript, import-maps, css, transitions
The Difference Between HTML Attributes and Properties (pau/clo)2000
attributes, javascript, terminology
Use “translate” to Turn Off Element Translations (ste)1999
localization
HTML Is Actually a Programming Language—Fight Me (tim/wir)1998
programming
Updated Brief Note on Description List Support (aar)1997
lists, semantics, accessibility, screen-readers, support
Datalists Are More Powerful Than You Think (two/mat)1996
Media (ste+/htt)1995
web-almanac, studies, research, metrics, multimedia, images
Misleading Icons: Icon-Only-Buttons and Their Impact on Screen Readers (ale/mat)1994
buttons, icons, images, accessibility, screen-readers
Why Heading Order Matters in HTML (gra)1993
headings, accessibility
The Underrated “<dl>” Element (luh/mat)1992
lists
Preloading Fonts for Web Performance With “link rel=preload” (acc/mat)1991
performance, preloading, fonts, hints
The Search Input: They Almost Got It Right (stv/mat)1990
forms, labels, screen-readers, assistive-tech, accessibility
The Devil Is in the “<details>” (mat)1989
disclosure-widgets
Please Keep Your HTML Tables Clean and Lean, if You Really Need to Use Them (cer)1988
accessibility, tables
PSA: Stop Using the “title” Attribute as Tooltip (dni/mat)1987
attributes, tooltips, toggles, accessibility
Accessibility First: How to Design Inclusive Frontend Experiences1986
how-tos, design, accessibility, semantics, alt-text, keyboard-navigation, aria, contrast, forms, focus
Grouping Form Fields (mat)1985
forms
My Favourite Colour Is Chuck Norris Red (val/mat)1984
colors
No ARIA Is Better Than Bad ARIA (kar)1983
videos, accessibility, aria
Getting Oriented With HTML Video (sco/mat)1982
multimedia, web-components
Microdata for Books (ala/mat)1981
microdata
HTML Conformance: A Comparison of 6.5 npm Validator Packages (With 1.5 Recommendations) (j9t)1980
conformance, tooling, npm, comparisons
You Don’t Need the “isOpen” Class (mau/mat)1979
aria, accessibility
HTML “inert” Attribute (stv/5t3)1978
attributes
The Gift You Do Not Want: A Div in a Button’s Clothing (mat)1977
buttons, accessibility
Page by Page: How Pagination Makes the Web Accessible (mat)1976
accessibility, pagination, css, svg
ARIA in HTML (sco+/w3c)1975
standards, accessibility, aria
Improving User Experience for Multilingual Web Browsing (mat)1974
user-experience, internationalization
HTML and CSS I Didn’t Even Know About Before I Started Creating Content in Japanese (mat)1973
ruby-markup, css, internationalization
Makeshift Hot Reload (eva/mat)1972
metadata
On-Page SEO Checklist: The Complete Task List for 2025 (sem)1971
seo, checklists, semantics
Submit to the Quirks of HTML (fel/mat)1970
forms
Native HTML Light and Dark Color Scheme Switching (pep/mat)1969
dark-mode, css, javascript, functionality
Past HTML, Future HTML? (j9t/mat)1968
Almost, but Not Quite, Entirely Unlike… (tin/mat)1967
accessibility, buttons, ai
What Do the State of CSS and HTML Surveys Tell Us?1966
web-platform, css, community
What Is HTML Optimization? What Is It Not? (j9t)1965
optimization, terminology
Control the Viewport Resize Behavior on Mobile With “interactive-widget” (bra/mat)1964
css, units, viewport, resizing, mobile, metadata
Creating an Effective Multistep Form for Better User Experience (sma)1963
forms, javascript, user-experience
Starting Off Right: Where Autofocus Shines (kil/mat)1962
forms, focus
The HTML Native Search Element (tre)1961
semantics
Character-Based Alignment (css)1960
css, alignment
Preloading Responsive Images (tre)1959
images, hints, performance, preloading
A Button Is Not a Link (mor/mat)1958
buttons, links
Language of Parts Bookmarklet (bea)1957
bookmarklets, metadata, accessibility
Old Alt Text Advice (ste)1956
accessibility, images, alt-text, microcontent, best-practices
Avoid Read-Only Controls (aar)1955
forms, accessibility
Where Has All the Valid HTML Gone (j9t)1954
conformance, quality
My 3 Most-Wanted CSS Table Features (dar)1953
css, tables, wish-lists
Importing a Frontend JavaScript Library Without a Build System (b0r)1952
javascript, libraries, commonjs, esm, nodejs
Native Dual-Range Input1951
forms, css
State of HTML 2024 [Results] (sac/dev)1950
surveys, metrics
The “br” Element (hey)1949
semantics
Markup (gua/htt)1948
web-almanac, studies, research, metrics
State of CSS and State of HTML 2024 (pat)1947
css
The Path to Learn Web Development (fla)1946
learning, http, css, tooling, git, javascript, typescript, databases, frameworks
How to Identify Decorative Images and Boost Accessibility (a11)1945
how-tos, images, decoration, accessibility, aria
The Lowdown on Dropdowns in HTML and CSS (dav/zer)1944
css
More Options for Styling “<details>” (bra)1943
disclosure-widgets, css
How Do HTML Event Handlers Work? (tbr)1942
javascript, events
Disabled and Obscured (ste)1941
accessibility, forms, wcag, standards
The “button” Element (hey)1940
semantics, buttons, links
HTML Cheat Sheet1939
semantics, examples, cheat-sheets
Building My Resume in HTML Using Eleventy (men)1938
career, eleventy
20 HTML Tips You Must Know in 2024 (xiu)1937
tips-and-tricks
The “<details>” and “<summary>” Elements Are Getting an Upgrade (sea)1936
disclosure-widgets
25 Accessibility Tips to Celebrate 25 Years (jar/web)1935
accessibility, tips-and-tricks, aria
The “body” Element (hey)1934
semantics
Clarifying the Relationship Between Popovers and Dialogs (zel/css)1933
pop-overs, modals, comparisons, accessibility
Come to the “light-dark()” Side (sar/css)1932
dark-mode, css, colors
HTML Form Validation Is Heavily Underused1931
forms, validation, react
Talkin’ Tables (aar/web)1930
videos, accessibility, tables
Why Does “target="_blank"” Have an Underscore in Front? (kyr)1929
frames, links
My Top 5 Most Popular Front-End Tips (kev)1928
videos, css, forms, tips-and-tricks
How Should “<selectedoption>” Work? (jaf)1927
forms
An HTML Email Template With Basic Typography and Dark/light Modes (chr/fro)1926
templates, email, typography, dark-mode
I’ve Been Doing Blockquotes Wrong (mic)1925
Using Static Websites for Tiny Archives1924
css
The “blockquote” Element (hey)1923
semantics
My Eulogy for the Open Web and Old Google1922
open-web, google
HTML/CSS Frameworks, in Their Own Words (by Word Cloud) (j9t)1921
frameworks, css, bootstrap, tailwind, foundation, bulma, milligram, pure, uikit, comparisons
HTML for People (bw)1920
books, websites, examples
The New Stylable “<select>” Element (jaf+)1919
podcasts, css, apis, forms
No Industry for Old Men (ste/web)1918
videos, retrospectives, aria, browsers, screen-readers, accessibility, w3c
The Popover API: Your New Best Friend for Tooltips (dev)1917
pop-overs, apis, tooltips, css, javascript
Web Components: Little Bits (dav/web)1916
videos, web-components
Practical Accessibility Tips You Can Apply Today (pic)1915
accessibility, tips-and-tricks
An Interesting HTML Parser Conundrum (dbu)1914
parsing
The “bdi” Element (hey)1913
semantics, internationalization
What’s the Difference Between HTML’s Dialog Element and Popovers? (chr/fro)1912
modals, pop-overs, comparisons
How to Learn HTML: 46 Great Sites, Courses, and Books (All Free)1911
how-tos, learning, courses, books, link-lists