A complete, production-ready HTML5 word-guessing game built for commercial distribution. Zero external JavaScript dependencies. Runs on any modern browser straight from a static file host with no build step required.
Word·le challenges players to guess a secret word within a limited number of tries, with each guess revealing which letters are correct, present, or absent. The game features three difficulty tiers plus a seeded Daily Challenge, a separate 5/6/7-letter word-length selector, five selectable board themes, an XP progression system with seven rank tiers, nine achievements, a local best-times leaderboard, a Hard Mode, a Custom Word pass-and-play mode, a limited-use hint system, and a full sponsor/ad integration framework — all in a single self-contained HTML5 package.
index.html — no build step, no CLI tools, no package manager requiredscripts/js/game.jsscripts/js/words-data.jsscripts/css/style.css; sponsor/ad placeholder in scripts/sponsor/sponsor-placeholder.htmlconfig/ads.jsscripts/images/background.jpglocalStorage with graceful degradation when storage is unavailableYYYY * 10000 + MM * 100 + DD). Always uses 6 guesses regardless of the difficulty tier last selected. The card is marked visually as done once the player completes that day’s word, until the next calendar day.Word length is chosen separately from difficulty, on the same screen: 5 letters (“Classic Wordle”), 6 letters (“A bit tougher”), or 7 letters (“Expert challenge”). The selected word length applies to Easy/Medium/Hard, Daily, and Custom Word alike.
Words are drawn at random (or, for Daily, by date-seeded selection) from the built-in answer list for the chosen word length. There is no puzzle generator — the answer and valid-guess lists are pre-built word lists bundled in words-data.js.
Five board themes are selectable from the “Board · Style” screen. The active theme is saved to localStorage and restored on every visit. The default theme is Warm Paper.
The on-screen keyboard also recolors each key green, yellow, or gray as letters are guessed, so players can track which letters have already been tried.
An optional Hard Mode toggle is available in Settings. When enabled, any letter revealed as correct (green) in a previous guess must be placed in the same position in later guesses, and any letter found to be present (yellow) must be reused somewhere in later guesses. Guesses that don’t satisfy these constraints are rejected with an explanatory message.
Players can set their own secret word — matching the currently selected word length — from the Custom Word panel on the difficulty screen. The game validates that the entered word is exactly the right number of letters. A custom puzzle is always played with 6 guesses and 1 hint (Medium-difficulty rules), displays a “Custom” badge in the game header, and is not recorded on the leaderboard.
Players earn XP on each puzzle they solve. XP is a base amount per difficulty, plus a bonus for every unused guess remaining, a bonus for using zero hints, and a bonus for finishing under the par time. The seven rank tiers are:
The current rank and progress toward the next tier are shown as an XP bar in the lobby.
Nine achievements are tracked automatically and displayed as gold badges in the lobby once unlocked:
A local best-times leaderboard is accessible from the lobby. It stores the top results (default: 10 entries per difficulty, configurable) across Easy, Medium, and Hard tabs, ranked by fewest guesses used and then by fastest time. Each entry records time, guesses used, and date. The leaderboard can be cleared from the leaderboard screen. Daily Challenge and Custom Word results are not recorded on the leaderboard.
The lobby displays three at-a-glance stats: total puzzles Played, personal Best Time, and current win Streak.
All settings are accessible from the lobby settings button. There is no persistent localStorage save of settings between sessions — settings apply for the current session only.
The game ships with a fully integrated, configurable sponsor/ad system ready to connect to any ad network.
ads.preGame.countdown). The Skip button is disabled until the countdown reaches zero, then shows “Skip Ad →”scripts/sponsor/sponsor-placeholder.html. The file contains clearly marked AD REPLACEMENT START and AD REPLACEMENT END comment blocks showing exactly where to paste ad codeads.enabled or ads.preGame.enabled to false in config/ads.js. As shipped, config/ads.js sets ads.enabled: false, so the sponsor popup is off by default until switched onImportant: Ad network integrations such as Google AdSense, AdMob, and ironSource are third-party external services not affiliated with or included in this product. Each network operates independently and has its own account registration process, eligibility requirements, approval policies, and potentially associated costs. Wordle Puzzle provides the ad slot infrastructure only — buyers are solely responsible for obtaining their own accounts, meeting each network’s requirements, and complying with their respective terms of service.
Game behavior is controlled by a window.WORDLE_CONFIG object, which config/ads.js creates and adds its ad settings to. Add further keys to that same object (or your own script loaded before game.js) to customize other behavior. All values have built-in defaults so the game runs without any config. Configurable options include:
difficulty.easy.guesses, difficulty.medium.guesses, difficulty.hard.guesses, and matching .label / .desc keys)defaultTheme)showTimer)maxHints.easy, maxHints.medium, maxHints.hard, maxHints.daily)xp.easy, xp.medium, xp.hard, xp.spareGuessBonus, xp.noHintBonus, xp.speedBonus)parTime.easy, parTime.medium, parTime.hard)leaderboardMaxEntries)ads.enabled, ads.preGame.enabled, ads.preGame.countdown)particles.enabled, particles.count, particles.speed)confetti.enabled, confetti.count)index.htmlThis project relies on an external CDN for one resource. This dependency is third-party, hosted and operated outside of this project and outside of the seller’s control — its uptime, availability, and any future changes to its terms are the responsibility of the provider, not the seller.
fonts.googleapis.com via an @import in scripts/css/style.css, providing the Crimson Pro (400, 600) and DM Sans (300, 400, 500) font families.An active internet connection is required for the browser to reach this CDN and load these fonts. Without one, the game still runs normally — text simply falls back to the browser’s default system font. Buyers who need a fully offline build can download the font files, host them locally, and replace the @import line in style.css with local @font-face rules.
No other third-party or CDN-hosted libraries (such as Chart.js, jsPDF, three.js, or html2canvas) are used anywhere in this codebase.
localStorage, AudioContext, document.querySelector, Promise, Set, and Array.from)localStorage access is wrapped in try/catch for safe degradation in private browsing mode