Sign in

Mathias Bynens

@mths.be
3.4K followers 815 following 377 posts

♥ JavaScript, HTML, CSS, HTTP, performance, security, Bash, Unicode, i18n, macOS. mths.be

PostsRepliesMedia
Reposted by Mathias Bynens
Web Standards @web-standards.dev · 22/09/2026
Responsive iframes in Chrome 154. Sebastian Benz and Bramus introduce frame-sizing, a CSS property that sizes an <iframe> to its content, with a <meta> element opt-in and window.requestResize() for later updates. #html #css developer.chrome.com...
Chrome logo, an illustration of a scrollable embedded page, an HTML snippet with a responsive-embedded-sizing <meta> element, a frame-sizing CSS snippet, and title “Responsive iframes in Chrome 154”.
3328
Reposted by Mathias Bynens
Gianni Rosato @giannirosato.com · 14/09/2026
Might be one of my more controversial posts: "The case against JPEG XL" Link: giannirosato.com/blog/post/ca... 🫡 #compression #jpegxl #av1
giannirosato.com
The case against JPEG XL | Gianni Rosato
Investigating JPEG XL's place as a Web image codec.
164
Reposted by Mathias Bynens
James Padolsey @j11y.io · 13/08/2026
Wrote a thing about how they watermark AI-generated text: declaude.org/watermarking/
declaude.org
How AI text watermarking works
A gentle visual guide to how a statistical mark hides inside generated text, and what erases it.
36218
Mathias Bynens @mths.be · 13/08/2026
Loving every second of this. Bravo, sir! Also, hashtag normalize the use of actual snares in a capella performances
030
Mathias Bynens @mths.be · 12/08/2026
Woah, congrats!
020
Reposted by Mathias Bynens
Ben Schwarz @benschwarz.bsky.social · 12/08/2026
Run CI? Use Puppeteer? You may be entitled to leaner silicon 🍃 Update: Chrome for Testing arm64 builds are out! I've already updated @calibreapp.com pre-release Synthetic test agents to run arm64 — after observation, they’ll join the fleet Early numbers looking positive so far 📉
2102
Reposted by Mathias Bynens
Ben Schwarz @benschwarz.bsky.social · 05/08/2026
An enormous amount of the world’s CI and automation runs headless Chrome, all of it on x86—until last week. Chrome now ships official arm64 Linux builds. AWS says Graviton uses up to 60% less energy for the same performance. Chrome for Testing coming soon 🥳 calibreapp.com/blog/chrome-...
calibreapp.com
Chrome lands on arm64 | Calibre
Google has shipped official arm64 Linux builds of Chrome. Here’s where to get them, and why it’s good news for anyone running browser automation.
111312
Mathias Bynens @mths.be · 11/08/2026
It’s done! bsky.app/profile/mths...
120
Mathias Bynens @mths.be · 11/08/2026
I’m happy to announce that linux-arm64 Chrome for Testing builds are now available, starting with version 153.0.8001.0: github.com/GoogleChrome... More background: github.com/GoogleChrome...
github.com
Issue · GoogleChromeLabs/chrome-for-testing
Contribute to GoogleChromeLabs/chrome-for-testing development by creating an account on GitHub.
0286
Mathias Bynens @mths.be · 05/08/2026
I still remember you filing that issue like it was yesterday. Glad it’s finally happening now! For CfT specifically, we still have some work to do on setting up the builders and then updating the dashboard + API accordingly, but we’ll get there.
250
Reposted by Mathias Bynens
Terence Eden @edent.mastodon.social.ap.brid.gy · 08/06/2026
🆕 blog! “How many consecutive hyphens can you have in a domain name?” A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - […]
mastodon.social
Original post on mastodon.social
167
Mathias Bynens @mths.be · 01/06/2026
Hi Martin, looks like Puppeteer incorrectly got flagged as malware again: github.com/github/advis... Could you please help us out again by escalating this internally? Thank you!
github.com
GHSA-8r2f-2qg4-cv9v incorrectly flags `pkg:npm/puppeteer@25.0.1` as malicious · Issue #7858 · github/advisory-database
GHSA-8r2f-2qg4-cv9v / MAL-2026-5077 was published a short time ago indicating pkg:npm/puppeteer@25.0.1 is malicious. GHSA-rvxm-vq55-8p53](GHSA-rvxm-vq55-8p53) / MAL-2026-3655 previously flagged ver...
120
Reposted by Mathias Bynens
Rick Viscomi @rviscomi.dev · 20/05/2026
We've been COOKING Modern Web Guidance is a skill pack that helps your coding agent write better, faster, more accessible and secure code Get it at goo.gle/mwg We'd love to know what you think!
goo.gle
Modern Web Guidance  |  Chrome for Developers
Guidance on how to build for the modern web.
0216
Mathias Bynens @mths.be · 14/05/2026
We’re unblocked. Thanks for jumping in to help us out, Martin! Much appreciated.
110
Mathias Bynens @mths.be · 13/05/2026
Thanks for the connect, Daniel! Martin, if you see this, we could use some help.
120
Mathias Bynens @mths.be · 13/05/2026
That’s a first: GitHub’s Advisory Database (incorrectly) flags Puppeteer as malware. github.com/github/advis... We are no longer able to publish new releases. Are there any GitHub or Microsoft folks here who can help escalate this?
github.com
False positives w.r.t. malware in Puppeteer: GHSA-grrc-v84p-qwv3 & GHSA-rvxm-vq55-8p53 · Issue #7684 · github/advisory-database
There seem to be two false positives that are affecting Puppeteer-related packages: @puppeteer/browsers is being flagged as malware in GHSA-grrc-v84p-qwv3. puppeteer-core is being flagged as malwar...
2288
Reposted by Mathias Bynens
Jason Williams @jason-williams.co.uk · 11/03/2026
Temporal is now Stage 4 at TC39 🎂🎂🎂 Thanks to all the other champions of JavaScript's new date-time API. It has been a wild ride over many years! I wrote a blog post explaining how we got here 📜 bloomberg.github.io/js-blog/post...
Code example showing the usage of Temporal.ZoneddateTime

