HTML <script> Tag: Usage, Attributes, and Real-World Examples

By Cristian G. Guasch •  Updated: 09/25/23 •  10 min read

If you’re diving into the world of web development, there’s one HTML tag that you’ll likely come across frequently – the <script> tag. It’s a pretty crucial piece in the interactive web puzzle, and I’m here to give you a solid introduction to it. Used primarily for embedding or referencing JavaScript within an HTML document, the <script> tag has an array of attributes and uses we’re about to explore.

In our digital age where dynamic websites are the norm, understanding how to use this tag effectively is essential for any aspiring developer. Let’s break down its usage, delve into its attributes, and look at some examples that should hopefully make your journey with the <script> tag a lot smoother.

Knowing your way around this important component will not only elevate your coding skills but also allow you to create more engaging user experiences. So let’s dive right in! We’ll start with basic usage and then gradually move on to more advanced topics like asynchronous loading and deferred execution.

Understanding the HTML <script> Tag

Let’s dive right into the world of HTML scripting. In the realm of web development, understanding HTML tags is crucial and among them, one tag stands out due to its power and flexibility – the <script> tag.

The <script> tag in HTML is used primarily for embedding or referencing external JavaScript code within an HTML document. Now, you might be wondering why it’s so important. Well, this particular tag breathes life into static web pages by enabling dynamic content. It’s like the magic wand that turns a simple text page into an interactive web application.

Take a look at this basic example:

<!DOCTYPE html>

<h2>My First Web Page</h2>

<p>Click "Try it" to display Date and Time.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

