How to Normalize Paths in Node.js

Normalizing file paths removes redundant separators, resolves relative segments like . and .., and standardizes path format for consistent file operations. As the creator of CoreUI with over 11 years of Node.js development experience, I use path.normalize() when processing user-provided paths, cleaning up file imports, and standardizing configuration paths. This method ensures paths are in their simplest canonical form while maintaining their relative or absolute nature.

Use path.normalize() to clean up messy paths by resolving relative segments and removing redundant separators.

const path = require('path')

// Clean up redundant separators
const messyPath = 'config//database///settings.json'
console.log(path.normalize(messyPath)) // config/database/settings.json

// Resolve relative segments
const relativePath = 'src/../config/./app.json'
console.log(path.normalize(relativePath)) // config/app.json

// Handle complex relative paths
const complexPath = 'assets/images/../styles/../scripts/main.js'
console.log(path.normalize(complexPath)) // assets/scripts/main.js

// Normalize absolute paths
const absolutePath = '/home/user/../shared/./documents'
console.log(path.normalize(absolutePath)) // /home/shared/documents

// Handle edge cases
console.log(path.normalize('')) // '.'
console.log(path.normalize('.')) // '.'
console.log(path.normalize('..')) // '..'
console.log(path.normalize('./')) // './'

The path.normalize() method processes paths by removing duplicate slashes, resolving . (current directory) and .. (parent directory) segments, and ensuring consistent separator usage. It preserves whether the path is relative or absolute. The method handles edge cases gracefully: empty strings become ., and paths that would go above the root return appropriate relative paths. Unlike path.resolve(), normalize doesn’t convert relative paths to absolute ones.

Best Practice Note:

In CoreUI projects, we use path.normalize() when processing file imports in build scripts, cleaning up user-provided configuration paths, and standardizing asset references. This prevents path-related bugs and ensures consistent behavior across different operating systems and deployment environments.


Speed up your responsive apps and websites with fully-featured, ready-to-use open-source admin panel templates—free to use and built for efficiency.


About the Author

Subscribe to our newsletter
Get early information about new products, product updates and blog posts.
How to sleep in Javascript
How to sleep in Javascript

How to Remove Underline from Link in CSS
How to Remove Underline from Link in CSS

How to conditionally add attributes to React components
How to conditionally add attributes to React components

How to Use Bootstrap Modal in Vue 3 – Clean Integration with CoreUI
How to Use Bootstrap Modal in Vue 3 – Clean Integration with CoreUI

Answers by CoreUI Core Team