JavaScript defer checker
Find JavaScript tags on a webpage and display their defer and async attributes.
Latest submissions
What the JavaScript defer checker does
This tool scans a webpage for script elements and reports which ones use the defer or async attributes, which load without these attributes, and which are embedded inline. It helps you understand how JavaScript is loaded and whether it may block rendering.
By default, a script element blocks HTML parsing until the script is fetched and executed. The defer attribute tells the browser to download the script in parallel and execute it after the document has been parsed. The async attribute downloads in parallel and executes as soon as it is ready, which can interrupt parsing.
Why script loading matters
Render-blocking scripts delay the moment a user can see and interact with the page. Moving non-critical scripts to deferred loading can improve perceived performance and core web vitals. It is one of the more impactful performance changes available on script-heavy pages.
The choice between defer and async depends on the script. Scripts that depend on the DOM or on other scripts usually need defer to preserve execution order. Independent scripts, such as analytics, can use async. Inline scripts cannot be deferred, so they should be minimized and placed thoughtfully.
How to interpret the result
The report shows the script inventory and highlights those without defer or async attributes. Not every script needs an attribute: some must execute immediately, and inline scripts cannot use them. But a large number of non-deferred external scripts is a signal to review loading strategy.
Check the order and dependencies. Deferred scripts execute in document order, which is often what application code expects. Async scripts execute whenever they are ready, so they should not depend on each other. Embedded scripts should be evaluated for whether they can move to external files or be wrapped in event listeners.
Common script loading issues
- Render-blocking third-party scripts. Analytics and widgets placed in the head without defer or async.
- Too many scripts. Each request adds overhead; consolidation may help.
- Wrong attribute choice. Async used where execution order matters.
- Large inline scripts. Inline code cannot be cached and delays parsing.
- Scripts in the head. Moving non-critical scripts to the end of the body or deferring them can help.
Practical workflow
Inventory the scripts on key templates. Identify those needed for the initial view and defer or async the rest where safe. Test the page after each change, since altering execution order can break dependencies. Re-check after adding third-party tags, which are a common source of new render-blocking scripts.
Limitations
The checker reports script attributes present in the HTML response. It does not measure actual loading performance, and scripts injected by other scripts may not appear in the initial markup.
Similar tools
Minify JavaScript by removing unnecessary characters to reduce script size.
Count the resources a webpage requests and review the breakdown by type.
Measure the total size of a webpage, including all loaded resources.
Popular tools
Check whether images on a webpage have alt attributes for accessibility and image SEO.
Measure the total size of a webpage, including all loaded resources.
Check whether a page is set to noindex through meta tags, HTTP headers, or robots.txt.
Compare the amount of visible text to HTML code on a webpage.