URL: https://www.progressiverobot.com/html-defer-async/

With HTML5, we get two new boolean attributes for the <^><script><^> tag: <^>async<^> and <^>defer<^>. <^>Async<^> allows execution of scripts asynchronously and <^>defer<^> allows execution only after the whole document has been parsed.

These two attributes are a must for increasing speed and performance of websites. They allow the elimination of render-blocking JavaScript where the page would have to load and execute scripts before finishing to render the page. Here's a usage example:

				
					
&lt;script defer src="/js/jquery.min.js"&gt;

&lt;/script&gt;





				
			

Async vs Defer

async illustration for: Async vs Defer

With <^>async<^>, the file gets downloaded asynchronously and then executed as soon as it's downloaded.

With <^>defer<^>, the file gets downloaded asynchronously, but executed only when the document parsing is completed. With <^>defer<^>, scripts will execute in the same order as they are called. This makes defer the attribute of choice when a script depends on another script. For example, if you're using jQuery as well as other scripts that depend on it, you'd use <^>defer<^> on them (jQuery included), making sure to call jQuery before the dependent scripts.

A good strategy is to use <^>async<^> when possible, and then <^>defer<^> when async isn't an option.

👉Note that both attributes don't have any effect on inline scripts.

Browser Support

Can I Use script-async? Data on support for the script-async feature across the major browsers from caniuse.com.