Paul Irish
@paul.irish
5.3K followers 1.4K following 50 posts
web performance and DevTools, mostly. In '97 I wrote a paper for English class on HTML Image Maps. I haven't changed much since.
Posts Media Videos Starter Packs
Reposted by Paul Irish
chordbug.bsky.social
forgot to put this up somewhere so here you go. visualize your favorite zlib stream! lynn.github.io/flateview/
paul.irish
Meanwhile, the mobile web gmail UI m.gmail.com is so fast and delightful, despite being ~unmaintained for 10+ years.
paul.irish
You'll probably appreciate the mobile web gmail UI: m.gmail.com Sadly, it now requires a mobile UA. But despite being ~unmaintained for 10+ years, it's so fast and delightful.
Gmail
Gmail is email that’s intuitive, efficient, and useful. 15 GB of storage, less spam, and mobile access.
mail.google.com
Reposted by Paul Irish
davidbisset.com
Why I 🧡 the web.

drawafish.com

Just draw the fish. Trust me. 🐟
A group of handdrawn fish.
paul.irish
This is hot. And aligns with some work I've been hacking on. Can I give it a whirl?
paul.irish
Prompts as MCP payloads are def not getting much attention but I also think they have good potential.
Interesting that Claude doesn't act on the prompt response type without extra nudging.. especially since this is all their design.
paul.irish
Weirdly buried in the article:

The Nashville chief federal prosecutor (who'd lead this case?) decided to resign in protest over this case being pursued for political reasons.
The decision to pursue the indictment against Abrego Garcia led to the abrupt departure of Ben Schrader, a high-ranking federal prosecutor in Tennessee, sources briefed on Schrader's decision told ABC News. Schrader's resignation was prompted by concerns that the case was being pursued for political reasons, the sources said.

Schrader, who spent 15 years in the U.S. Attorney's Office in Nashville and was most recently the chief of the criminal division, declined to comment when contacted by ABC News.
paul.irish
Sometimes I let my website draw pictures in the Profiler
DevTools Perf panel open against paulirish.com. A bitmap representation of the poop emoji is displayed in the profiler. (It was done with a lot of performance.measure() calls)
paul.irish
My talk from I/O: a 10min jaunt jam-packed with DevTools Performance panel goodness. youtu.be/BHqxD9qr6Gw

Really proud of what we've landed in the past year, including JS bundle analysis, framework tracing APIs, auto-annotations, CrUX context, and deep insights.
Performance debugging in DevTools
YouTube video by Chrome for Developers
youtu.be
paul.irish
😵‍💫 Dayum.
@kizu.dev is a deep magic css wizard.
paul.irish
🤨 In a v weird fit of serendipity, I *just* swished with Listerine and wanted to show my partner one of their commercials from the 90s..
This isn't the one but... Listerine was all about that text-fitting! youtu.be/o_P3HElQbsM
VINTAGE COMMERCIAL - LISTERINE
YouTube video by Historic Films Stock Footage Archive
www.youtube.com
paul.irish
Hot damn!!!

codepen.io/paulirish/pe...

omg its the modern bigtext.js/fittext.js. i love this so hard.
inverse text-sizing with attr
...
codepen.io
Reposted by Paul Irish
bram.us
Bramus @bram.us · May 29
👀 Coming to Chrome DevTools in Chrome 138: CSS Value Tracing

When you hover a --custom-prop in a `var()`, DevTools currently shows you the computed value. From Chrome 138 onwards, you can hover the `var` part to see how CSS actually got to that value.
paul.irish
Yeah, fair. I don't have this in a non-video blog post yet but.. here's the 10min version with actual words: youtu.be/BHqxD9qr6Gw?...
Performance debugging in DevTools
YouTube video by Chrome for Developers
www.youtube.com
paul.irish
The Chrome DevTools Performance panel just leveled up! 🚀 Here's a 69-second taste of the new hotness.
paul.irish
100%. Applescript is super painful. Finding what API is exposed by each application.. Trying it out.. Logging. All of these things are just terrible. But yeah I don't know other mechanisms to query some of this.
paul.irish
Here's my version of the same dealio. A lil ffmpeg/fzf/applescript/fish combo to screencapture the bounds of your chosen application's frontmost window. gist.github.com/paulirish/c1...
screencapture a specific application's frontmost window
screencapture a specific application's frontmost window - screencap-window.fish
gist.github.com
paul.irish
The next biggest win is getting rid of the 3 render blocking requests. That'll give the LCP a 1.3✕ speedup.

trace.cafe/t/hRHAdaY3rl

(Btw it's quite fast! Nice job)
DevTools showing a trace of the load. Render blocking requests annotated with their optimizations.
paul.irish
Nicely executed. The debugger UI is hot.
Reposted by Paul Irish
samwho.dev
Sam Rose @samwho.dev · May 12
Been annoyed by web fonts for a while. They’re big and they were connecting my blog to Google.

I stumbled on modernfontstacks.com earlier today and now I’ve ditched my web fonts in favour of these.

~140kb shaved off the first load of my site. First impressions matter.
Modern Font Stacks
System font stack CSS organized by typeface classification for every modern OS. The fastest fonts available. No downloading, no layout shifts, no flashes — just instant renders.
modernfontstacks.com
paul.irish
you mean like some url sugar around this?
data:text/html;charset=utf8,<input type=checkbox>
paul.irish
Is the WebDev Arena truly measuring webdev coding ability?

This ML coding benchmark *requires* React/Tailwind and completely breaks with vanilla JS/other frameworks.
The second-order implications of models competing on this narrow definition of frontend web development are rather troublesome.
Screenshot of https://blog.lmarena.ai/blog/2025/webdev-arena/ showing the system prompt, which includes:

> You are an expert frontend React engineer
>    - Create a React component for whatever the user asked you to create
>    - Use Tailwind classes for styling.
paul.irish
Same! Yeah it is