# webtype.org > One TypeScript type puzzle every day, plus compiler-attested lessons, > reference pages, diagnostic explanations, and practical type recipes. Code > examples are checked against the same TypeScript compiler used in the browser. A puzzle asks you to fill in one type so that a set of assertions pass. Checks use exact type equality (`Equal`), not assignability — so an intersection of object types does not satisfy a check expecting the flattened object. Par is how many check-runs a competent solver should need; every run costs a stroke, as does revealing the hint. Content is all rights reserved. Quoting a short passage with a link is welcome; republishing the puzzles or write-ups is not. ## Core pages - [Today's puzzle](https://webtype.org/): the current daily, rotating at 00:00 UTC. - [Archive](https://webtype.org/archive): every past puzzle with its annotated solution. - [Practice](https://webtype.org/practice): random puzzles and filters by concept and difficulty. - [Twelve concepts](https://webtype.org/learn): the ordered climb from mapped types to recursive conditional types. - [Patterns](https://webtype.org/patterns): 20 task-shaped, compiled TypeScript recipes. - [Type reference](https://webtype.org/reference): 33 compiler-checked utilities, operators, and constructs. - [TypeScript errors](https://webtype.org/errors): 40 diagnostics with exact reproductions and compiling fixes. - [Type Lab](https://webtype.org/lab): a permalinkable browser checker for type-level experiments. - [About](https://webtype.org/about): how par works and why checks test exact equality. - [Contact](https://webtype.org/contact): admin@webtype.org. ## Worked examples - [#214 Route Params](https://webtype.org/puzzle/214): parsing `:param` segments with template literal types; why an intersection fails an exact-equality check. - [#216 Type-level Add](https://webtype.org/puzzle/216): arithmetic via tuple length and variadic spreads. - [#220 Rebuild Exclude](https://webtype.org/puzzle/220): distributive conditional types, and how `[T] extends [U]` switches distribution off. - [#230 Permutation](https://webtype.org/puzzle/230): `K extends K` to distribute, `[T] extends [never]` to detect the empty union. ## Languages English at the root. Polish under `/pl/`, Spanish under `/es/`. Every page declares hreflang alternates. ## Notes for machine readers - All content is present in the server-rendered HTML; no JavaScript is needed to read it. - The English search index is at `/search-index.json`; Polish and Spanish indexes live below their locale prefixes. - Structured data: Organization, WebSite, Game on the home page; TechArticle or Article plus BreadcrumbList on detail pages; ItemList on indexes. - All examples in the four learning pillars are verified during the build against TypeScript 6.0.3. - `/ts/` holds a vendored TypeScript compiler served to the browser worker. It is not content and is disallowed in robots.txt.