function myFunction() {
  document.getElementById("demo").innerHTML = Date();


In this snippet, when you click on “Try it”, current date and time are displayed on your screen. The magic behind this? Yep, you guessed it – it’s our <script> tag!

Now let’s touch on some technicalities about how we can use this powerful tool effectively. The most common way of using the <script> tag is by placing JavaScript code directly inside it as shown in our example above. However, there are instances where we may want to link to an external JavaScript file instead — that’s when we introduce attributes!

Using ‘src’ attribute with our <script> tag lets us specify the URL of an external script file:

<script src="myscript.js"></script>

Here ‘myscript.js’ is an external JavaScript file.

It’s important to note a common mistake developers make – forgetting the closing </script> tag. Even when linking an external script, it’s essential to include the closing </script> tag, as it ensures proper rendering by web browsers.

A quick tip before we wrap up this section: placement of your <script> tags can impact load times and performance of your webpage. It’s generally best practice to place scripts at the end of the body element. This way, they won’t block loading of other elements on your page.

So there you have it! We’ve explored what HTML <script> tag is, how to use it with examples, some attributes that come in handy and common mistakes to avoid. Stay tuned for more insights into HTML tagging in our upcoming sections!

Attributes of the HTML <script> Tag

Diving straight into our topic, let’s talk about the attributes that you can use with the HTML <script> tag. These attributes provide additional information about how a script should behave and are defined inside the opening tag. Here’s a rundown of some main ones:

<script src="myscript.js"></script>

The browser will fetch and execute this external script before continuing with the rest of your page.

<script async src="myscript.js"></script>
<script defer src="myscript.js"></script>

Now, keep in mind these aren’t all mutually exclusive—sometimes they’re used together. One common mistake I see often is misunderstanding how async and defer work. They both affect how scripts load, but in different ways.

If both attributes are included on a single <script> tag (with an external source), then modern browsers will treat it as an asynchronous script, effectively ignoring ‘defer’. So be careful not to mix them up!

In contrast, older browsers that don’t support ‘async’ will ignore it and recognize ‘defer’, ensuring backward compatibility.

Here’s what it would look like:

<script async defer src="myscript.js"></script>

Hopefully these examples shed some light on how to correctly utilize these attributes!

Practical Examples of Using HTML <script> Tag

Diving right into the practical side, let’s check out a basic example of using the HTML <script> tag.

<!DOCTYPE html>

<h2>My First JavaScript Program</h2>

document.write("Hello World!");


In this snippet, we’ve used the <script> tag to inject some simple JavaScript code directly into our HTML document. When you run this code in your browser, it’ll display “Hello World!” on your screen.

However, not all scripts are written directly within an HTML document. Often, developers prefer to keep their JavaScript files separate for better organization and maintainability. If that’s what you’re aiming for, here’s how you’d use the <script> tag:

<!DOCTYPE html>

<h2>External JavaScript file</h2>

<script src="myscript.js"></script>


With src attribute in place, our <script> tag points towards an external .js file named “myscript.js”. Keep in mind though – if there’s no path defined before the filename (like /scripts/myscript.js), your browser will look for “myscript.js” in the same folder as the current HTML file.

Let me also point out a common mistake made while using this tag – forgetting to close it! The script tag must always be closed with </script>, regardless of whether it contains inline or external script.

<!-- This is WRONG -->
<script src="myscript.js">

<!-- This is RIGHT -->
<script src="myscript.js"></script>

Lastly, remember that any content inside a pair of <script> tags will be treated as a script unless specified by type attribute like CSS or JSON. However, it’s not mandatory as JavaScript is the default scripting language in HTML.

<script type="application/ld+json">
  "@context" : "",
  "@type" : "Article",
  "name" : "Example Article Name",
  "author" : {
    "@type" : "Person",
    "name" : "Author Name"

In this example, we’re defining a JSON-LD script for structured data in our HTML document. It’s just another way to use <script> tag based on your needs!

Common Mistakes and How to Avoid Them

Embarking on your HTML journey, you might find yourself in a bit of a muddle with the <script> tag. Don’t worry, we’re all human and mistakes are part of the learning process. I’m here to guide you through some common pitfalls and help you sidestep them.

One frequent misstep is not placing scripts correctly within your HTML document. Remember, scripts can impact the loading time of your page if not positioned properly. They’re typically placed either in the <head> or before closing </body> tag. But be careful about where they belong – scripts needed for initial page rendering should go into <head>, while those that aren’t immediately necessary could wait till rest of the content loads, so place them just before </body>.

<!DOCTYPE html>
    <title>Page Title</title>
    <script src="yourScript.js"></script> <!-- Scripts affecting initial rendering -->

<!-- Your content goes here -->

<script src="anotherScript.js"></script> <!-- Scripts not needed for initial rendering -->

Another common error is forgetting to attribute sources for external script files using src. If it’s an external script file, make sure to include its URL inside src attribute like this: <script src="yourScript.js"></script>.

Running into errors because your JavaScript code isn’t compatible with older browsers? It’s another issue developers often face when using inline scripting within HTML documents. To dodge this roadblock, wrap your inline JavaScript code within a CDATA section:

<script type='text/javascript'>
...Your JavaScript Code...

Also note that self-closing syntax isn’t allowed in HTML5 for script tags. So instead of writing <script src="yourScript.js"/>, always remember to close the tag like this: <script src="yourScript.js"></script>.

Finally, keep an eye out for synchronicity issues. When a browser reads your HTML document from top to bottom, script execution can pause the HTML parsing. To prevent this, use async or defer attributes with your <script> tags.

Now that you’re aware of these common mistakes and their remedies, you’ll be scripting like a pro in no time! As they say, forewarned is forearmed. So go ahead and conquer that code!

Conclusion: Mastering the Use of HTML <script> Tag

We’ve journeyed together through the ins and outs of the HTML <script> tag. By now, you should be well equipped to wield this essential tool in your web development arsenal.

The key points we’ve tackled include:

To recap on usage, here’s a quick example:

  alert("Hello, World!");

This script will display a pop-up alert with the text “Hello, World!”. Remember to place your scripts wisely within your HTML document!

While mastering any coding concept involves trial and error, there are a couple of common mistakes I’d advise you to avoid:

So don’t shy away from experimenting with different ways of utilizing this versatile tag and always keep refining your skills! As they say in coding- practice makes perfect!

Cristian G. Guasch

Hey! I'm Cristian Gonzalez, I created HTML Easy to help you learn HTML easily and fast.

Related articles