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 that they be respected. Hide

Frontend Dogma

“html” News Archive

Definition, related topics, and 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, nesting, presentational-html, ruby-markup, semantics, skip-links, source-order, svg, tables, web-components, web-forms, xhtml (non-exhaustive) · “html” RSS feed (per email)

Entry (Sources) and Additional TopicsDate#
“focusgroup” Tests (aar)2,181
attributes, focus, chrome, google, browsers, examples, accessibility
On the Semantic Web2,180
semantics, buttons, forms
What’s !important #14: Gap Decorations, “random()”, “<select>” Field Sizing, and More (dxn/css)2,179
css, retrospectives, functions, theming, web-platform
Clickable Table Rows Are a Bad Idea (tem)2,178
tables, accessibility, keyboard-navigation
Modes and Themes That Stick—Building a Persistent Toggle Solution (stu)2,177
toggles, forms, dark-mode, theming, flash-of-x
React’s Architectural Accessibility Gaps2,176
react, accessibility, wcag
Introducing the “<usermedia>” HTML Element2,175
introductions, chrome, google, browsers
Animating the “dialog” Element Using View Transitions (rik)2,174
modals, animations, view-transitions, javascript, css
I Stored a Website in a Favicon2,173
favicons, images, experiments
The Siren Song of “ariaNotify()” (wil/css)2,172
javascript, aria, notifications, attributes, jaws, nvda, voiceover, screen-readers, accessibility
The Golden Rule of Customizable “select” (sar/web)2,171
forms, safari, apple, browsers
Dark Mode With Web Standards (oll)2,170
dark-mode, standards, javascript, svg, css
“headingoffset” Is Not the Document Outline Algorithm (aar)2,169
attributes, headings
Semantica11y—Semantic HTML for Everyone (ste)2,168
packages, semantics, accessibility
How Building an HTML-First Site Doubled Our Users Overnight (moh)2,167
web-components, validation, traffic, case-studies
WWDC26: Rediscover the HTML “select” Element2,166
videos, forms, css
WWDC26: Get Started With the HTML “model” Element2,165
videos, introductions, animations
Streaming HTML (oll)2,164
streaming, javascript
Another Stab at the Perfect CSS Pie Chart… Sans JavaScript (vil/css)2,163
css
Astro: HTML First, JavaScript When You Need It (jad)2,162
astro, javascript
Context-Aware Headings in HTML (mat)2,161
headings, attributes
Gary Illyes: The Web’s JavaScript Mess Is an AI Agent Nightmare (ppc)2,160
ai, ai-agents, javascript, rag, llmstxt
Re: Accessibility Question: Is Nesting Interactive Elements Bad? (aar)2,159
accessibility, nesting
Accessible (I Think) Split-Cell Table Headers (mey)2,158
css, tables
Managing Anchor Associations With Data Attributes and Advanced “attr()” (dxn/fro)2,157
anchor-positioning, custom-data, css, functions, attributes
Lost, Forgotten, and Unfamiliar HTML (tho)2,156
attributes
Not Every Form Field Needs to Be in a Fieldset (jea)2,155
forms, design-systems, accessibility
What’s New in Web UI (una+)2,154
videos, web-platform, user-experience, principles, canvas, css, google
Don’t Put “aria-label” on Generic Elements Like Divs (mat)2,153
attributes, aria, screen-readers, support, accessibility
Accessible by Design: HTML, CSS, Javascript, and ARIA Techniques That Scale2,152
videos, accessibility, css, javascript, aria
Declarative Partial Updates (tun+)2,151
apis, chrome, google, browsers
Introducing the HTML-in-Canvas API Origin Trial (nma)2,150
introductions, canvas, apis, origin-trials, chrome, google, browsers
A Few Ways of Specifying Per-Theme Colours in Only CSS2,149
css, dark-mode, colors, techniques
You Don’t Know HTML Lists2,148
lists, semantics
hihtml (j9t)2,147
packages, npm, conformance, links, link-rot, minification, html-minifier, optimization, quality
Install Web Apps With the New HTML “install” Element (pat)2,146
web-apps, installing, origin-trials, chromium
Not All Hidden Content Is Equal: How Different Hiding Methods Impact Accessibility2,145
accessibility, hiding, css, aria, attributes, techniques, comparisons
AI and HTML: Validating, Omitting Optional Code, and Minifying as Token Optimization (j9t)2,144
ai, token-optimization, conformance, minimalism, minification, optimization
In-n-Out-Styling With Chris Coyier (chr/sma)2,143
videos, css
The “<selectmenu>” Element: Stop Using JavaScript Dropdown Libraries2,142
forms, javascript, css
Out With the JS, in With the HTML (jim)2,141
javascript, refactoring
Using Claude Code: The Unreasonable Effectiveness of HTML2,140
claude, anthropic, ai, efficiency
HTML.md (j9t)2,139
documentation, ai
What’s !important #10: HTML-in-Canvas, Hex Maps, E-Ink Optimization, and More (dxn/css)2,138
css, retrospectives, canvas, apis, images, web-platform
ARIA Roles and Web Accessibility: A Quick Guide (lev)2,137
guides, accessibility, aria, attributes
Hard to Read One-Liners (kri)2,136
css, collaboration
The End of Responsive Images (wil/pic)2,135
images, responsive-design
Visual Validation Feedback for Form Fields (aar)2,134
forms, validation, javascript
The Web Is Fun Again: First Experiments With HTML in Canvas (ami/fro)2,133
experiments, canvas, javascript
Multi-Level Navigation: The Challenge of Identifying Parent Sections for Screen Readers (ele)2,132
navigation, aria, screen-readers, accessibility
A11y 101: 3.1.1 Language of Page (nat)2,131
introductions, accessibility, wcag, localization
My Thoughts on the “focusgroup” Attribute Proposal (stv)2,130
forms, focus, attributes
Video as Code: A Deep Dive Into HeyGen’s Hyperframes2,129
deep-dives, multimedia, css, tooling
The Radio State Machine (ami/css)2,128
css, state-management
The Community Has Spoken, Now We Need Browsers Vendors to Help: A “<rangegroup>” Update (uti)2,127
community, browsers
Why AI Sucks at Front End (arg)2,126
ai, css
How to Use Standard HTML Video and Audio Lazy-Loading on the Web Today (sco)2,125
how-tos, multimedia, lazy-loading, performance
Old Advice: Hiding Content Has No Effect on Accessible Name or Description Calculation (ste)2,124
accessibility, hiding, aria
Making Emojis and Icons Screen Reader Accessible (pop)2,123
emoji, icons, images, accessibility, screen-readers
Semantic HTML Just Might Make Your CSS Less Fragile (sch)2,122
css, semantics, resilience
There’s No Need to Include “Navigation” in Your Navigation Labels (tem)2,121
accessibility, labels, navigation
Mike Smith Fireside (ste)2,120
videos, interviews, standards, accessibility, community
Headings the Right Way: Site Building Tips for Accessible Page Content (dru)2,119
videos, headings, accessibility
Bad Example: Timesheet Submit Button (rac)2,118
buttons, accessibility
Tooltips That Work for Everyone (ele)2,117
tooltips, accessibility, aria, attributes, screen-readers, nvda, jaws
Quick Tip: Don’t Use “<abbr>” (nat)2,116
tips-and-tricks, screen-readers, support, accessibility
Astro: How to Set Up More Powerful HTML Minification (in 31 Seconds) (j9t)2,115
how-tos, astro, html-minifier, minification, optimization
New Bookmarklet—Structure Revealer (llo)2,114
bookmarklets, accessibility
Abusing Customizable Selects (pat/css)2,113
forms, css, functions
The Enforced Accessibility of the “geolocation” Element (chr/fro)2,112
geolocation, accessibility
Testing Browser Support for “focusgroup” (ada)2,111
attributes, focus, javascript
The Different Ways to Select “<html>” in CSS (dxn/css)2,110
css, selectors
You Don’t Know HTML Tables2,109
tables, javascript
Request for Developer Feedback: “focusgroup” (jac)2,108
attributes, focus, chromium, browsers
Your Skip Link Targets May Not Need “tabindex=-1” to Work Properly (mat)2,107
skip-links, attributes, accessibility
1995: From Batman Forever’s Cinematic Design to HTML Tables (ric)2,106
web, history, design, netscape, mosaic, browsers, tables, layout, wysiwyg, code-editors
Figcaptions Versus Alt Text (tem)2,105
images, alt-text, accessibility, comparisons
You Can Use Newline Characters in URLs (lem)2,104
urls, data-urls, links, attributes
“role=presentation” Is No Alternative for “aria-hidden=true” (mat)2,103
accessibility, aria, attributes, comparisons
When Is a Link Not a Link? (dec)2,102
links, semantics, accessibility
Matt May Speaks (mat+)2,101
videos, interviews, accessibility, standards
“aria-haspopup” Might Not Do What You Think It Does (mat)2,100
aria, attributes, navigation, accessibility
Standard HTML Video and Audio Lazy-Loading Is Coming (sco)2,099
multimedia, lazy-loading, standards, performance
Native HTML Components Don’t Guarantee Good UX (ada)2,098
components, user-experience
The Problem With HTML Reset Buttons (ada)2,097
buttons, user-experience
An Official* Logo for HTML (zac)2,096
Everything You Never Wanted to Know About “visually-hidden” (dbu)2,095
css, hiding, accessibility
Notes on Relying on the ARIA Authoring Practices Guide (ste)2,094
aria, accessibility
Mastering Dialog Accessibility2,093
accessibility, modals, aria
You Might Not Need “role="presentation"” (stv/pic)2,092
aria, accessibility
Virtual Scrolling for Billions of Rows—Techniques From HighTable (sev)2,091
tables, scrolling, performance, react
You Know What? Just Don’t Split Words Into Letters (aar)2,090
accessibility, screen-readers, support
Trying to Make the Perfect Pie Chart in CSS (mon/css)2,089
css
How to Improve Your HTML Game (j9t)2,088
how-tos, conformance, learning, career
Introduction to the New HTML Element “<geolocation>” (mat)2,087
introductions, geolocation
Accessible Inline Collapsible (eri)2,086
accessibility, disclosure-widgets
Repeatable Form Fields Made Simple (aar)2,085
forms, web-components
More Invoker Commands, and More Reasons Not to Use JavaScript Please (paw)2,084
examples
SPAs Are a Performance Dead End (yeg)2,083
single-page-apps, performance
Barriers From Links With ARIA (aar)2,082
accessibility, links, aria
I Learned the First Rule of ARIA the Hard Way (css)2,081
accessibility, aria, semantics
Faking a Fieldset-Legend (tyl/clo)2,080
forms, css
SEO (htt)2,079
web-almanac, studies, research, metrics, seo, robotstxt, llmstxt, links, content, structured-data, amp, internationalization
Accessible Faux-Nested Interactive Controls (eri/pic)2,078
accessibility, conformance, nesting
The Incredible Overcomplexity of the Shadcn Radio Button (pau)2,077
forms, shadcn, complexity
EPUB and HTML—Survey Results and Next Steps (rei/w3c)2,076
surveys, epub
So You Think Your Website Is Doing Great (cit)2,075
javascript, css, quality
ARIA Roles Can Remove Their Children’s Semantics (ste)2,074
aria, semantics, accessibility
Introducing the “<geolocation>” HTML Element (tom+)2,073
introductions, geolocation, chrome, google, browsers
A Polyfill for the HTML “switch” Element (tom)2,072
forms, polyfills
What Is the Minimum Markup Needed to Create a Modal? (rus)2,071
modals, minimalism, css, accessibility
Very Good Components (bee)2,070
websites, components
How Browsers Work (dmy)2,069
websites, guides, browsers, urls, http, tcp, dom
How Can You Tell What’s Allowed Inside Each HTML Element? (rus)2,068
conformance
HTML Content Categories (rus)2,067
semantics
The Final Nail in the HTML5 Document Outline Coffin (tem)2,066
headings, accessibility
Opening and Closing Dialogs Without JavaScript Using HTML Invoker Commands (sch)2,065
modals
Revisiting HTML Streaming for Modern Web Performance (per)2,064
performance, streaming
The Three Semantics of HTML (mat)2,063
semantics
For the Love of “<details>” (dev/mat)2,062
disclosure-widgets
The HTML Elements Time Forgot (val/mat)2,061
history
2026 Predictions: The Next Big Shifts in Web Accessibility (web)2,060
accessibility, outlooks, ai, wcag
The Two Most Important Tools for HTML Developers2,059
tooling, conformance, minification, html-minifier, htmlnano, swc
Why “role="button"” on a “<button>” Does Nothing (rus)2,058
buttons, attributes, aria
Styling by Language: Using the “lang” Attribute for Multilingual Design (mat)2,057
internationalization, css
Did You Know Some ARIA Roles Remove Child Semantics? (rus)2,056
aria, semantics, accessibility
The Many Lives of the Page Title (kat/mat)2,055
user-experience, accessibility, wcag
Semantics Beyond the Tag Name (kno/mat)2,054
attributes, aria, semantics, accessibility
Targeting by Reference in the Shadow DOM (mey)2,053
shadow-dom, javascript
The Anatomy of an Accessible Text Field (ink)2,052
forms, accessibility, labels
Accessibility Is Personal (css)2,051
accessibility
Forms Are a Badly Designed Part of HTML (jen/mat)2,050
forms, standards
Don’t Leave the Screen Reader Hungry (ger/mat)2,049
emoji, screen-readers, accessibility
How “aria-labelledby” Really Works (rus)2,048
accessibility, aria, attributes
State of HTML 2025 [Results] (sac/dev)2,047
surveys, metrics
Giving Pages a Clear Shape by Using Headings (mat)2,046
headings
Does Chrome Get the “<header>” Element Wrong? (rus)2,045
aria, chrome, google, browsers
I Ported JustHTML From Python to JavaScript With Codex CLI and GPT-5.2 in 4.5 Hours (sim)2,044
migrating, ai, python, javascript, tooling, parsing
Them’s the Breaks (tyl/mat)2,043
The “<time>” Element Should Actually Do Something (nol)2,042
time, semantics
Hell Is Other People’s Markup (llo/mat)2,041
auditing, tooling
Changes in the World of HTML Minifiers (apo)2,040
tooling, minification, html-minifier
Why We Teach Our Students Progressive Enhancement (cyd)2,039
progressive-enhancement, css, javascript, training
How HTML Changes in EPUB (rob/mat)2,038
epub, standards
A11y Freedom Beaver (ste/mat)2,037
accessibility, aria
Useful Patterns for Building HTML Tools (sim)2,036
ai, tooling
Discover Dialog (sar/mat)2,035
modals, javascript, css
That Time I Tried Explaining HTML and CSS to My 5-Year Old Niece (css)2,034
css, learning
What’s Wrong With This HTML, and Is It Valid? (pat/mat)2,033
standards, conformance, web-platform
Comparing HTML Minifiers (j9t)2,032
minification, tooling, html-minifier, htmlnano, metrics, comparisons
Controlling Dialogs and Popovers With the Invoker Commands API (sta/mat)2,031
modals, pop-overs, apis, attributes
Accessible by Design: The Role of the “lang” Attribute (col/mat)2,030
accessibility, internationalization, attributes, metrics
NoLoJS: Reducing the JS Workload With HTML and CSS (aar/per)2,029
disclosure-widgets, forms, modals, pop-overs, navigation, scrolling, positioning
IDREFs: What They Are and How to Use Them (kil/mat)2,028
forms, aria, accessibility
Referencing HTML Elements Inside Shadow DOM (meh/mat)2,027
shadow-dom, web-components
HTML Semantics: The Short Descriptions of All 113 Elements (j9t)2,026
semantics, overviews
Using the Ancient Evils for Debugging (bol/mat)2,025
debugging
Exploring Large HTML Documents on the Web (per)2,024
performance, metrics
How Modern Browsers Work (add)2,023
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)2,022
how-tos, eleventy, html-minifier, minification, optimization
What Are Invokers? Interactivity Without JavaScript (tol/syn)2,021
videos, javascript, pop-overs
Testing Methods: Page Titled (dec)2,020
accessibility, wcag, testing
A Complete Guide to the HTML Number Input (oll)2,019
guides, attributes, forms
“::details-content”: Style Expandable Content Without Wrapper Divs (tre)2,018
disclosure-widgets, css
Why Headings Are Important in HTML: Structure, Accessibility, and SEO2,017
headings, accessibility, seo
Headings: Semantics, Fluidity, and Styling—Oh My! (geo/css)2,016
headings, css
Link vs. Button: Choosing the Right Element for the Right Job (tpg)2,015
links, buttons, accessibility, wcag, comparisons
Tailwind CSS Won the War… but We’re the Losers2,014
tailwind, css, web-platform
Explaining the Accessible Benefits of Using Semantic HTML Elements (geo/css)2,013
semantics, accessibility
Now Available: “On Web Development II”! (j9t)2,012
books, css, engineering-management, maintainability, quality
Just Use a Button (cfe)2,011
buttons, semantics
HTML Minifier: A 12-Year Journey Building and Maintaining an Open Source Tool2,010
minification, tooling, windows, asp-net, retrospectives
Parenthetical Asidenotes (mey)2,009
css
ChatGPT Sez Build With Semantics First (ste)2,008
chatgpt, chatgpt-atlas, ai, openai, browsers, semantics, accessibility
Don’t Forget These Tags to Make HTML Work Like You Expect (jim)2,007
What’s an Interactive Element? (mat)2,006
focus, concepts
Challenging the Idea of “Optional HTML” (mar)2,005
guest-posts, minimalism
Links and Anchors: Ancient HTML and JS Magic in Your Browser (cod/wea)2,004
css, javascript, links
What State ARIA In? (tpg)2,003
aria, accessibility
Implicit Labels Aren’t (cfe)2,002
forms, labels
Headers, Headings, and Titles (tem)2,001
headings, comparisons, terminology
Page Headings Don’t Belong in the Header (tem)2,000
headings, skip-links, accessibility
A Look Into Customizable HTML “select” Elements1,999
forms, css
Tables: Beyond Rows and Columns (tpg)1,998
accessibility, wcag, tables, semantics, jaws, nvda, screen-readers
HTML “dialog”: Getting Accessibility and UX Right (jar)1,997
modals, scrolling, accessibility, user-experience
HTML—the Most Difficult Programming Language in the World (j9t)1,996
programming, conformance, professionalism
Numbers That Fall (Scroll-Driven Animations and Sibling Index) (chr/fro)1,995
css, animations, scrolling, effects
When to Use Modal vs. Dialog Components (a11)1,994
modals, aria, accessibility
Lowriders and Websites (aaa)1,993
css, craft
Rethinking Cookie Dialogs (nat)1,992
accessibility, disclosure-widgets, cookies, consent-management
A Progressive Enhancement Challenge (chr/fro)1,991
progressive-enhancement, javascript, feature-detection, support
How to Optimize Viewport for Mobile for Faster Interactions (deb)1,990
how-tos, viewport, mobile, performance, optimization
Understanding the Removal of 4.1.1 Parsing in WCAG 2.2 (tpg)1,989
accessibility, wcag, conformance
HTML’s Best Kept Secret: The “<output>” Tag (den)1,988
Let’s Play Accordion With the HTML “details” Element (ale)1,987
disclosure-widgets, accordions
Creating a Truly Accessible Flip Card (sib/tpg)1,986
css, javascript, accessibility
Web Development for Beginners: Creating Web Pages via HTML (rau)1,985
fundamentals, urls, servers, forms
The “picture” Element (kev)1,984
A Quick Primer on Accessible Pagination (kar)1,983
introductions, accessibility, pagination, css, assistive-tech
“aria-label” or “title”? Screen Reader Behaviour Explained (a11)1,982
attributes, accessibility, screen-readers
Navigating the World of Web Accessibility With Sara Soueidan (sar+)1,981
videos, interviews, accessibility, wcag, aria, css
2025: 0 of the Global Top 200 Websites Use Valid HTML (j9t)1,980
conformance, metrics, quality, craft
Just Use HTML (cfe)1,979
javascript
Baby Steps Accessibility—Page Titles (dec)1,978
microcontent, best-practices, accessibility
Why Moving Away From SPAs Improves Usability, Accessibility, and SEO (inn)1,977
single-page-apps, usability, accessibility, seo, semantics
Screen Reader HTML Support—Lookup (ste)1,976
screen-readers, accessibility, support, overviews
Your Images Are (Probably) Oversized1,975
images, pixel-density
Why Did I Ever Abandon HTML/CSS? (syl)1,974
css
Tricks to Write HTML and CSS 10× Faster (jay)1,973
css, efficiency, tips-and-tricks
You No Longer Need JavaScript (reb)1,972
javascript, css, examples
Opening a “details” Element From the URL (chr/fro)1,971
disclosure-widgets, urls
Hack to the Future—Frontend (the)1,970
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)1,969
how-tos, tables, accessibility
Design Hacks From the Pre-CSS Era (den/hac)1,968
tables, layout, hacks, history
A Proposal for Inline LLM Instructions in HTML Based on llms.txt (ind)1,967
ai, llmstxt
The First Rule of ARIA (nat)1,966
accessibility, aria, principles
Covering “hidden=until-found” (geo/css)1,965
hiding
5 Heading Accessibility Issues to Avoid (pop)1,964
accessibility, headings
A Progressive Complexity Manifesto (che)1,963
manifestos, complexity, web-apps, htmx, javascript, web-components, frameworks, principles
HTML Popovers Shown on Interest Should Be Accessible on Mobile Devices (uti)1,962
pop-overs, mobile, usability
HTML Is Dead, Long Live HTML (unc)1,961
css, dom, standards, metrics
When HTML Speaks Clearly1,960
accessibility, conformance, semantics
A Few Things About the Anchor Element’s “href” You Might Not Have Known (jim)1,959
attributes, links, data-urls
More Than Just Text: The Real Power of Labels (tpg)1,958
accessibility, labels, forms
HTML-First, Framework-Second: Is JavaScript Finally Growing Up?1,957
javascript, frameworks
Web Components: Working With Shadow DOM (sma)1,956
web-components, shadow-dom, dom
The “figcaption” Problem (chr/fro)1,955
css
Why and How to Write Minimal and Valid HTML, a Link Guide (j9t)1,954
minimalism, conformance, how-tos, guides, link-lists
State of HTML 2025 Now Open (lea)1,953
surveys
How Semantics and ARIA Attributes Support Accessible Design (tpg)1,952
accessibility, semantics, aria, attributes
Super Short Note: Placeholder Perfidy (ste)1,951
accessibility, placeholders
Why Semantic HTML Still Matters (jon)1,950
semantics
A Label and a Name Walk Into a Bar (ste)1,949
accessibility, labels, concepts, examples
Why I’m Writing Pure HTML and CSS in 20251,948
css
Screen Reader HTML Support Tables (ste/tet)1,947
support, screen-readers, jaws, nvda
HTML Minifier Next (a Maintained Fork of HTML Minifier) (j9t)1,946
html-minifier, minification, optimization, tooling
HTML Day 2025 (htm)1,945
awareness-days
What Is “popover=hint”? (una)1,944
attributes, pop-overs
Shadow DOM: The Ultimate Solution for Embedding Third-Party HTML Without CSS Conflicts1,943
shadow-dom, dom, css
Custom Select (That Comes Up From the Bottom on Mobile) (chr/fro)1,942
forms, css, animations, progressive-enhancement, mobile
Tabindex: What It Is, How It Works, and When to Use It (pop)1,941
focus, keyboard-navigation, accessibility
Google: Many Top Sites Have Invalid HTML and Still Rank (mat/sea)1,940
google, conformance, quality, seo
A Step Into the Spatial Web: The HTML Model Element in Apple Vision Pro (zac/web)1,939
spatial-web, apple, xr
The Mythical Magical Button (cri)1,938
buttons, css, custom-properties, custom-data
Know Your HTML (Yes, TSX Included) (hel)1,937
semantics, accessibility
CSS Cascade Layers vs. BEM vs. Utility Classes: Specificity Control (sma)1,936
css, cascade, bem, presentational-html
Selfish Reasons for Building Accessible Uis (nol)1,935
accessibility, debugging, testing
What I Wish Someone Told Me When I Was Getting Into ARIA (eri/sma)1,934
accessibility, aria, assistive-tech, support
Having “figure” Match Width of Contained Image (jef)1,933
css, images
Escaping “<” and “>” in Attributes—How It Helps Protect Against Mutation XSS (sec)1,932
attributes, security, xss, escaping, chrome, google, browsers
Why Visual Website Builders Didn’t Take Off (whi)1,931
videos, code-editors, wysiwyg, history
HTML Spec Change: Escaping “<” and “>” in Attributes (sec)1,930
attributes, escaping, security, xss
Is HTML Not a Programming Language?1,929
programming
Creating an Auto-Closing Notification With an HTML Popover (pre/css)1,928
notifications, pop-overs
ARIA/HTML Relationship Severance (ste)1,927
accessibility, aria
The “<output>” Element (kev)1,926
“aria-selected”: Practical Examples and Use Cases (flo/a11)1,925
accessibility, aria, examples
HTML-Native Accordions (cfe)1,924
accordions
How to Use ARIA Roles and Properties Effectively1,923
how-tos, aria, accessibility
Getting Creative With HTML Dialog (mal/css)1,922
modals
HTML Only Experiments (ala)1,921
websites, experiments
Up and Coming ARIA (web)1,920
accessibility, aria
The “col” Element (hey)1,919
tables, semantics
The Magic of the Most Minimal HTML Possible (and Why We Don’t Make Use of It) (j9t)1,918
minimalism, maintainability
What I Learnt About Making Websites by Reading Two Thousand Web Pages (ale)1,917
css, conditional-comments, lessons
Decorative Text Within HTML (ede)1,916
attributes, css, formatting
Making Scannable Web Pages for Assistive Technology (jar)1,915
accessibility, assistive-tech, design, headings, semantics
The “datalist” Element (kev)1,914
forms
Styling the Icon for HTML Date and Time Types (cas)1,913
forms, css, time
The “caption” Element (hey)1,912
tables, semantics
Expanding/Collapsing With “details” (ons/oze)1,911
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)1,910
internationalization, localization, conversion
How Often Should We Speak About HTML Conformance? (j9t)1,909
conformance, metrics
Just Fucking Use HTML (kyr)1,908
websites
Enhancements to the Proposed “<permission>” Element (tom)1,907
Foundations: Keyboard Accessibility (tet)1,906
fundamentals, accessibility, keyboard-navigation, focus
The True Path to Garbage Code: Figma Sites (joe)1,905
figma, quality, semantics, accessibility
The Hidden Gold of Web Accessibility: Everything About ARIA Labels (flo/a11)1,904
accessibility, aria, best-practices
K.I.S.S. ARIA (nat)1,903
aria, accessibility
The “code” Element (hey)1,902
markdown
Revisiting Image Maps (mal/css)1,901
images, image-maps, techniques
The “cite” Element (hey)1,900
semantics
Seeking an Answer: Why Can’t HTML Alone Do Includes? (chr/fro)1,899
maintainability
Anchor Positioning Just Don’t Care About Source Order (geo/css)1,898
css, anchor-positioning, source-order
Giving Software Away for Free (sim)1,897
foss, hosting, javascript
Menu and Navigation: The Difference (stv)1,896
navigation, pagination, aria, accessibility
The “canvas” Element (hey)1,895
canvas, semantics
Unlocking Accessibility: Frontend Developers Discuss Semantic HTML and Accessible Code1,894
accessibility, semantics, community
HTML Oddities: Does the Order of Attribute Values Matter? (ede)1,893
attributes, css, selectors
“input type="color"” (kev)1,892
forms, colors
The Problem(s) With Image Accessibility1,891
accessibility, images, alt-text
Mastering HTML: The Art of Minimal and Valid Code in Professional Web Development (AI Edition) (j9t)1,890
guest-posts, minimalism, conformance, semantics, interoperability, accessibility, standards
Keeping It on the “<dl>”—Another HTML Gem You Never Use (cod)1,889
lists, semantics
Creating an Accessible Accordion With HTML Description Lists (kar)1,888
accessibility, lists, accordions
5 Ways to Reduce HTML File Size on Your Website, Step 0 (j9t)1,887
performance, optimization
Default Styles for “h1” Elements Are Changing (zco/mdn)1,886
css, headings, browsers
5 Ways to Reduce HTML File Size on Your Website (deb)1,885
minification, compression, performance, optimization
ARIA in HTML (sco+/w3c)1,884
standards, accessibility, aria
Milana Cap on the Interactivity and HTML APIs, and Their Enormous Potential (mil+)1,883
podcasts, interviews, wordpress, apis, dom
Strings Are a Leaky Abstraction for HTML (joe)1,882
strings
Hiding Elements That Require JavaScript Without JavaScript (0xd)1,881
javascript, css
Tweaking Text Level Styles, Reprised (aar)1,880
css, accessibility, support, browsers, screen-readers
CSS-Only Glitch Effect1,879
css, effects
Markup Languages (j9t)1,878
overviews, link-lists, sgml, xml, xhtml, hdml, dhtml, mathml, wml, chtml
“input type="number"” (kev)1,877
forms
“aria-label” Is a Letdown (thi/wag)1,876
accessibility, aria, labels
Create an HTML Dialog When You Click an Image (cas)1,875
images, modals
The “contenteditable” “plaintext-only” Attribute Value Combination Is Now Baseline Newly Available (tom)1,874
attributes, browsers, support, web-platform
Quick Accessibility Wins That Are Easy to Implement (kev)1,873
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)1,872
css, view-transitions, minimalism
Is React Accessible? That’s the Wrong Question1,871
accessibility, react, jsx, semantics
Web Components vs. Framework Components: What’s the Difference? (sma)1,870
web-components, components, frameworks, comparisons
A Review of HTML Linters1,869
overviews, linting, conformance, tooling, link-lists, comparisons
Popping Preconceived Popover Ponderings (sco)1,868
accessibility, pop-overs
Future of CSS: “select” Styling Without the Hacks1,867
css, selectors, forms
Creating Animated Accordions With the “details” Element and Modern CSS (ste/bui)1,866
css, disclosure-widgets, accordions, animations, transitions
Implementing “aria-describedby” for Web Accessibility (flo/a11)1,865
accessibility, aria, forms, labels
Page Speed: Avoid Large Base64 Data URLs in HTML and CSS (deb)1,864
performance, css, data-urls, compression, base64
Introducing “command” and “commandfor” (kei)1,863
introductions, attributes
DeepSeek and HTML (j9t)1,862
ai, deepseek, minimalism, conformance
Cool Native HTML Elements You Should Already Be Using (hrr)1,861
modals, disclosure-widgets, forms, progress-indicators
Grouping Selection List Items Together With CSS Grid (pre/css)1,860
lists, forms, css, grids, layout
Building Websites With LLMS (jim)1,859
css, view-transitions
Using and Styling the “details” Element (geo/css)1,858
css, disclosure-widgets, examples
The Professional Standing of Frontend Developers (mar)1,857
guest-posts, career, learning, css, javascript, communication, collaboration, community, ai
Unlock Exciting Use Cases With the Document Picture-in-Picture API (jad)1,856
apis
CSS Meets Voxel Art: Building a Rendering Engine With Stacked Grids (cod)1,855
css, art
There’s No Such Thing as “Menubar Navigation” (tem)1,854
accessibility, navigation
When to Use Lists for Better Accessibility1,853
accessibility, lists
Fixing “rowspan=0” on Tables on WebKit (kar)1,852
tables, webkit, browser-engines, browsers
“ruby-align” Is Baseline Newly Available1,851
ruby-markup, css, browsers, support, web-platform
Everything You Need to Know About Invoker Commands (kei/web)1,850
videos, pop-overs
Introduction to Frontend Development1,849
introductions, css, javascript, frameworks, libraries, tooling, career, trends
Rethinking Find-in-Page Accessibility: Making Hidden Text Work for Everyone (sch)1,848
accessibility, search, hiding, browsers
It’s Right There in the Back of the Book (hom)1,847
accessibility, semantics
Using the “step” and “pattern” Attributes to Make Number Inputs More Useful (cas/pic)1,846
forms
Which HTML Element Are You?1,845
quizzes
Testing 10 JavaScript Frameworks on Their HTML Defaults (j9t)1,844
frameworks, javascript, conformance, comparisons, link-lists
Optimizing Images for Web Performance (tod/fro)1,843
images, performance, optimization, jpeg, png, webp, avif, caching
Taking RWD to the Extreme (sma)1,842
responsive-design, intrinsic-design, css
How to Declare Your Page’s Language (pop)1,841
how-tos, internationalization
HTML and CSS for a One-Time Password Input (chr/fro)1,840
css, forms, passwords
A Content List With Bulk Actions Using Ancient HTML and Modern CSS (tyl/clo)1,839
forms, lists, css
Using Padding to Space an Input and Label (dar)1,838
forms, labels, spacing, css
Foundations: Grouping Forms With “<fieldset>” and “<legend>” (tet)1,837
fundamentals, forms, aria
How to Set Up an Accessible Page Structure and Navigation (pop)1,836
how-tos, accessibility, navigation
XHTML in Modern Web Development (mar)1,835
guest-posts, xhtml
What Text Area Popovers Taught Me About Browser APIs (bla)1,834
forms, apis, javascript
Only One “<details>” Open at a Time (osv)1,833
disclosure-widgets
Creating an Angled Slider (zac/fro)1,832
sliders, css, effects
Don’t Wrap Figure in a Link (aar)1,831
links, screen-readers, accessibility
23 HTML Cheat Sheets, for a Different Look at HTML (fro)1,830
cheat-sheets, link-lists
Learning HTML Is the Best Investment I Ever Did (cod)1,829
learning, career
HTML Developers: Please Consider—in the Year of 2025 (ste)1,828
aria, accessibility
Clean Up HTML Content for Retrieval-Augmented Generation With Readability.js (phi/dat)1,827
scraping, tooling, nodejs, rag
Lesser Known Uses of Better Known Attributes (sma)1,826
attributes
Sharing a Variable Across HTML, CSS, and JavaScript (chr/fro)1,825
variables, css, javascript
Accessibility Essentials Every Front-End Developer Should Know (mar)1,824
accessibility, fundamentals, semantics, forms, keyboard-navigation, modals, alt-text, focus, responsive-design, reduced-motion, aria
Brief Note on Figure and Figcaption Support (aar)1,823
accessibility, screen-readers, support
How to Order Attributes on HTML Elements1,822
how-tos, attributes, sorting, conventions
Relatively New Things You Should Know About HTML Heading Into 2025 (chr/fro)1,821
forms, toggles, pop-overs, javascript, import-maps, css, transitions
The Difference Between HTML Attributes and Properties (pau/clo)1,820
attributes, javascript, terminology
Use “translate” to Turn Off Element Translations (ste)1,819
localization
HTML Is Actually a Programming Language—Fight Me (tim/wir)1,818
programming
Updated Brief Note on Description List Support (aar)1,817
lists, semantics, accessibility, screen-readers, support
Datalists Are More Powerful Than You Think (two/mat)1,816
Media (ste+/htt)1,815
web-almanac, studies, research, metrics, multimedia, images
Misleading Icons: Icon-Only-Buttons and Their Impact on Screen Readers (ale/mat)1,814
buttons, icons, images, accessibility, screen-readers
Why Heading Order Matters in HTML (gra)1,813
headings, accessibility
The Underrated “<dl>” Element (luh/mat)1,812
lists
Preloading Fonts for Web Performance With “link rel=preload” (acc/mat)1,811
performance, preloading, fonts, hints
The Search Input: They Almost Got It Right (stv/mat)1,810
forms, labels, screen-readers, assistive-tech, accessibility
The Devil Is in the “<details>” (mat)1,809
disclosure-widgets
Please Keep Your HTML Tables Clean and Lean, if You Really Need to Use Them (cer)1,808
accessibility, tables
PSA: Stop Using the “title” Attribute as Tooltip (dni/mat)1,807
attributes, tooltips, toggles, accessibility
Accessibility First: How to Design Inclusive Frontend Experiences1,806
how-tos, design, accessibility, semantics, alt-text, keyboard-navigation, aria, contrast, forms, focus
Grouping Form Fields (mat)1,805
forms
My Favourite Colour Is Chuck Norris Red (val/mat)1,804
colors
No ARIA Is Better Than Bad ARIA (kar)1,803
videos, accessibility, aria
Getting Oriented With HTML Video (sco/mat)1,802
multimedia, web-components
Microdata for Books (ala/mat)1,801
microdata
HTML Conformance: A Comparison of 6.5 npm Validator Packages (With 1.5 Recommendations) (j9t)1,800
conformance, tooling, npm, comparisons
You Don’t Need the “isOpen” Class (mau/mat)1,799
aria, accessibility
HTML “inert” Attribute (stv/5t3)1,798
attributes
The Gift You Do Not Want: A Div in a Button’s Clothing (mat)1,797
buttons, accessibility
Page by Page: How Pagination Makes the Web Accessible (mat)1,796
accessibility, pagination, css, svg
ARIA in HTML (sco+/w3c)1,795
standards, accessibility, aria
Improving User Experience for Multilingual Web Browsing (mat)1,794
user-experience, internationalization
HTML and CSS I Didn’t Even Know About Before I Started Creating Content in Japanese (mat)1,793
ruby-markup, css, internationalization
Makeshift Hot Reload (eva/mat)1,792
metadata
On-Page SEO Checklist: The Complete Task List for 2025 (sem)1,791
seo, checklists, semantics
Submit to the Quirks of HTML (fel/mat)1,790
forms
Native HTML Light and Dark Color Scheme Switching (pep/mat)1,789
dark-mode, css, javascript, functionality
Past HTML, Future HTML? (j9t/mat)1,788
Almost, but Not Quite, Entirely Unlike… (tin/mat)1,787
accessibility, buttons, ai
What Do the State of CSS and HTML Surveys Tell Us? (rac)1,786
web-platform, css, community
What Is HTML Optimization? What Is It Not? (j9t)1,785
optimization, terminology
Control the Viewport Resize Behavior on Mobile With “interactive-widget” (bra/mat)1,784
css, units, viewport, resizing, mobile, metadata
Creating an Effective Multistep Form for Better User Experience (sma)1,783
forms, javascript, user-experience
Starting Off Right: Where Autofocus Shines (kil/mat)1,782
forms, focus
The HTML Native Search Element (tre)1,781
semantics
Character-Based Alignment (css)1,780
css, alignment
Preloading Responsive Images (tre)1,779
images, hints, performance, preloading
A Button Is Not a Link (mor/mat)1,778
buttons, links
Language of Parts Bookmarklet (bea)1,777
bookmarklets, metadata, accessibility
Old Alt Text Advice (ste)1,776
accessibility, images, alt-text, microcontent, best-practices
Avoid Read-Only Controls (aar)1,775
forms, accessibility
Where Has All the Valid HTML Gone (j9t)1,774
conformance, quality
My 3 Most-Wanted CSS Table Features (dar)1,773
css, tables, wish-lists
Importing a Frontend JavaScript Library Without a Build System (b0r)1,772
javascript, libraries, commonjs, esm, nodejs
Native Dual-Range Input1,771
forms, css
State of HTML 2024 [Results] (sac/dev)1,770
surveys, metrics
The “br” Element (hey)1,769
semantics
Markup (gua/htt)1,768
web-almanac, studies, research, metrics
State of CSS and State of HTML 2024 (pat)1,767
css
The Path to Learn Web Development (fla)1,766
learning, http, css, tooling, git, javascript, typescript, databases, frameworks
How to Identify Decorative Images and Boost Accessibility (a11)1,765
how-tos, images, decoration, accessibility, aria
The Lowdown on Dropdowns in HTML and CSS (zer)1,764
css
More Options for Styling “<details>” (bra)1,763
disclosure-widgets, css
How Do HTML Event Handlers Work? (tbr)1,762
javascript, events
Disabled and Obscured (ste)1,761
accessibility, forms, wcag, standards
The “button” Element (hey)1,760
semantics, buttons, links
HTML Cheat Sheet1,759
semantics, examples, cheat-sheets
Building My Resume in HTML Using Eleventy (men)1,758
career, eleventy
20 HTML Tips You Must Know in 2024 (xiu)1,757
tips-and-tricks
The “<details>” and “<summary>” Elements Are Getting an Upgrade (sea)1,756
disclosure-widgets
25 Accessibility Tips to Celebrate 25 Years (jar/web)1,755
accessibility, tips-and-tricks, aria
The “body” Element (hey)1,754
semantics
Clarifying the Relationship Between Popovers and Dialogs (zel/css)1,753
pop-overs, modals, comparisons, accessibility
Come to the “light-dark()” Side (sar/css)1,752
dark-mode, css, colors
HTML Form Validation Is Heavily Underused1,751
forms, validation, react
Talkin’ Tables (aar/web)1,750
videos, accessibility, tables
Why Does “target="_blank"” Have an Underscore in Front? (kyr)1,749
frames, links
My Top 5 Most Popular Front-End Tips (kev)1,748
videos, css, forms, tips-and-tricks
How Should “<selectedoption>” Work? (jaf)1,747
forms
An HTML Email Template With Basic Typography and Dark/light Modes (chr/fro)1,746
templates, email, typography, dark-mode
Using Static Websites for Tiny Archives1,745
css
I’ve Been Doing Blockquotes Wrong (mic)1,744
The “blockquote” Element (hey)1,743
semantics
My Eulogy for the Open Web and Old Google1,742
open-web, google
HTML/CSS Frameworks, in Their Own Words (by Word Cloud) (j9t)1,741
frameworks, css, bootstrap, tailwind, foundation, bulma, milligram, pure, uikit, comparisons
HTML for People (bw)1,740
books, websites, examples
The New Stylable “<select>” Element (jaf+)1,739
podcasts, css, apis, forms
No Industry for Old Men (ste/web)1,738
videos, retrospectives, aria, browsers, screen-readers, accessibility, w3c
The Popover API: Your New Best Friend for Tooltips (dev)1,737
pop-overs, apis, tooltips, css, javascript
Web Components: Little Bits (web)1,736
videos, web-components
Practical Accessibility Tips You Can Apply Today (pic)1,735
accessibility, tips-and-tricks
An Interesting HTML Parser Conundrum (dbu)1,734
parsing
The “bdi” Element (hey)1,733
semantics, internationalization
What’s the Difference Between HTML’s Dialog Element and Popovers? (chr/fro)1,732
modals, pop-overs, comparisons
How to Learn HTML: 46 Great Sites, Courses, and Books (All Free)1,731
how-tos, learning, courses, books, link-lists
The “b” Element (hey)1,730
semantics
“img sizes=auto” for Native Lazy Loading (ste)1,729
code-pens, images, lazy-loading, performance
Hire HTML and CSS People (fon)1,728
css, hiring, engineering-management
Why HTML Has Both “<b/i>” and “<strong/em>”?1,727
semantics
The Importance of Title Tags: Tips and Tricks to Optimize for SEO (web)1,726
seo, optimization, tips-and-tricks
State of HTML 2024 (sac/dev)1,725
surveys
Request for Developer Feedback: Customizable Select (una)1,724
forms
2024: 0.5% of the Global Top 200 Websites Use Valid HTML (j9t)1,723
conformance, metrics, quality, craft
What Does Hydration Mean? (chr/fro)1,722
hydration, concepts, javascript, dom
Going Buildless (mxb)1,721
building, components
The HTML History and Optimization Cheat Sheet (j9t)1,720
history, optimization, cheat-sheets
Should Form Labels Be Wrapped or Separate? (sib/tpg)1,719
forms, labels, accessibility, browsers, assistive-tech
HTML Whitespace Is Broken (dev)1,718
whitespace
Semi-Annual Reminder to Learn and Hire for Web Standards (aar)1,717
learning, fundamentals, standards, css
Headings (web)1,716
headings, accessibility
Paragraphs (sco)1,715
accessibility
What the Heck Is ARIA? A Beginner’s Guide to ARIA for Accessibility (a11)1,714
videos, guides, aria, accessibility
The “aside” Element (hey)1,713
semantics, accessibility
The Secret Inside One Million Checkboxes1,712
databases, community
What’s Missing From HTML and CSS? (rac)1,711
css
Make Me One (Input) With Everything (mor/mat)1,710
forms, accessibility, simplicity
How to Easily Add Dark Mode to Your Website1,709
how-tos, dark-mode, css, javascript, functionality
What Skills Should You Focus on as Junior Web Developer in 2024? (fro)1,708
career, fundamentals, css, javascript, frameworks, tooling, learning, link-lists
Is Using “aria-label” to Add Alternative Text but No “alt” Attribute Still a WCAG Fail?1,707
discussions, accessibility, attributes, forms, labels, aria, alt-text, images
Raw-Dogging Websites (bra)1,706
css, javascript, tech-stacks
Spoiler Alert: It Needs to Be Accessible (sco)1,705
accessibility, web-components, aria
The Top Programming Languages 2024 (iee)1,704
programming, comparisons, python, java, javascript, typescript, sql, go, php, lua
Foundations: Labelling Text Fields With Input and Label (tet)1,703
accessibility, fundamentals, forms, labels
Expert Guide: Writing HTML for Screen Reader Users (flo/a11)1,702
guides, accessibility, aria, alt-text, writing, screen-readers
Top 5 HTML Features You’re Not Using (but Should Be)1,701
How Are the “colspan” and “rowspan” Attributes Different? (geo/css)1,700
attributes, tables
How Does the Browser Render HTML? (and)1,699
browsers, browser-engines, rendering, dom, css, cssom, painting
“blocking=render”: Why Would You Do That?! (css)1,698
performance, rendering
Rote Learning HTML & CSS (j9t/fro)1,697
books, frontend-dogma, css, learning
The “address” Element (hey)1,696
semantics
Action Web Components Which Span the Server-Client Divide (jar)1,695
web-components, apis
ObsoHTML, the Obsolete HTML Checker (j9t)1,694
packages, npm, quality
The “abbr” Element (hey)1,693
semantics, accessibility
HTML Web Components Can Have a Little Shadow DOM, as a Treat (sco)1,692
web-components, shadow-dom, dom
The Anchor Element (hey)1,691
links, semantics, terminology, usability
HTML Web Components Make Progressive Enhancement and CSS Encapsulation Easier (css)1,690
web-components, principles, solid, progressive-enhancement, examples
The Anatomy of Accessible Forms: Best Practices (deq)1,689
accessibility, forms, best-practices
Replacing jQuery UI Datepicker With HTML Date Input (chr)1,688
jquery
Pop(over) the Balloons (css)1,687
disclosure-widgets, pop-overs, css
Learn Web Components (and)1,686
websites, courses, web-components, css, dom, javascript
Don’t Use JS for That: Moving Features to CSS and HTML (kil/jsc)1,685
videos, javascript, css
Named Alternates for WordPress (ede)1,684
wordpress
What ARIA Still Does Not Do (ste)1,683
aria, accessibility, standards
An Update on Invokers: Invoker Commands in HTML (uti)1,682
modals, pop-overs