A Wordle clone with a devious twist - the game doesn't play fair! Unlike traditional Wordle where the answer is fixed from the start, Evil Wordle adversarially changes its target word after each guess to maximize your difficulty while remaining consistent with previous feedback.
In standard Wordle, the target word is chosen before you start guessing. Evil Wordle is different:
- You make a guess
- The game analyzes all possible valid words that would be consistent with the feedback given so far
- It chooses the word family that keeps the maximum number of words still in play
- Only when you're down to one possible word does the game "commit" to an answer
This means the game is actively working against you, making it significantly harder to win while still following all the rules of Wordle!
- Evil Mode Algorithm: Adversarial word selection that maximizes difficulty
- Classic Wordle Gameplay: Familiar 6-guess format with color-coded feedback
- Responsive Design: Built with Tailwind CSS for a clean, mobile-friendly interface
- React-Powered: Smooth, interactive gameplay experience
- GitHub Pages Hosting: Play directly in your browser
- Frontend: React 19
- Build Tool: Vite 7
- Styling: Tailwind CSS 4
- Hosting: GitHub Pages
- Language: JavaScript (ES Modules)
- Node.js 20.x (specified in
.nvmrc) - npm (comes with Node.js)
# Clone the repository
git clone https://github.com/karth2512/evil-wordle.git
cd evil-wordle
# Install dependencies
npm install
# Start the development server
npm run devThe game will open at http://localhost:5173 (Vite default port)
# Development
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build locally
# Code Quality
npm run lint # Check code for issues
npm run lint:fix # Auto-fix linting issues
npm run format # Format code with Prettier
npm run format:check # Check code formatting- Enter a 5-letter word and press Enter
- The tiles will flip to show how close your guess was:
- 🟩 Green: Letter is correct and in the right position
- 🟨 Yellow: Letter is in the word but wrong position
- ⬜ Gray: Letter is not in the word
- Use the feedback to make your next guess
- You have 6 attempts to guess the word
- Good luck - you'll need it against the evil algorithm! 😈
The core of Evil Wordle is the adversarial algorithm that maintains the largest possible set of valid answers:
- Initial State: Start with all valid 5-letter words
- After Each Guess:
- Generate feedback patterns for all remaining words
- Group words by their feedback pattern
- Choose the largest group (keeping maximum words in play)
- Return that group's feedback to the player
- Endgame: When only one word remains, that becomes the actual answer
This ensures you face the maximum difficulty while the game remains technically "fair" - it never lies about the feedback!
If you discover a security vulnerability, please see our Security Policy for responsible disclosure guidelines.
As a client-side application hosted on GitHub Pages:
- Custom security headers (CSP, HSTS) cannot be configured
- All game logic runs in the browser and can be inspected
- LocalStorage is used for game data (not synced or backed up)
When contributing:
# Security checks run automatically on commit via Husky
git commit -m "your changes"
# Manually run security audit
npm audit
# Check for outdated dependencies
npm outdatedThis project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
- Inspired by the original Wordle by Josh Wardle
- Evil algorithm concept based on Keith Schwarz's Evil Hangman
Created by @karth2512
Note: This is an unofficial fan project and is not affiliated with Wordle or The New York Times.