Sign in

Stoyan Stefanov

@stoyan.me
1.5K followers 251 following 378 posts

stoyan.me, PerfPlanet, "JavaScript Patterns", "React: Up & Running", YSlow, SmushIt. Formerly of Facebook, WebPageTest, Yahoo

PostsRepliesMedia
Stoyan Stefanov @stoyan.me · 19h
america.gov vs gov.uk on my iPhone 8 (Safari 15). Watch this talk www.youtube.com/watch?v=VdBx... by @therealnooshu.bsky.social Hobbs about what happened during the pandemic, people desperately looking for gov't info and browsing with horrible connections on devices such as ...
162
Stoyan Stefanov @stoyan.me · 19h
Blog post where I look at my server logs, trying to answer the question: does `llms.txt` in your root help at all? www.phpied.com/llms-txt-age...
phpied.com
llms.txt: agent-optimization wishful thinking
Can't remember where I stumbled upon a SEO-type guide that was suggesting agent-optimization via a robot.txt-like file llms.txt which lives in the web root and helps agents use your site. Perfect, I t...
011
Stoyan Stefanov @stoyan.me · 26/09/2026
Blog by @csswizardry.com reminding us about the UNO metric @timvereecke.bsky.social introduced on the web performance calendar csswizardry.com/2026/08/uno-... UnO = Underrated Observables 😜
csswizardry.com
Unattributed Navigation Overhead (UNO) Is Underrated – CSS Wizardry
Unattributed Navigation Overhead exposes the part of Time to First Byte that Navigation Timing cannot explain, including hidden cross-origin redirects.
131
Stoyan Stefanov @stoyan.me · 26/09/2026
When does California's 1-click-unsubscribe law starts being mandated? Trying to cancel a subscription: website's subs management is under construction, no one is picking up the phone and AI chatbot is the only thing responding. Of course it sends you to the phone. Arghh! p.s. avoid JustFoodForDogs
000
Stoyan Stefanov @stoyan.me · 26/09/2026
Todor Zhivkov, leader of communist Bulgaria 1956-1989, "wrote" an insane amount of books, over 50 probably, fat ones too. Of course, it's really hard to write that much, even for full-time prolific folks like Stephen King or Isaac Asimov...
100
Stoyan Stefanov @stoyan.me · 24/09/2026
New blog post about becoming a Micro-Influencer on Instagram: www.phpied.com/i-am-now-an-... (meaning 10K followers) How I got there (not hard, just persistence for 5+ months) and what are the benefits (not monetary or any real influence). AMA.
phpied.com
I am now an Instagram Micro-Influencer
AMA. What's a "Micro-Influencer"? Someone with 10K or more followers. Approximately 15% of all Instagram accounts. So I'm a "15 percenter" What's an Instagram? A window on your baby television tha...
000
Stoyan Stefanov @stoyan.me · 23/09/2026
Hello bonjour bsky, it's been a while!
021
Reposted by Stoyan Stefanov
Henri Helvetica 🧑🏾‍🚀🇭🇹 @henrihelvetica.bsky.social · 15/03/2026
SIR @stoyan.me and I just hanging out. Published sooooooon....
Dashboard of a video in the middle of an edit. Core-web-vital's summit. Powered by SPDY Stream. Two persons facing the camera, once speaking into a microphone.
031
Stoyan Stefanov @stoyan.me · 13/02/2026
New blog in the series about building SightRead.org www.phpied.com/quick-and-di...
phpied.com
Quick and dirty linting
This post is another installment of the series dedicated to building sightread.org. Parts 1, 2, 3, 4, 5, 6. I've been using TypeScript (actually JSDoc + tsc --noEmit) as my linter for a while. Well, ...
000
Stoyan Stefanov @stoyan.me · 11/02/2026
sightread.org/blog/asymmet... Adding support for 7/8 and family to my music sight reading project
sightread.org
Asymmetric time signatures - SightRead.org Blog
Practice rhythms in 5/8, 7/8, and 11/8 with flexible beat groupings that make these meters feel natural.
030
Stoyan Stefanov @stoyan.me · 05/02/2026
New blog post about an experiment in measuring how rendering times are affected by the size of SVGs www.phpied.com/measuring-sv...
phpied.com
Measuring SVG rendering time
The questions Is rendering large SVGs significantly slower than smaller ones? Is there a cut-off size above which things are terrible? And what if these SVGs were PNGs, just for giggles. To answer t...
082
Stoyan Stefanov @stoyan.me · 24/01/2026
New blog post www.phpied.com/oops-i-build...
phpied.com
Oops, I build.js'd it again
Who amongst us has not created a blogging software of some fashion or another? I know I have, many times. My latest (joke-y) attempt was Lizzy.js. The desire to go into a writing mode and don't worry ...
001
Stoyan Stefanov @stoyan.me · 21/01/2026
I don't think there are many music dictation apps out there, but here's v1 of mine. Rhythm-only for now, part of the sightread.org project. To try sightread.org?rhythm-dicta... To read the blog post sightread.org/blog/quests-...
sightread.org
Introducing Quests and Rhythmic Dictation - SightRead.org Blog
SightRead.org now has quests. Rhythmic Dictation is a new mode where you hear a rhythm and try to identify it.
021
Reposted by Stoyan Stefanov
Martin Michalek @machal.bsky.social · 13/01/2026
7 tips for your #WebPerformance education: Every December, @stoyan.me publishes the excellent Web Performance Calendar. It is a great collection of insights from the world's top experts. Even in 2026, these articles are a "must-read." Here is what caught my eye this year (thread). ⤵️
152
Stoyan Stefanov @stoyan.me · 14/01/2026
look ma' I'm now opining about AI like the big kids www.wearedevelopers.com/en/videos/17...
wearedevelopers.com
AI is an Electric Bike for the Brain - Stoyan Stefanov
Stoyan Stefanov calls AI an electric bike for the brain. But he warns it can also lead you straight off a performance cliff.
020
Stoyan Stefanov @stoyan.me · 12/01/2026
New blog post www.phpied.com/type-checkin... This is now part 4 of something I thought will be a quick note. Installment 4 talks about type checking without TypeScript. Hello JSDoc! And so the DIY-ing continues until morale improves!
phpied.com
Type checking without the muck
This is part 4 of a series about hacking on sightread.org with minimal tooling/building and maximum web platform-ing: Part 1: Import JavaScript like it's 2026 Part 2: Maximally Minimal Build Proc...
020
Reposted by Stoyan Stefanov
Stefan Judis @stefanjudis.com · 05/01/2026
Huge congrats and kudos to @stoyan.me for running it and to all the authors for writing articles for this year's Web Performance calendar. calendar.perfplanet.com/2025/ The quality was very high, and it feels like every second post was a banger!
calendar.perfplanet.com
2025 Archives
The speed geek's favorite time of year
132
Stoyan Stefanov @stoyan.me · 04/01/2026
New blog post: www.phpied.com/maximally-mi... It's about staying away from most everything the JS ecosystem has to offer and stick close to the web platform. A build is still necessary because of long lived caches and updates but it can be tiny and simple. Time will tell how this strategy plays out
phpied.com
Maximally Minimal Build Process
In my previous post I described how I set up sightread.org with no build process and modern JavaScript. The goal was raw ES modules, no transpilation, no bundling, just <script type="module"> and we'r...
174
Reposted by Stoyan Stefanov
Brian Alfaro @designbaa.bsky.social · 01/01/2026
Let's make 2026 the year to make web simple again. Not everything needs to be an app, sometimes its just idk a website. 🥳🥳
041
Reposted by Stoyan Stefanov
Ben Schwarz @benschwarz.bsky.social · 31/12/2025
People like to say “once the single page app is booted, it’s faster”, but they’re wrong — stats show few subsequent navigations occur. React simply isn’t worth the cost for most websites.
0166
Reposted by Stoyan Stefanov
Greg Strange @iplayoddball.bsky.social · 31/12/2025
I almost slipped this article because that headline is usually a red flag to me. But I'll be damned, every single one of these features slap.
111
Reposted by Stoyan Stefanov
Ryan Townsend @twnsnd.com · 31/12/2025
Put the NYE champagne down… my article is up on the 2025 Web Performance Calendar 🥳
182
Reposted by Stoyan Stefanov
Peter Bowyer @peterbowyer.bsky.social · 31/12/2025
@stoyan.me it's been a fantastic Web Performance Calendar, thank you for curating it and Happy New Year!
031
Reposted by Stoyan Stefanov
Vinicius Dallacqua @webx.bsky.social · 31/12/2025
Wrapping up the year with my article for the Perf Calendar with my write up about how I ended up creating agent.perflab.io! It has AI, it has Perf…what else could you want 😎🔥 I’m always happy to see my content in the Performance Calendar! Thanks for the initiative @stoyan.me !
agent.perflab.io
PerfAgent - AI-Powered Web Performance Analysis
Get expert insights on Core Web Vitals and performance optimization from an AI specialized in web performance analysis.
031
Stoyan Stefanov @stoyan.me · 31/12/2025
Web Performance Calendar day 31 article 5/5: @infrequently.org investigates SPA usage patterns showing that users often trigger only ~1 soft navigation per page load. If the heavy upfront JS costs aren’t being amortized, what are SPA's performance benefits? calendar.perfplanet.com/2025/the-cur...
calendar.perfplanet.com
The Curious Case of the Shallow Session SPAs
Buried at the end of this year's instalment of my semi-annual series on network and device reality is a mystery: multiple, independent data sets from the Web Performance community indicate sites built...
091
Stoyan Stefanov @stoyan.me · 31/12/2025
Web Performance Calendar day 31 article 4/5: @twnsnd.com on Compression Dictionaries to dramatically shrink responses (60–90% smaller than Brotli/GZIP). Why adoption is slow. Practical architectural decisions and implementation tips to get huge bandwidth wins. calendar.perfplanet.com/2025/from-th...
calendar.perfplanet.com
From Theory to Tiny: Implementing Compression Dictionaries
Compression Dictionary Transport became an official IETF Proposed Standard this September (congratulations to Yoav Weiss & Pat Meenan 🎉). If you don't know what they are, I recommend watching Pat's wo...
195
Stoyan Stefanov @stoyan.me · 31/12/2025
Web Performance Calendar day 31 article 3/5: Can AI meaningfully help with real-world performance analysis? @webx.bsky.social explores how to train AI/LLM agents to interpret complex browser data (like DevTools traces) into actionable insights. calendar.perfplanet.com/2025/teachin...
calendar.perfplanet.com
Teaching Agents about Performance insights
AI is kinda everywhere! Everyone is shipping AI features or Agents, but few of those systems can reason about the complex reality of performance data. This session is a deep dive story into the jour...
020
Stoyan Stefanov @stoyan.me · 31/12/2025
Web Performance Calendar day 31 article 2/5: @keerthanak17.bsky.social on making friends with Chrome DevTools and transforming it into a powerful tool for deep understanding, debugging, and improving of real-world web performance calendar.perfplanet.com/2025/chrome-...
calendar.perfplanet.com
Chrome DevTools Features I Use All the Time (and Why You Should Too)
Most developers open Chrome DevTools, check a couple of network requests, maybe refresh the page once or twice — and that's it. I used to do the same. Over time, DevTools became something else entir...
0242
Stoyan Stefanov @stoyan.me · 31/12/2025
Web Performance Calendar day 31 article 1/5: Tsvetan Stoychev shares that BasicRUM (open-source Real User Monitoring tool) will have its source code released Q1 2026. Self-hosted, privacy-friendly, with AI-powered insights & dashboards to spot perf issues calendar.perfplanet.com/2025/open-so...
calendar.perfplanet.com
Open Source RUM with BasicRUM
It's been a long, busy year but my friend Faisal and I stayed focused on building BasicRUM. After work, we pushed countless commits from a cozy café in Munich. The important news is that we're wrappi...
040
Stoyan Stefanov @stoyan.me · 30/12/2025
New blog post about subsetting a ligature-heavy font highperformancewebfonts.com/read/subsett... Almost always we subset based on text. But in my case, a more fine-tuned glyph-based approach saves 91% of bytes as opposed to 74% in the usual way. Worth it?
000
Reposted by Stoyan Stefanov
Sergey Chernyshev @sergeyche.dev · 30/12/2025
Our Web Performance Journey guide is live on PerfPlanet Calendar!
043
Stoyan Stefanov @stoyan.me · 30/12/2025
Web Performance Calendar day 30 with @sergeyche.dev, Eric Goldstein and Alex Chernyshev on mastering perf: get business to care, link UX speed to outcomes, set thresholds, understand real users with percentiles, trends, distributions, tie to business metrics calendar.perfplanet.com/2025/7-steps...
calendar.perfplanet.com
7 Steps of a Web Performance Journey
This year, Sergey Chernyshev, Eric Goldstein, and Alex Chernyshev - members of the NY Web Performance meetup - decided to collaborate on the future of the UX Speed Calculator tool Sergey created a few...
050
Stoyan Stefanov @stoyan.me · 29/12/2025
I added a little feature to sightread.org to remove the chrome so I can screen-record exercises UI-free and post them as Instagram reels. This way folks can squeeze a bit of practice while scrolling. If that sounds like you: www.instagram.com/sightreadorg/
sightread.org
SightRead.org
000
Reposted by Stoyan Stefanov
Paul Calvano @paulcalvano.bsky.social · 29/12/2025
My contribution to this years Web Performance Calendar is all about Third Parties and Single Points of Failure (SPOF). Based on @httparchive.org data I found that 67% of websites have at least 1 render blocking third party - and quite a few of them are SPOF risks!
0104
Stoyan Stefanov @stoyan.me · 29/12/2025
Web Performance Calendar day 29 with @paulcalvano.bsky.social's research on 3rd parties, SPOF, and the need to test and monitor these. 67% of sites out there have at least 1 render-blocking external dependency. calendar.perfplanet.com/2025/third-p...
calendar.perfplanet.com
Third Parties and Single Points of Failure
You've heard it many times - third party content can easily cause an otherwise well performing website to become sluggish and slow. And depending on how this content is loaded, it can also introduce s...
030
Reposted by Stoyan Stefanov
Duffeh @duffeh.bsky.social · 28/12/2025
My article for Performance Calendar is live, looking at tips to help focus when doing performance traces.
0133
Stoyan Stefanov @stoyan.me · 28/12/2025
Web Performance Calendar day 28 when Ian Duffy shows us how to tame Chrome’s Performance panel: reduce noise, search fast, annotate, use Insights, and customize tracks calendar.perfplanet.com/2025/tips-fo...
calendar.perfplanet.com
Tips for making the Performance Panel less overwhelming
Introduction The Performance Panel is used for detailed investigations on traces captured during page load or during user interactions. It's a critical tool for understanding and debugging performanc...
0133
Stoyan Stefanov @stoyan.me · 27/12/2025
Web Performance Calendar day 27 with @nucliweb.net on using Chrome DevTools for fun and profit: inspect heavy files in Network panel, monitor Core Web Vitals, record performance traces, validate optimizations, and more. calendar.perfplanet.com/2025/chrome-...
calendar.perfplanet.com
Chrome DevTools for Debugging Web Performance
This is a step-by-step guide on how I use Chrome DevTools (DevTools from now on) to detect Web Performance issues on a website, as well as validate hypotheses to fix some of the problems found. Discl...
0127
Stoyan Stefanov @stoyan.me · 26/12/2025
Web Performance Calendar day 26 with Sébastien Mischler on HTML streaming/flushing and how this old trick (featured in the first edition of the calendar) applies to today's CSR world. Show content now, not after JS finishes thinking. Fast pages, happy users. calendar.perfplanet.com/2025/revisit...
calendar.perfplanet.com
Revisiting HTML streaming for modern web performance
Introduction Modern web performance issues often come from delayed rendering rather than network speed. Client-side hydration and heavy JavaScript pipelines can prevent browsers from showing content ...
1184
Stoyan Stefanov @stoyan.me · 25/12/2025
Web Performance Calendar X-mas edition with Nicolas Hodin on BFCache: a huge UX win, but easy to break with Cache: no-store, unload handlers, iframes, or long-lived connections calendar.perfplanet.com/2025/chasing...
calendar.perfplanet.com
Chasing BFCache navigations
What is BFCache? The Back/Forward Cache, or BFCache, is a browser mechanism that allows a page to be restored instantly when a user uses the browser's Back or Forward buttons. Unlike a simple HTTP c...
141
Stoyan Stefanov @stoyan.me · 24/12/2025
New blog post "Lazy-Loading Optional Fonts with Native Browser API" describing a wee trick I do on sightread.org to load music glyphs, optionally highperformancewebfonts.com/read/lazy-lo...
020
Reposted by Stoyan Stefanov
Ryan Townsend @twnsnd.com · 23/12/2025
I’m using No-Vary-Search in production already—you probably should be too! @tunetheweb.com has the details 👇🏻
0114
Reposted by Stoyan Stefanov
Barry Pollard @tunetheweb.com · 23/12/2025
This one got released rather quietly and I think could do with a bit more attention! Read about how to avoid caching performance penalties due to tracking query params and the like!
2188
Stoyan Stefanov @stoyan.me · 24/12/2025
Web Performance Calendar day 24 with @programmingart.bsky.social on TTFB. Yes, it's one of those X-mas Eves where we cuddle by the fire, drop everything and immerse into re-learning and re-evaluating what we thought we knew about a concept we use daily calendar.perfplanet.com/2025/ttfb-do...
calendar.perfplanet.com
TTFB doesn't mean what you think it means
Time-To-First-Byte (TTFB) is a popular performance metric, yet there are many problems and nuances with it. Not only does it have several different definitions, it is usually also a "compound" metric,...
0113
Stoyan Stefanov @stoyan.me · 23/12/2025
Web Performance Calendar day 23 with @tunetheweb.com on configuring caches to ignore non-content-affecting URL parameters and reclaim performance. No more of this query string = cache miss nonsense. calendar.perfplanet.com/2025/fixing-...
calendar.perfplanet.com
Fixing the URL params performance penalty
Tales of two pages… What's the difference between these two pages?: https://www.example.com/ https://www.example.com/?utm_source=email I mean they've got different URLs, but many of us would ...
1142
Stoyan Stefanov @stoyan.me · 21/12/2025
Web Performance Calendar day 21 with Conor McCarthy and lessons learned from web perf client site reviews calendar.perfplanet.com/2025/insight...
calendar.perfplanet.com
Insights from 100 site speed reviews in 2025
Over the course of 2025, I have completed 100 site speed reviews at DebugBear. This is a free service we offer to trial accounts looking for a brief assessment of their current web performance. Reque...
0123
Stoyan Stefanov @stoyan.me · 20/12/2025
Web Performance Calendar day 20 with @verlok.bsky.social on CLS-friendly skeletons. Can you "load more" while keeping layout shifts to a minimum? calendar.perfplanet.com/2025/optimiz...
calendar.perfplanet.com
Optimizing CLS for Infinite Scroll and Load More
Even though Cumulative Layout Shift (CLS) has been a well-known metric for about five years now, I still frequently encounter negative scores on major websites during my web performance audits. The m...
020
Stoyan Stefanov @stoyan.me · 19/12/2025
Web Performance Calendar day 19 with Alex Podelko on how performance engineering has evolved with computing: from mainframes to distributed systems, web/mobile, cloud, AI. Knowing your history may help reduce wheel-reinvention and encourage skills reuse calendar.perfplanet.com/2025/a-short...
calendar.perfplanet.com
A Short History of Performance Engineering
A long time ago, in 2014, I did the “A Short History of Performance Engineering” Ignite talk at the Velocity conference (slides and video). A lot of new developments have happened since 2014, so here ...
142
Stoyan Stefanov @stoyan.me · 18/12/2025
Web Performance Calendar day 18 with Amrik Malhans on breaking down LCP to pinpoint what's slowing down the page exactly and where to focus your UX-optimizing efforts calendar.perfplanet.com/2025/the-ana...
calendar.perfplanet.com
The Anatomy of LCP - A Deep Dive into Sub-Parts
Optimizing LCP (Largest Contentful Paint) is not just reducing the file size of your images, there's a lot more that goes into optimizing the loading strategy - and you can only grasp where the bottle...
093
Stoyan Stefanov @stoyan.me · 17/12/2025
Web Performance Calendar day 17 with Adam Zachary Wasserman on outperforming modern frameworks with this one weird little trick calendar.perfplanet.com/2025/the-old...
calendar.perfplanet.com
The Old Ways Are the Best: 100 Lighthouse, 0ms TBT, 32ms Queries
How mainframe-era techniques and native browser APIs outperform modern frameworks The Numbers Before the philosophy, the receipts: Frontend (multicardz.com): 32KB JavaScript bundle (15% of mini...
074