async vs defer in script tag in JavaScript

async vs defer in script tag in JavaScript

When it comes to loading external JavaScript files on your website, should you use async or defer? Both methods have their own advantages and disadvantages, and there is no definitive answer. Ultimately, it depends on your specific needs. This blog post will explain what async and defer actually is and explore the differences between async and defer, so you can make an informed decision about which method is best for your use case.

What is async in script tag in JavaScript?

Async in script tag in JavaScript is a way to load scripts asynchronously. That means, if a script is async, it will be loaded independently of other scripts on the page, and will not block the page from loading.

If you have a page with several external scripts, loading them all asynchronously can speed up the page load time, because the browser can download and execute them in parallel.

To use async, simply add the async attribute to your script tag:

<script async src="script.js"></script>
Code language: JavaScript (javascript)

What is defer in script tag in JavaScript?

By using the defer attribute in HTML, the browser will load the script only after parsing (loading) the page. This can be helpful if you have a script that is dependent on other scripts, or if you want to improve the loading time of your page by loading scripts after the initial page load.

To use defer, simply add the defer attribute to your script tag:

<script defer src="script.js"></script>
Code language: JavaScript (javascript)

async and defer – Actual difference between the two

The async and defer attributes both allow the browser to continue parsing the HTML document while JavaScript files are being downloaded, but they differ in when those files are executed.

Async downloads and executes JavaScript as soon as it’s available, while defer attribute waits until the HTML document has been parsed before downloading and executing any external scripts.

In most cases, it doesn’t matter which attribute you use – both will improve performance by allowing the browser to continue parsing while waiting for JavaScript to download. However, there are some situations where one attribute may be preferable to the other.

Advantages of using the defer attribute

There are several advantages to using the defer attribute in your script tags:

Deferred scripts are guaranteed to run after the page has been loaded and parsed, so they can’t slow down the initial page load.

Since deferred scripts are not parsed until after the page has loaded, they can’t block the parsing of other elements on the page (such as images).

Deferred scripts can be updated independently of the rest of the page, which means that if you change a deferred script, you don’t have to re-parse and re-render the entire page.

Disadvantages of using the defer attribute

One is that it can potentially delay your page from loading. If you have a lot of scripts that use defer, they could all be trying to load at the same time and slow down your page.

Another disadvantage is that older browsers might not support defer, so your scripts might not load at all for some users.

Advantages of using the async attribute

When loading a large JavaScript file, using the async attribute can be beneficial. It tells the browser that it can go ahead and continue parsing the HTML document while the JavaScript file is being downloaded. This can reduce the perceived load time of the page because the browser can start to render elements sooner.

Disadvantages of using the async attribute

One of the biggest disadvantages of using async is that it can break the render-blocking CSS rule. This rule is important for ensuring that the page loads correctly and doesn’t appear blank while the JavaScript file is loading. If async is used, the CSS file will be downloaded as soon as the JavaScript file starts loading, which can cause problems if the JavaScript file is large or takes a long time to load.

Another disadvantage of async is that it can delay the loading of other resources on the page, such as images. This can cause a significant delay in the overall loading time of the page.

Finally, async can also cause issues with certain types of user scripts and extensions. These user scripts and extensions rely on being able to modify the DOM after the page has loaded, but if async is used they may not be able to do this because the DOM might not have already loaded by the time they run.


If you’re working with JavaScript, it’s important to understand the difference between async and defer attributes. Async allows your script to run as soon as it’s loaded, without blocking other elements on the page. Defer means your script will only execute after the page has finished loading. In most cases, async is the better option — but there are exceptions. Understanding when to use each one will help you create a faster and more efficient website.

In this blog post, we have seen how async and defer attributes work and some of the important points to be noted when you work with them. Try out multiple examples and see how they work to develop an in-depth understanding.

Thank you for reading, and feel free to share this blog.

Happy coding! 🙂

Become The Best JavaScript Developer 🚀
Codedamn is the best place to become a proficient developer. Get access to hunderes of practice JavaScript courses, labs, and become employable full-stack JavaScript web developer.

Free money-back guarantee

Unlimited access to all platform courses

100's of practice projects included

ChatGPT Based Instant AI Help (Jarvis)

Structured Full-Stack Web Developer Roadmap To Get A Job

Exclusive community for events, workshops

Start Learning

Sharing is caring

Did you like what Mridul Anand Singh wrote? Thank them for their work by sharing it on social media.