```js
// London DST starts: 2026-03-29 01:00 -> 02:00
const zdt = Temporal.ZonedDateTime.from(
  "2026-03-29T00:30:00+00:00[Europe/London]",
);

console.log(zdt.toString());
// → "2026-03-29T00:30:00+00:00[Europe/London]"

const plus1h = zdt.add({ hours: 1 });

console.log(plus1h.toString());
// "2026-03-29T02:30:00+01:00[Europe/London]" (01:30 doesn't exist)
```
2034782
Reposted by Mathias Bynens
Cabel Sasser @cabel.panic.com · 11/02/2026
over a year ago, i gave a talk at the xoxo conference about a mural, a mcdonald’s, and a man. (but it was also secretly about life, and legacy, and meaning.) finally, i’m blogging the full story, with behind-the-scenes details, and a video of the talk. enjoy. cabel.com/wes-cook-and...
cabel.com
Wes Cook and the Centralia McDonald's Mural
A personal story about discovering a mural in a McDonald's, an unknown artist named Wes Cook, saving the mural, and a conference talk about the whole thing.
34461117
Mathias Bynens @mths.be · 01/12/2025
Hi Emelia, which issues in particular are blocking you? Happy to take a look.
110
Mathias Bynens @mths.be · 12/10/2025
Woah, such a cool idea!
030
Reposted by Mathias Bynens
Chrome for Developers @developer.chrome.com · 23/09/2025
Announcing our public preview of Chrome DevTools MCP! Experience the full power of DevTools in your AI coding agent→ goo.gle/4pDE6Tk With Chrome DevTools MCP, your AI agent can run performance traces, inspect the DOM, & perform real-time debugging of your web pages.
04022
Mathias Bynens @mths.be · 01/09/2025
The HTML Standard is unlikely to add more HTML entities so the current version is probably close to final anyhow. As you noted, I’m not actively maintaining `he` right now, but the code that’s out there is tested and works (modulo the open issues).
010
Mathias Bynens @mths.be · 24/08/2025
I saw that, but the example I gave uses Array.prototype.entries (not Object.entries).
100
Mathias Bynens @mths.be · 24/08/2025
Loving the interactive demos! In the `buildList` example, there’s no need to stop using `for-of` just to get access to the index. Try: for (const [index, item] of items.entries()) { output.push(`Item ${index + 1}: ${items[index]}`); } Smaller diff, might be easier to follow. WDYT?
130
Mathias Bynens @mths.be · 26/07/2025
That sucks :( I’m really sorry to hear
000
Mathias Bynens @mths.be · 25/06/2025
Cheers!
000
Mathias Bynens @mths.be · 23/06/2025
Cool project! What do you think about enabling the RegExp `v` flag for the `stylepattern`, to more closely match the `pattern` attribute? github.com/keithclark/r...
github.com
240
Reposted by Mathias Bynens
Jake Archibald @jakearchibald.com · 17/06/2025
CSS uses a complex algorithm to decide how to animate transforms. If you get it wrong, as many folks do, you end up with an unnatural animation. Here's how it works, and how to avoid the pitfalls. jakearchibald.com/2025/animati...
jakearchibald.com
Animating zooming using CSS: transform order is important… sometimes
How to get the right transform animation.
1428454
Mathias Bynens @mths.be · 14/05/2025
This makes no sense whatsoever. I’m really sorry, Ron.
060
Mathias Bynens @mths.be · 07/05/2025
http.badssl.com 4 lyfe!
http.badssl.com
http.badssl.com
070
Mathias Bynens @mths.be · 16/04/2025
Woah, blast from the past! Bedankt om te laten weten, made my day :)
020
Mathias Bynens @mths.be · 11/04/2025
This is devastating. I’m so sorry, dude
010
Mathias Bynens @mths.be · 31/03/2025
We miss you already, Jecelyn! Thanks for everything you’ve done for the Web! ❤️
030
Mathias Bynens @mths.be · 04/03/2025
Woah, this is so dope! Congratulations!
020
Mathias Bynens @mths.be · 13/02/2025
Another reason `pattern` should not be used *just* to replace `step` is keyboard accessibility. Try pressing the up/down arrow on the step=0.01 example.
110
Mathias Bynens @mths.be · 08/02/2025
yes and yes!
010
Reposted by Mathias Bynens
Sarah Drasner @sarahedo.bsky.social · 26/01/2025
✍️ I did an explainer on the CPU and GPU and how they coordinate tasks between them. Going to a series on rendering💥
Drawing of expanded view of the GPU and CPU, with explanations for both and a brief description of how they coordinate
1233028
Mathias Bynens @mths.be · 21/01/2025
The extra options appear when DevTools is opened. Works on right-click too.
140
Mathias Bynens @mths.be · 18/01/2025
Only Windows does. Linux and macOS use 1000-based units. goo.gle/devtools-si has an overview of some more software.
goo.gle
DevTools: use SI units (based on 1000, not 1024) for file sizes
Use SI units (based on 1000, not 1024) for file/memory sizes Attention: Externally visible, non-confidential Author: wolfi@chromium.org Status: Inception | Draft | Accepted | Done Created: 2020-02-25 ...
120
Mathias Bynens @mths.be · 17/01/2025
Agreed.
010
Mathias Bynens @mths.be · 17/01/2025
Personally, I consistently use “MB” and the like to refer to SI units (based on powers of 10), and “MiB” & friends for units based on powers of 2. You seem to want “100 MiB”, which is unambiguous.
2610
Reposted by Mathias Bynens
Simon Pieters @zcorpan.bsky.social · 16/01/2025
Here's the new 2025 reset.css: h1 { margin-block: 0.67em; font-size: 2em; } Thank you for adopting this on all your sites! See github.com/whatwg/html/...
github.com
Remove UA style for h1-h6 in section (et. al.) and hgroup · Issue #7867 · whatwg/html
If/when #7829 is merged, the following UA style doesn't make sense. Can it be removed? In the following CSS block, x is shorthand for the following selector: :is(article, aside, nav, section) @name...
192
Mathias Bynens @mths.be · 20/12/2024
I’m so sorry 😔
010
Mathias Bynens @mths.be · 11/12/2024
I think this might be the eventual solution: bsky.app/profile/mths...
030
Mathias Bynens @mths.be · 11/12/2024
www.unicode.org/reports/tr58... aims to standardize a solution for minimally escaping a URL for text consumption while taking into account security considerations. Once that happens, it would be nice to amend the URL Standard with a new URL#toText method or similar that implements this algorithm.
unicode.org
Proposed Draft UTS #58: Unicode Linkification
071
Mathias Bynens @mths.be · 18/11/2024
In case helpful, I wrote about this a while back: mathiasbynens.be/notes/css-es... and built a tool showing how to escape any character for use in different CSS-like contexts: mothereff.in/css-escapes
mathiasbynens.be
CSS character escape sequences · Mathias Bynens
070
Mathias Bynens @mths.be · 13/11/2024
pop pop
010
Mathias Bynens @mths.be · 12/11/2024
I’ll actually stop this import now and will reconsider moving it to a separate account, or just not bothering at all. cc @why.bsky.team it would be wonderful to be able to do this silently
310
Mathias Bynens @mths.be · 12/11/2024
Apologies — wasn’t expecting imported Twitter archive posts from 2009 to spam the timeline :( Thanks for letting me know!
430
Reposted by Mathias Bynens
Steven Levithan @slev.life · 11/11/2024
Uplevel your regex-fu with my deep dive into JS regex history on Smashing Magazine. www.smashingmagazine.com/2024/08/hist... Lots of new and powerful regex features you might have missed from recent versions of JavaScript!
smashingmagazine.com
Regexes Got Good: The History And Future Of Regular Expressions In JavaScript — Smashing Magazine
Although JavaScript regexes used to be underpowered compared to other modern flavors, numerous improvements in recent years mean that’s no longer true. Steven Levithan evaluates the history and presen...
1186