Skip to main content

Command Palette

Search for a command to run...

Template Literals in JavaScript

Updated
6 min readView as Markdown

Working with strings is one of the most common things you do in JavaScript.

You use strings for:

  • Messages

  • Usernames

  • Dynamic content

  • HTML templates

  • API responses

  • Logging

  • URLs

Before template literals existed, creating dynamic strings was often messy and difficult to read.

Template literals made string handling cleaner, easier, and more modern.

In this blog, you’ll learn:

  • Problems with traditional string concatenation

  • Template literal syntax

  • Embedding variables inside strings

  • Multi-line strings

  • Real-world use cases


The Problem with Traditional String Concatenation

Before template literals, developers used:

  • + operator

  • String concatenation

to combine strings and variables.


Example Using Concatenation

let name = "Alex";
let age = 22;

let message = "My name is " + name + " and I am " + age + " years old.";

console.log(message);

Output

My name is Alex and I am 22 years old.

What’s Wrong with This?

For small strings, it looks manageable.

But as strings become larger:

  • Readability decreases

  • Quotes become messy

  • Spaces are easy to forget

  • Debugging becomes harder


Long Concatenation Example

let username = "Alex";
let city = "Delhi";

let text = "Hello " + username + 
", welcome to our website. " +
"You are currently logged in from " + city + ".";

console.log(text);

This quickly becomes difficult to read.


Template Literals to the Rescue

Template literals provide a cleaner way to create strings.

They were introduced in modern JavaScript (ES6).


Template Literal Syntax

Template literals use:

` `

These are called backticks.

Not:

  • Single quotes ' '

  • Double quotes " "


Basic Example

let name = "Alex";

let message = `Hello ${name}`;

console.log(message);

Output

Hello Alex

Embedding Variables in Strings

This feature is called:

String Interpolation

Variables can be inserted directly inside strings using:

${variable}

Example

let product = "Laptop";
let price = 50000;

let text = `The price of \({product} is ₹\){price}`;

console.log(text);

Output

The price of Laptop is ₹50000

String Interpolation Visualization

Variable:
name = "Alex"

Template Literal:
`Hello ${name}`

        ↓

Final String:
"Hello Alex"

Comparing Old vs Modern Approach

Traditional Concatenation

let name = "Alex";
let city = "Delhi";

let text = "My name is " + name + " and I live in " + city;

Using Template Literals

let text = `My name is \({name} and I live in \){city}`;

Much cleaner and easier to read.


Before vs After Template Literals

Before:
"Hello " + name + ", welcome to " + city

After:
`Hello \({name}, welcome to \){city}`

Template literals reduce visual clutter.


Multi-Line Strings

Before template literals, multi-line strings were awkward.


Old Way

let text = "Line 1\n" +
"Line 2\n" +
"Line 3";

Hard to read and maintain.


Using Template Literals

let text = `
Line 1
Line 2
Line 3
`;

console.log(text);

Output

Line 1
Line 2
Line 3

This looks much more natural.


Why Multi-Line Strings Matter

Multi-line strings are useful for:

  • HTML templates

  • Email templates

  • SQL queries

  • JSON structures

  • Large text blocks


Real-World Example: HTML Template

let username = "Alex";

let html = `
  <div>
    <h1>Welcome ${username}</h1>
    <p>Thanks for visiting our website.</p>
  </div>
`;

console.log(html);

Template literals are heavily used in frontend development.


Expressions Inside Template Literals

You can even run expressions inside ${}.


Example

let a = 10;
let b = 20;

console.log(`Sum = ${a + b}`);

Output

Sum = 30

More Complex Example

let marks = 85;

let result = `You are ${marks >= 40 ? "Pass" : "Fail"}`;

console.log(result);

Output

You are Pass

Use Cases in Modern JavaScript

Template literals are used everywhere in modern JavaScript.


1. Dynamic Messages

let user = "Alex";

console.log(`Welcome back, ${user}`);

2. HTML Generation

let product = "Phone";

let card = `
  <div>
    <h2>${product}</h2>
  </div>
`;

3. API URLs

let userId = 101;

let url = `https://api.example.com/users/${userId}`;

4. Logging

let score = 95;

console.log(`Current score: ${score}`);

5. Email Templates

let name = "Alex";

let email = `
Hello ${name},

Your account has been successfully created.
`;

Why Developers Prefer Template Literals

Better Readability

Code becomes easier to understand.


Cleaner Syntax

Less + operator clutter.


Easier Maintenance

Large strings are easier to edit.


Supports Multi-Line Strings

No need for \n.


Dynamic Content Becomes Simpler

Embedding variables feels natural.


Common Beginner Mistakes

Using Quotes Instead of Backticks

Wrong:

"Hello ${name}"

This will not interpolate variables.


Correct Version

`Hello ${name}`

Forgetting ${}

Wrong:

`Hello name`

Correct:

`Hello ${name}`

Practice Exercise

Task 1

Create variables:

let name = "John";
let age = 25;

Use template literals to create:

My name is John and I am 25 years old.

Task 2

Create a multi-line message:

Welcome John

Your account was created successfully.

Use template literals only.


Visual Diagram: String Interpolation Flow

Variables
name = "Alex"
city = "Delhi"

        ↓

Template Literal
`Hello \({name} from \){city}`

        ↓

Final Output
"Hello Alex from Delhi"

Final Thoughts

Template literals are one of the simplest but most powerful improvements in modern JavaScript.

They make code:

  • Cleaner

  • Easier to read

  • Easier to maintain

The core benefits are:

  • String interpolation

  • Multi-line strings

  • Better readability

Once you start using template literals, going back to traditional string concatenation feels painful.

That’s why template literals are now standard practice in modern JavaScript development.