- Home
- SDK
Put the daily puzzle on your site
The same puzzle that runs here every day, in eleven languages, as one script tag. The first word a visitor marks gets a short reading; then they can find the rest. It is free, needs no account or API key, and stores progress only in the visitor’s browser.
One-line embed
<script src="https://thefirstwordyousee.com/sdk/v1/first-word.js" async></script>
<first-word-puzzle locale="en"></first-word-puzzle>locale: en, es, pt, fr, de, tr, cn, zh, ja, ko or th. Each language has its own words in its own script.day: a date such as2026-11-02. Leave it out for today’s puzzle (days change at 00:00 UTC).- Events
first-word:foundandfirst-word:solvedbubble from the element, with the word inevent.detail. - Colours and size follow CSS custom properties:
--fw-ink,--fw-mark,--fw-bg,--fw-maxand more.
Build your own interface
The element is a thin layer over a small library. first-word-core.js has no DOM code: it schedules the day, builds the grid, keeps the game state and checks a finished solve, so it runs equally in a browser, in Node and in a Worker. first-word.js adds an accessible letter grid with drag, tap and keyboard selection.
import { scheduleDay, dailyBoard, createGame, mountBoard } from './first-word.js';
const board = dailyBoard(scheduleDay(day, themeIds), bank);
const game = createGame(board);
mountBoard(host, { board, onMark: (a, b) => game.mark(a, b) });Every board is deterministic: the same day and language give the same grid everywhere, which is what lets a server verify a solve for a leaderboard with verifySolution(board, runs).
How the daily puzzle is built
- Twenty-eight themes, such as “what you need today” or “your quiet superpower”, run in shuffled cycles. The theme is the same in every language on a given day.
- Each theme has fourteen words per language, written by native-speaking editors rather than translated, and each day hides eight to ten of them.
- English, Spanish, Portuguese, French, German and Turkish use a 10×10 letter grid. Chinese, Japanese, Korean and Thai use one character, syllable or cluster per cell on a smaller grid.
- Monday and Tuesday are easy (across and down), midweek adds diagonals, and weekends are hardest.
- Random filler never spells a second copy of a hidden word or anything on a language’s block list.
Terms
The SDK is free to use on any site. We ask that you keep the small link back to thefirstwordyousee.com that the element shows. To make a puzzle with your own words instead, use the puzzle maker and its embed code.