Template Literals in JavaScript
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:
+operatorString 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.
