Node.js5 min read
URL Parsing and Manipulation
Parse and build URLs in Node.js. Handle query parameters easily.
Michael Torres
December 19, 2025
0.0k0
URL Parsing
Parse and manipulate URLs with the URL class.
Parsing URLs
const myURL = new URL('https://example.com:8080/path?name=john&age=30#section');
console.log(myURL.protocol);
console.log(myURL.hostname);
console.log(myURL.port);
console.log(myURL.pathname);
console.log(myURL.search);
console.log(myURL.hash);
Output:
https:
example.com
8080
/path
?name=john&age=30
#section
Query Parameters
const url = new URL('https://api.example.com/users?role=admin&status=active');
console.log(url.searchParams.get('role'));
console.log(url.searchParams.get('status'));
url.searchParams.append('limit', '10');
url.searchParams.set('role', 'user');
url.searchParams.delete('status');
console.log(url.toString());
Output:
admin
active
https://api.example.com/users?role=user&limit=10
Building URLs
const apiURL = new URL('/api/users', 'https://example.com');
apiURL.searchParams.set('page', '1');
apiURL.searchParams.set('limit', '20');
console.log(apiURL.toString());
Output: https://example.com/api/users?page=1&limit=20
Real Example: API Client
function fetchUsers(filters) {
const url = new URL('https://api.example.com/users');
if (filters.role) {
url.searchParams.set('role', filters.role);
}
if (filters.page) {
url.searchParams.set('page', filters.page);
}
if (filters.limit) {
url.searchParams.set('limit', filters.limit);
}
return fetch(url.toString());
}
fetchUsers({ role: 'admin', page: 2, limit: 50 });
Real Example: Express Routes
const express = require('express');
const app = express();
app.get('/search', (req, res) => {
const query = req.query.q;
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 10;
const nextURL = new URL(req.originalUrl, `http://${req.headers.host}`);
nextURL.searchParams.set('page', page + 1);
res.json({
results: [],
nextPage: nextURL.toString()
});
});
app.listen(3000);
URLSearchParams Standalone
const params = new URLSearchParams();
params.append('name', 'John Doe');
params.append('email', 'john@example.com');
console.log(params.toString());
for (const [key, value] of params) {
console.log(`${key}: ${value}`);
}
Output:
name=John+Doe&email=john%40example.com
name: John Doe
email: john@example.com
Key Takeaway
URL class makes parsing easy. Use searchParams for query strings. Build URLs programmatically. Automatically handles encoding.
#Node.js#URL#Web#Parsing