obscure-string
v1.0.7
Published
Mask the middle of strings with custom characters — perfect for hiding secrets, emails, or IDs.
Maintainers
Readme
🕶️ 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
# or
yarn add obscure-string🚀 Quick Start
const { obscureString } = require('obscure-string');
obscureString('mysecretkey');
// → 'mys*****key'
obscureString('[email protected]', {
prefixLength: 2,
suffixLength: 4,
maskChar: '#',
});
// → 'jo##############.com'⚙️ Options
| Option | Type | Default | Description |
| -------------- | -------- | ------- | ----------------------------------- |
| 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');
// → 'mys*****key'
obscureString('supersecretvalue', { prefixLength: 2, suffixLength: 2 });
// → 'su************ue'
obscureString('veryshort', { prefixLength: 5, suffixLength: 5 });
// → 'veryshort' (too short to mask)
obscureString(null);
// → '' (non-string input)
obscureString('1234567890', { prefixLength: 2, suffixLength: 2 });
// → '12******90'🔠 TypeScript Support
export function obscureString(
str: string,
options?: {
maskChar?: string;
prefixLength?: number;
suffixLength?: number;
}
): string;🧪 Running Tests
npm testUses Jest for unit testing. See __tests__/ for test cases.
🧹 Formatting
npm run formatUses 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
- [x] Base string masking
- [x] TypeScript support
- [x] Prettier formatting
- [x] Jest test suite
- [ ] CLI via
npx - [ ] GitHub Actions CI
- [ ] Optional string-type detectors (email, token, etc.)
- [ ] VSCode extension (stretch)
🧾 License
MIT © PDR
🌍 Related Packages
string-mask– pattern masking (more complex)redact-pii– automatic PII redactioncommon-tags– tag helpers for strings
Made with ❤️ to keep your secrets secret.
