First Input Delay (FID) is the clip from erstwhile a idiosyncratic archetypal interacts with your leafage to erstwhile the leafage responds. It measures responsiveness and is 1 of the 3 Core Web Vitals metrics Google uses to measurement leafage experience. Example interactions include: Some events similar scrolling oregon zooming are not counted. Let’s look astatine however accelerated your FID should beryllium and however to amended it. A bully FID worth is little than 100 sclerosis and should beryllium based connected Chrome User Experience Report (CrUX) data. This is information from existent users of Chrome who are connected your tract and person opted successful to sharing this information. You request 75% of interactions to respond successful little than 100 ms. Your leafage whitethorn beryllium classified into 1 of the pursuing buckets: 95.3% of sites are successful the bully FID bucket arsenic of April 2023. This is averaged crossed the site. As we mentioned, you request 75% of interactions to respond successful little than 100 sclerosis to amusement arsenic good here. The bulk of pages connected astir sites walk the CWV cheque for FID. I don’t judge this is truly the champion method to measurement responsiveness, and Google volition beryllium replacing FID with Interaction to Next Paint (INP) successful March 2024. Instead of looking astatine lone the archetypal input, INP looks astatine the latency of each the interactions a user makes. When we ran a study connected Core Web Vitals, we recovered that astir nary 1 needs to interest astir FID connected desktop connections, and precise fewer request to interest astir it connected mobile. Few sites request to interest astir FID, adjacent connected slower connections, arsenic astir of their pages are passing. Our page-level information from the survey told the aforesaid story. FID doesn’t look to beryllium a interest for most pages. The lone FID fig that matters comes from the Chrome User Experience Report (CrUX), which is information from existent users of Chrome who take to stock their data. This is called tract information and gives you the champion thought of real-world FID show crossed antithetic web conditions, devices, caching, etc. It’s besides what you’ll really beryllium measured connected by Google for Core Web Vitals. For consistent, repeatable tests, there’s besides laboratory data, which tests with the aforesaid conditions. FID isn’t disposable successful laboratory tests due to the fact that the investigating tools don’t click anything. However, you tin usage Total Blocking Time (TBT) arsenic an alternate metric. By improving the processes that are blocked, you volition besides beryllium improving your FID. Pagespeed Insights pulls page-level tract information that you can’t different query successful the CrUX dataset. It besides gives you root information truthful you tin comparison leafage show to the full tract and runs laboratory tests based connected Google Lighthouse to springiness you TBT. You tin get CrUX information successful Google Search Console that is bucketed into the categories of good, needs improvement, and poor. Clicking into 1 of the issues gives you a breakdown of leafage groups that are impacted. The groups are pages with akin values that apt usage the aforesaid template. You marque the changes erstwhile successful the template, and that volition beryllium fixed crossed the pages successful the group. If you privation some laboratory information and tract information astatine scale, the lone mode to get that is done the PageSpeed Insights API. You tin link to it easy with Ahrefs’ Site Audit and get reports detailing your performance. This is escaped for verified sites with an Ahrefs Webmaster Tools (AWT) account. Note that the Core Web Vitals information shown volition beryllium determined by the user-agent you prime for your crawl during the setup. If you crawl from mobile, you’ll get mobile CWV values from the API. JavaScript competing for the main thread. There’s conscionable 1 main thread, and JavaScript competes to tally tasks on it. JavaScript has to instrumentality turns to tally connected the main thread. It’s similar a one-burner stove wherever you person to navigator 1 point astatine a time, but you person aggregate dishes to cook. While a task is running, a leafage can’t respond to idiosyncratic input. This is the hold that is felt. The longer the task, the longer the hold experienced by the user. The breaks betwixt tasks are the opportunities that the leafage has to power to the idiosyncratic input task and respond to what they wanted to do. This is worse connected slower devices, arsenic JavaScript tin instrumentality longer to process and origin longer delays. In PageSpeed Insights, you’ll spot a TBT tab that has issues related to the main thread being blocked. These are the issues you’ll privation to lick successful bid to amended FID. Most pages walk FID checks. However, if you request to enactment connected FID, determination are conscionable a fewer items you tin work on: If you tin trim the magnitude of JavaScript running, bash that first. Focus connected the JavaScript aboriginal connected successful the leafage load. If determination hasn’t been a batch of optimization done, the aboriginal portion of the load process tin beryllium filled with a ton of JavaScript each trying to tally connected that azygous main thread. Any JavaScript you don’t request instantly should beryllium loaded later. There are 2 main ways to bash that—defer and async attributes. These attributes tin beryllium added to your publication tags. Usually, a publication being downloaded blocks the parser portion downloading and executing. Async volition fto the parsing and downloading hap astatine the aforesaid clip but inactive artifact parsing during the publication execution. Defer volition not artifact parsing during the download and lone execute aft the HTML has finished parsing. Which should you use? For thing that you privation earlier oregon that has dependencies, I’d thin toward async. For instance, I thin to usage async connected analytics tags truthful that much users are recorded. You’ll privation to defer thing that is not needed until aboriginal oregon doesn’t person dependencies. The attributes are beauteous casual to add. Check retired these examples: Normal: <script src="https://www.domain.com/file.js"></script> Async: <script src="https://www.domain.com/file.js" async></script> Defer: <script src="https://www.domain.com/file.js" defer></script> Another enactment is to interruption up the JavaScript truthful that it runs for little time. You instrumentality those agelong tasks that hold effect to idiosyncratic input and interruption them into smaller tasks that artifact for little time. This is done with code splitting, which breaks the tasks into smaller chunks. There’s besides the enactment of moving immoderate of the JavaScript to a service worker. I did notation that JavaScript competes for the 1 main thread successful the browser, but this is simply a workaround that gives it different spot to run. There are immoderate trade-offs arsenic acold arsenic caching goes. And the work idiosyncratic can’t entree the DOM, truthful it can’t bash immoderate updates oregon changes. If you’re going to determination JavaScript to a work worker, you truly request to person a developer who knows what they are doing. If you’re connected a JavaScript framework, there’s a batch of JavaScript needed for the leafage to load. That JavaScript tin instrumentality a portion to process successful the browser, and that tin origin delays. If you usage prerendering oregon SSR, you displacement this load from the browser to the server. Even though FID is being replaced by INP successful March 2024, it’s inactive worthy moving connected improving FID. The aforesaid things you enactment connected to amended TBT and FID should besides amended INP. If you person immoderate questions, connection maine on Twitter.FID data
Measuring FID for a azygous URL
Measuring FID for galore URLs oregon an full site
1. Reduce the magnitude of JavaScript
2. Load JavaScript aboriginal if possible
3. Break up long tasks
4. Use web workers
5. Use prerendering oregon server-side rendering (SSR)
Final thoughts