Three proposals for HTML:
- <form method="POST">
- <button action="/post/123" method="DELETE">
- <button action="/open" target="content">
These three small proposals make HTML significantly more expressive, enabling many common web applications to be built with pure hypertext.
<form action="/session" method="POST"> <input name="email" type="text"> <input name="password" type="password"> <button>Login</button> </form>
<button action="/session" method="DELETE">Logout</button>
The most basic interaction of a web application, logging in and out, is made fully declarative and trivial to implement.
<form>
/session URL for all authentication actions simplifies the backend implementation
<form action="/posts/123" method="PUT"> <!-- Main form submission --> <textarea name="content">I read the news today; oh boy.</textarea> <button>Save</button> <!-- Additional actions --> <button action="/posts/123" method="GET">Cancel</button> <button action="/posts/123/draft" method="PUT">Save Draft</button> <button action="/posts/123" method="DELETE">Delete Post</button> </form>
This form demonstrates a basic HTML-only interface for editing a previously-submitted post, like one might do on a social media site, comment thread, or forum.
Access to flexible <button> elements allows us to describe this interaction entirely with HTTP routes.
PUT /posts/123
GET /posts/123
PUT /posts/123/draft
DELETE /posts/123
<div id="user-info"></div> <form action="/users/354" method="PUT" target="#user-info"> <input type="text" name="name"> <input type="text" name="bio"> <button>Submit</button> </form>
Using the target attribute, this form performs basic partial page replacement.
When the form is submitted, it will replace <div id=user-info> with the result of PUT /users/354.
This allows the page to update in response to user action without undergoing a full page reload.
The addition of this paradigm of to HTML lives alongside the traditional page load performed with the hyperlink.
The <a> element is used to load a new, distinct resource, while a partial page replacement is used to update the state of an existing, already-loaded resources in response to user action.
Once a feature is added to the HTML standard, it's there forever, so new features must be feasible for implementers, useful for developers, and beneficial for users. We expect Triptych to take take years and incorporate many rounds of feedback.
Nevertheless, they're worth the effort. We are working with browser implementers to specify this at the necessary level of detail and are making progress on the contributions required to land Triptych in browser engines.
Web developers often have to implement the same patterns over and over again. Building proven functionality into HTML is a longstanding design principle, delightfully known as "Paving the Cowpaths."
These patterns were carefully chosen for their universality and power. Web developers frequently use HTTP lifecycle methods, set buttons to perform network requests, and update parts of the page based on the server response. The chosen grammar enables the most common subset of that functionality, letting developers save time, money, and code dependencies for the truly custom parts of their application.
Web browsers are also not the only HTML clients. Search engine crawlers, RSS readers, AI agents, even browsers features like Reader Mode—they all read and transform HTML to perform different, specialized functions. The more web functionality that is described in HTML, the better these products can be.
Check out the Triptych Polyfill (on GitHub).
One answer to this question is: because they are very useful and largely uncontroversial.
A more complicated answer is that these features complete HTML's ability to do Representational State Transfer (REST) by making it a sufficient self-describing representation for a much wider variety of problem spaces. That this can be accomplished with such tiny API changes is a testament to how effective HTML already is.
In September 2025, some members of the Triptych Project co-authored a research paper on what Triptych could accomplish for HTML as a hypertext, and what it reveals about where HTML could go next.
The three features chosen for Triptych are quite limited in scope relative to JavaScript offerings like htmx, hotwired, and unpoly. Triptych offers a basic, HTML-compatible version of those features; it's the greatest common denominator between them all.
Last Updated: Jan 15, 2026
Triptych Project is affiliated with the Montana State University Hypermedia Research Group.
For questions, reach out to Alexander Petros (contact@alexpetros.com) or Carson Gross (carson@bigsky.software)