🕶️ obscure-string

A tiny utility to mask part of a string — perfect for hiding secrets, emails, API keys, and IDs. Fully customizable and zero dependencies.
✨ Features
- 🔐 Hide sensitive values in logs and UIs
- ⚙️ Customizable mask char, prefix, and suffix lengths
- 🪶 Zero dependencies (<1KB gzipped)
- 🧪 Fully tested with edge case handling
- 🧠 TypeScript definitions included
- 📦 Supports CommonJS, ESM, Node.js, bundlers
- 🖥️ CLI support coming soon
📦 Install
npm install obscure-string
yarn add obscure-string
🚀 Quick Start
const { obscureString } = require('obscure-string');
obscureString('mysecretkey');
obscureString('john.doe@example.com', {
prefixLength: 2,
suffixLength: 4,
maskChar: '#',
});
⚙️ Options
maskChar | string | * | Character used for masking |
prefixLength | number | 3 | Visible characters at the beginning |
suffixLength | number | 3 | Visible characters at the end |
If the input string is shorter than prefixLength + suffixLength, it's returned unchanged.
🧪 Examples
obscureString('mysecretkey');
obscureString('supersecretvalue', { prefixLength: 2, suffixLength: 2 });
obscureString('veryshort', { prefixLength: 5, suffixLength: 5 });
obscureString(null);
obscureString('1234567890', { prefixLength: 2, suffixLength: 2 });
🔠 TypeScript Support
export function obscureString(
str: string,
options?: {
maskChar?: string;
prefixLength?: number;
suffixLength?: number;
}
): string;
🧪 Running Tests
npm test
Uses Jest for unit testing. See __tests__/ for test cases.
🧹 Formatting
npm run format
Uses Prettier with .prettierrc config.
🖥️ CLI (Coming Soon)
A CLI version is planned:
npx obscure-string "my-secret-token" --prefix 2 --suffix 4 --char "#"
👥 Contributing
Contributions welcome!
- 🍴 Fork the repo
- 🛠 Create a feature branch
- ✅ Add tests and update docs
- 🚀 Open a pull request
✅ Roadmap
🧾 License
MIT © PDR
🌍 Related Packages
Made with ❤️ to keep your secrets secret.