HTML - defer Attribute
HTML defer attribute is a boolean attribute that specifies the script is downloaded parallel to parsing the page, and is executed after parsing the page.
It is used only for external scripts (should only be used if the src attribute is present). In other words, when you use the defer attribute in your script tag, it tells the browser to download the script file while it continues parsing the HTML document.
If the src attribute is not present within the <script> the defer attribute would not affect it.
Syntax
<script defer></script>
Applies On
Below listed element allow using of the HTML defer attribute
| Element | Description |
|---|---|
| <script> | HTML <script> tag is used to import script to HTML document. |
Example of HTML defer attribute
Bellow examples will illustrate the HTML defer attribute, where and how we should use this attribute!
Defer attribute with script element
In the following example, we are going to use the defer attribute with the <script> element to download the script parallelly while parsing the page.
<!DOCTYPE html>
<html lang="en">
<head>
<title>HTML 'defer' attribute</title>
</head>
<body>
<!--HTML 'defer' attribute-->
<h3>Example of the HTML 'defer' attribute</h3>
<!--'defer' attribute within the script element-->
<p>
If the 'src' attribute is not present in
script element, it would have no effect</p>
<script src="index.js" defer></script>
</body>
</html>
index.js file
alert("Hello world");
Check presence of defer attribute
Considering the another scenario, where we are going to run javascript code to check whether defer attribute is present in the script element element or not.
<!DOCTYPE html>
<html lang="en">
<head>
<title>HTML 'defer' attribute</title>
<style>
div {
color: green;
font-weight: bold;
font-size: 20px;
}
button {
width: 100px;
padding: 15px;
cursor: pointer;
color: white;
background-color: green;
border: none;
border-radius: 5px;
}
</style>
</head>
<body>
<!--HTML 'defer' attribute-->
<h3>Example of the HTML 'defer' attribute</h3>
<!--'defer' attribute within the script element-->
<p>If the 'src' attribute is not present in script
element, it would have no effect</p>
<div id='res'></div>
<br>
<button onclick="check()">
Check
</button>
<script src="index.js"
id="demo"
defer>
</script>
<script>
function check() {
let x = document.getElementById('demo').defer;
let res = document.getElementById('res');
res.innerHTML = "Is the 'defer' attribute present" +
"within the 'script' element or not? " + x;
}
</script>
</body>
</html>
Supported Browsers
| Attribute | ![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|
| defer | Yes 18.0 | Yes 10.0 | Yes 3.6 | Yes 6.0 | Yes 15.0 |




