1. Home
  2. 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 as 2026-11-02. Leave it out for today’s puzzle (days change at 00:00 UTC).
  • Events first-word:found and first-word:solved bubble from the element, with the word in event.detail.
  • Colours and size follow CSS custom properties: --fw-ink, --fw-mark, --fw-bg, --fw-max and 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.