Egyptian ID Validator (JavaScript / Node.js)
Egyptian ID Validator is a production-ready JavaScript module for validating and parsing Egyptian national ID numbers.
It enforces the official structural rules defined by the Egyptian Ministry of Interior, including a verified but undisclosed checksum mechanism.
ℹ️ This package is part of a broader multi-language validation system.
For other implementations (e.g., Python, Java), see the Egyptian-ID-Validator mother repository.
🔍 Features
- ✅ Format Validation – Ensures the ID is 14 digits and correctly structured.
- ✅ Checksum Validation – Verifies integrity using an official checksum method.
- ✅ Component Extraction – Parses the ID into:
- Year, Month, and Day of Birth
- Governorate Name and Code
- Gender (Male/Female)
📦 Installation
Install via npm:
npm install egyptian-id-validator
`
Requires Node.js ≥ 14
🚀 Quick Usage
import { validate } from "egyptian-id-validator";
const id = "29805150102054"; // Replace with your ID
const result = validate(id);
if (result) {
console.log("✅ Valid ID");
console.log(result); // { valid: true, year, month, day, governorate, gender }
} else {
console.log("❌ Invalid ID");
}
You can also use this in CommonJS projects:
const { validate } = require("egyptian-id-validator");
📁 Project Status
This package is stable and actively maintained. It is being used in production environments and adheres strictly to the official Egyptian national ID structure, including a private and verified checksum algorithm.
🔒 The checksum logic is intentionally obfuscated to comply with national data validation practices and prevent misuse.
🤝 Contributing
We welcome contributions to improve or extend this project.
🐞 Bug Reports
Please submit detailed reports via GitHub Issues, including:
- Clear title and description
- ID sample (if safe to share)
- Expected vs. actual result
💡 Feature Requests
Open an issue to suggest enhancements that support practical developer needs, especially around usability, edge cases, or new environments.
🧪 Code Contributions
- Fork this repository
- Create a branch:
git checkout -b feature/your-feature
- Make your changes with tests
- Run
npm test
and lint if needed - Commit and push:
git commit -m "Describe feature"
→git push origin feature/your-feature
- Open a Pull Request to
main
📄 License
This project is licensed under a custom MIT-based license with commercial use restrictions.
You may:
- Use the package in personal or commercial apps
- Modify and extend it with proper attribution
You may not:
- Resell, redistribute, or package this code as a core business product without explicit written permission
See LICENSE.md for full terms.